使用插件
全局方法
// 调用 new Vue() 启动应用之前完成 Vue.use(MyPlugin) new Vue({ // ...组件选项 })
//传参 Vue.use(MyPlugin, { someOption: true })
开发插件
Vue.js 的插件应该暴露一个 install
方法。
这个方法的第一个参数是 Vue
构造器,第二个参数是一个可选的选项对象:
MyPlugin.install = function (Vue, options) {}
1. 添加全局属性和方法
Vue.myGlobalMethod = function () { // 逻辑... }
在外面通过Vue实例调用,如
Vue.myGlobalMethod()
2. 添加 Vue 实例方法,通过把它们添加到 Vue.prototype
上实现
Vue.prototype.$myMethod = function (methodOptions) { // 逻辑... }
在组件里调用, 如
this.$myMethod()
3. 通过全局混入来添加一些组件选项
Vue.mixin({ created: function () { // 逻辑... } ... })
混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。
一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。
混入对象的钩子在组件自身钩子之前调用
// 定义一个混入对象 var myMixin = { data: function () { return { message: 'hello', foo: 'abc' } }, created: function () { this.hello() }, methods: { hello: function () { console.log('hello from mixin!') } } } // 使用混入 new Vue({ mixins: [myMixin] })
4. 添加全局资源:指令/过滤器/过渡等
Vue.directive('my-directive', { bind (el, binding, vnode, oldVnode) { // 逻辑... } ... })
自定义指令
// 注册一个全局自定义指令 `v-focus` Vue.directive('focus', { // 当被绑定的元素插入到 DOM 中时…… inserted: function (el) { // 聚焦元素 el.focus() } }) //组件内定义 directives: { focus: {} }
然后你可以在模板中任何元素上使用新的 v-focus
属性,如下:
<input v-focus="" />
过滤器
全局定义过滤器
Vue.filter('capitalize', function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) })
组件内定义
filters: { capitalize: function (value) { } }
使用场景
{{ message | capitalize }}使用配置文件,按需加载
*.config.js:vant的按需加载配置
import { Toast, Button} from 'vant' const components = { Toast, Button} const componentsHandler = { install(Vue){ Object.keys(components).forEach(key => Vue.use(components[key])) } } export default componentsHandler按需加载的常用插件
babel-plugin-import:按需加载
参考: