Vue.use个人理解

首先在注册全局API或者全局组件的时候,需要在注册install方法(当然也可以不注册),接下来我们看一下为什么要使用这个方法, 接下来跟着我一起看一下Vue.use的源码

// 首先我们注册一下方法或者组件  
import table from "./src/index.vue";
table.install = function(Vue) { // 在这里注册了install方法
  Vue.component(table.name, table );
};
export default table;

// 然后需要在main.js里面注册table组件
import table from "@/src/index.vue";
import Vue from "vue";
Vue.use(table) // 是不是都是这样引入的,那接下来我们看一下use的内部构造
import { toArray } from '../util/index'

export function initUse (Vue: GlobalAPI) {
  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') { // 可以看到这一步 做了一个install的判断
      plugin.install.apply(plugin, args)
    } else if (typeof plugin === 'function') {
      plugin.apply(null, args)
    }
    installedPlugins.push(plugin)
    return this
  }
}

// 这是use用到的一个方法
export function toArray (list: any, start?: number): Array<any> {
  start = start || 0
  let i = list.length - start
  const ret: Array<any> = new Array(i)
  while (i--) {
    ret[i] = list[i + start]
  }
  return ret
}

明白了吗,installedPlugins 里面包含了use所有的引入,那我们消化一下,总结一下use方法的使用流程
首先在Vue实例生成的过程中,将会遍历Vue.use上挂载的所有组件或者包或者函数,然后将挂载的东西按顺序放到 installedPlugins 数组里面,所以 Vue生成的时候是靠 installedPlugins 数组进行的xx挂载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜笑·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值