开发插件
Vue.js 的插件应该
暴露一个 install 方法
。这个方法的第一个参数
是Vue 构造器
,第二个参数是一个可选的选项对象:
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) {
// 逻辑...
}
}
暴露install方法
export default {
install(Vue) {
const ctxRequire = require.context('@/components/common', false, /\.vue$/)
debugger
console.log('ctxRequire:', ctxRequire)
// console.log('ctxRequire.resolve():', ctxRequire.resolve())
console.log('ctxRequire.keys:', ctxRequire.keys())
console.log('ctxRequire.id:', ctxRequire.id)
ctxRequire.keys().forEach((filePath) => {
const fileName = filePath.replace(/(.*\/)*([^.]+).vue$/ig, '$2') // 获取Vue组件文件名
// "./breadcrumb.vue".replace(/(.*\/)*([^.]+).vue$/ig, '$2') 返回breadcrumb
Vue.component(fileName, ctxRequire(filePath).default || ctxRequire(filePath))
})
}
}
全局引用及使用
src\main.js
import plugins from './plugins' // plugins
Vue.use(plugins)