1.Vue.use()
vue.use()往全局注入一个插件,供全局真接使用, 不需要单独引用
官网给出的解释是: 通过全局方法 Vue.use() 使用插件;我觉得把使用理解成注册更合适一些
基本使用
import Router from 'vue-router'
Vue.use(Router)
import Vuex from 'vuex'
Vue.use(Vuex)
但是为什么Vue.use()就可以注入插件呢?请看下文
2.install()
2.1Vue.user()源码解读:
Vue.use = function (plugin: Function | Object) {
const installedPlugins = (this._installedPlugins || (this._installedPlugins = []))
if (installedPlugins.indexOf(plugin) > -1) {
return this
}
// additional parameters
const args = toArray(arguments, 1)
args.unshift(this)
if (typeof plugin.install === ‘function’) {
plugin.install.apply(plugin, args)
} else if (typeof plugin === ‘function’) {
plugin.apply(null, args)
}
installedPlugins.push(plugin)
return this
}
vue.use()为注册全局插件所用,接收函数或者一个包含install属性的对象为参数,如果参数带有install就执行install, 如果没有就直接将参数当install执行, 第一个参数始终为vue对象, 注册过的插件不会重新注册
2.2Vue.user()使用:
import {
initUtil
} from './util.js'
import {
initError
} from './error.js'
import {
initRequest
} from './request.js'
import {
initPermission
} from './permission.js'
import {
initInterceptor
} from './interceptor.js'
export default {
install(Vue) {
initUtil(Vue)
initError(Vue)
initRequest(Vue)
initPermission(Vue)
initInterceptor()
}
}
main.js中的使用
import plugin from './js_sdk/uni-admin/plugin'
Vue.use(plugin)
Vue.use() 的注册本质上就是执行了一个 install 方法,install 里的内容由开发者自己定义,通俗讲就是一个钩子可能更贴近语义化而已。
只要在在抛出的js文件里规定了install方法,就可以向其他ui组件库那样,使用Vue.use()来全局使用
在 install 里我们可以拿到 Vue 那么和 Vue 相关的周边工作都可以考虑放在 Vue.use() 方法里,比如:
directive注册
mixin注册
filters注册
components注册
prototype挂载