# Vue.use

vue.use的原理就是你在插件上定义好install方法,当你把插件传入vue.use时,就会调用你在插件上定义的install方法,

例如:

MyComponent.install = (name) => {
  Vue.component('MyComponent', {})
}
1
2
3

src/core/global-api/use.js

  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)
    // 调用我们插件的install方法,第一个参数是Vue,剩余的参数我们传入use的第一参数后边的参数
    if (typeof plugin.install === 'function') {
      plugin.install.apply(plugin, args)
    } else if (typeof plugin === 'function') {
      plugin.apply(null, args)
    }
    // 最终我们插件都会存储在这个队列里
    installedPlugins.push(plugin)
    return this
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19