- 作者:老汪软件技巧
- 发表时间:2024-12-16 15:03
- 浏览量:
vue中一个组件是一个.vue文件,里面包含了一些列的相关逻辑。
那么一个插件是什么呢?
插件通常用来为vue 添加全局功能。, 插件的功能范围没有严格的限制,通常有以下几种:
添加全局的方法或属性:如Vue.myGlobalMethod=function(){...}添加全局资源:如Vue.directive('focus',{...})通过全局混入mixin来添加一些组件选项: 如 Vue.mixin({})添加Vue实例方法,通过把它们添加到原型上实现:如Vue.prototype.$xxx=...
插件(Plugin)是用来增强你的技术栈的功能模块
编写插件:
vue的插件实现原理:
1. 暴露一个install方法(vue构造器,可选的选项对象)
updateDialogPlugin.install = (Vue) =>{
// Vue.component注册一个组件,全局注册
Vue.component('update-dialog', Vue.extend(updateDialog));
Vue.component('updateDialog', Vue.extend(updateDialog));
//添加vue实例方法
Vue.prototype.$updateDialog = updateDialogPlugin;
}
2.插件注册:
vue.use()方法接收一个【插件对象 || 一个包含install方法的对象】作为参数。
Vue.js 会调用这个插件的install方法(如果插件对象有的话),
并将 Vue 作为参数 传递给这个方法。
此外,vue.use()还可以接收额外的可选参数,这些参数会被传递给install方法。
import updateDialogPlugin from './plugin/dialog';
Vue.use(updateDialogPlugin);
3.插件使用:
this.$updateDialog(...)
注册组件:
编写插件的几种方式:
MyPlugin.install = function (Vue, options) {
// 1. 添加全局方法或 property
Vue.myGlobalMethod = function () {
// 逻辑...
}
// 2. 添加全局资源
Vue.directive('my-directive', {
bind (el, binding, vnode, oldVnode) {
// 逻辑...
}
...
})
// 3. 注入组件选项
Vue.mixin({
created: function () {
// 逻辑...
}
...
})
// 4. 添加实例方法
Vue.prototype.$myMethod = function (methodOptions) {
// 逻辑...
}
}
总结:
组件和插件是不同的,在编写方式,使用场景和注册形式上都不同 。插件主要是一个功能模块, 为了扩展功能的。之前提到的mixin混入,和自定义指令等都是为了扩展功能,提高复用性的。实际业务中,公共弹窗就可以开发成一个插件。