Vue 插件(plugin)
插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制,一般有下面几种:添加全局方法或者 property。如:vue-custom-element添加全局资源:指令/过滤器/过渡等。如vue-touch通过全局混入来添加一些组件选项。如vue-router添加 Vue 实例方法,通过把它们添加到Vue.prototype上实现。一个库,提供自己的 API,同时提供上面提到的一个或多个
插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制,一般有下面几种:
-
添加全局方法或者 property。如:vue-custom-element
-
添加全局资源:指令/过滤器/过渡等。如 vue-touch
-
通过全局混入来添加一些组件选项。如 vue-router
-
添加 Vue 实例方法,通过把它们添加到
Vue.prototype
上实现。 -
一个库,提供自己的 API,同时提供上面提到的一个或多个功能。如 vue-router
一、开发插件:
vue官网是这样描述的:Vue.js 的插件应该暴露一个 install
方法。这个方法的第一个参数是 Vue
构造器,第二个参数是一个可选的选项对象:
对照官网的列子,我们做一个权限验证的插件Plugin
const AuthorityPlugin = {
install(Vue){
/* 添加全局方法或 property */
Vue.globalMethod = function () {
// 逻辑...
}
/* 添加全局资源 */
Vue.directive('my-authority', {
bind (el, binding, vnode, oldVnode) {
// 逻辑...
}
...
})
/ * 注入组件选项*/
Vue.mixin({
/*可以插入vue完成的生命周期,方法等*/
beforeCreate() {
todoSomething...
},
methods:{
todoFun(){
......
}
}
})
}
}
二、使用插件
/Plugins/index.ts
import AuthorityPlugin from './authority-plugin'
const Plugins = {
install: function (Vue) {
Vue.use(AuthorityPlugin)
}
}
export default Plugins
/main.js
import Plugins from '@/plugins'
Vue.use(Plugins )
PS:
指令钩子函数会被传入以下参数:
el
:指令所绑定的元素,可以用来直接操作 DOM。binding
:一个对象,包含以下 property:name
:指令名,不包括v-
前缀。value
:指令的绑定值,例如:v-my-directive="1 + 1"
中,绑定值为2
。oldValue
:指令绑定的前一个值,仅在update
和componentUpdated
钩子中可用。无论值是否改变都可用。expression
:字符串形式的指令表达式。例如v-my-directive="1 + 1"
中,表达式为"1 + 1"
。arg
:传给指令的参数,可选。例如v-my-directive:foo
中,参数为"foo"
。modifiers
:一个包含修饰符的对象。例如:v-my-directive.foo.bar
中,修饰符对象为{ foo: true, bar: true }
。
vnode
:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。oldVnode
:上一个虚拟节点,仅在update
和componentUpdated
钩子中可用。
除了 el
之外,其它参数都应该是只读的,切勿进行修改。如果需要在钩子之间共享数据,建议通过元素的 dataset来进行。
更多推荐
所有评论(0)