运行时插件

@wxa/core提供了一套运行时的插件机制,用以添加、拦截、改写页面/组件实例。

通过插件,我们可以对所有符合wxa规范的实例进行处理。你可以使用插件编写自己的全局函数,给每个实例插入自己的业务方法。

wxa规范

即导出默认实例类或对象,或者通过wxa.launchAppwxa.launchPagewxa.launchComponent手动注册的所有实例。

编写

一个插件即一个js的高级函数,他接收一组插件配置,并返回一个包裹着插件逻辑的函数,wxa生成实例的时候会自动应用每个注册的插件。一个简单的插件如下:

  1. // wa是一个日志上报脚本
  2. import wa from 'wa'
  3. export default (options)=>{
  4. // vm是当前实例,type为实例类型
  5. return (vm, type)=>{
  6. // 在页面和App实例中注入logger方法
  7. // 这样子我们就可以直接通过`this.logger.errorReport`上报错误了
  8. if(['App', 'Page'].indexOf(type) > -1){
  9. vm.logger = wa;
  10. }
  11. }
  12. }

插件函数将接收到实例化完成的组件实例vm,以及当前组件是属于什么类型,目前总有三种类型:AppPageComponent

应用

应用一个插件非常简单,我们只需要在app.js或者app.wxa中声明即可:

  1. // app.js app.wxa
  2. import logger from 'path/to/your/plugin'
  3. // 调用use方法注册组件
  4. wxa.use(logger, {});
  5. export default class App{};

至此,一个简单的运行时插件就完成。

提示

插件将拿到当前实例vm, 以及实例的类型AppPageComponent