一见如故

  • vue插件就是一个install方法,或者有install方法的对象,在组件实例化或者挂载之前use()就行了
  • install方法的第一个参数就是app或者Vue,所以可以加一些全局的东西
  • 作用:加全局组件、指令,全局方法等

示例代码

// install.js
export default obj = {
    install (app, options) {
    	app.component('xx', xx)
    }
}

// main.js
import obj from '...'
createApp(App).use(obj).mount('#app')

vue2 use源码

Vue.use = function (plugin) {
  var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
  // 防止重复注册插件
  if (installedPlugins.indexOf(plugin) > -1) {
    return this
  }
  var args = toArray(arguments, 1);
  // 这里的this是Vue构造函数,把它放在参数的第一个位置,这就是install第一个参数是Vue的原因
  args.unshift(this);
  //如果插件中有install方法就执行插件的install方法
  if (typeof plugin.install === 'function') {
    plugin.install.apply(plugin, args);
  // 如果插件是一个方法,就直接执行这个方法
  } else if (typeof plugin === 'function') {
    plugin.apply(null, args);
  }
  installedPlugins.push(plugin);
  return this
};
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐