类装饰器–应用于类构造函数,其参数是类的构造函数
@Component就是个类装饰器,作用于Vue对象
vue-class-component 中,入口代码是
function Component(options) {
if (typeof options === 'function') {
return componentFactory(options);
}
return function (Component) { //vue对象,类装饰器返回
return componentFactory(Component, options);
};}
主要是 componentFactory方法,该方法做了以下事情:
- 遍历形参,即Vue组件的Component
- 根据变量Component,生成组件的配置变量options
- 通过Vue.extend方法和配置变量options生成Vue的子类,并且返回该类
自定义 类装饰器
function TimedTask (options) {
return function (VueComponent) {
injectDecoratorsToVue(VueComponent, options => {
(options.mixins || (options.mixins = [])).push(Vue.extend({
created () {},
mounted () {},
activated () {},
methods: {}
})
} )
return VueComponent;
}
}
//把装饰器注入到vue里面去
fu