美文网首页Vue技术vuereact & vue & angular
Vue.use() 注册插件(个人笔记)

Vue.use() 注册插件(个人笔记)

作者: kevision | 来源:发表于2022-08-03 17:56 被阅读0次

Vue.use是什么?


官方对 Vue.use() 方法的说明:通过全局方法 Vue.use() 使用插件,Vue.use 会自动阻止多次注册相同插件,它需要在你调用 new Vue() 启动应用之前完成,Vue.use() 方法至少传入一个参数,该参数类型必须是 Object 或 Function,如果是 Object 那么这个 Object 需要定义一个 install 方法,如果是 Function 那么这个函数就被当做 install 方法。在 Vue.use() 执行时 install 会默认执行,当 install 执行时第一个参数就是 Vue,其他参数是 Vue.use() 执行时传入的其他参数。就是说使用它之后调用的是该组件的install 方法。

Vue.use() 的源码中的逻辑

export function initUse (Vue: GlobalAPI) {
 Vue.use = function (plugin: Function | Object) {
  const installedPlugins = (this._installedPlugins || (this._installedPlugins = []))
  if (installedPlugins.indexOf(plugin) > -1) {
   return this
  }
  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
 }
}

在源码中首先限制了它传入的值的类型只能是Function或者Object,然后判断了该插件是不是已经注册过,防止重复注册,然后调用了该插件的install方法,源码中也有介绍到Vue.use()可以接受多个参数的,除第一个参数之后的参数我们都是以参数的形式传入到当前组件中。

插件

插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制。
一般有下面几种:

  1. 添加全局方法或者 property。如:vue-custom-element
  2. 添加全局资源:指令/过滤器/过渡等。如 vue-touch
  3. 通过全局混入来添加一些组件选项。如 vue-router
  4. 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
  5. 一个库,提供自己的 API,同时提供上面提到的一个或多个功能。如 vue-router

使用插件

通过全局方法 Vue.use() 使用插件。它需要在你调用 new Vue() 启动应用之前完成:

Vue.use(MyPlugin) // 会调用 `MyPlugin.install(Vue)`

new Vue({
  // ...组件选项
})

也可以传入一个可选的选项对象:

Vue.use(MyPlugin, { someOption: true })

Vue.use 会自动阻止多次注册相同插件,届时即使多次调用也只会注册一次该插件。

开发插件


Vue.js 的插件应该暴露一个 install 方法。这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象:

MyPlugin.install = function (Vue, options) {
  // 1. 添加全局方法或 property
  Vue.myGlobalMethod = function () {
    // 逻辑...
  }

  // 2. 添加全局资源
  Vue.directive('my-directive', {
    bind (el, binding, vnode, oldVnode) {
      // 逻辑...
    }
    ...
  })

  // 3. 注入组件选项
  Vue.mixin({
    created: function () {
      // 逻辑...
    }
    ...
  })

  // 4. 添加实例方法
  Vue.prototype.$myMethod = function (methodOptions) {
    // 逻辑...
  }
}

参考文章:https://www.jianshu.com/p/0b8b6f2e5a82
https://cn.vuejs.org/v2/guide/plugins.html

相关文章

  • Vue.use() 注册插件(个人笔记)

    Vue.use是什么? 官方对 Vue.use() 方法的说明:通过全局方法 Vue.use() 使用插件,Vue...

  • 为什么axios、echart不需要Vue.use()

    因为 axios、echart 没有 install方法 Vue.use()先判断是否注册过这个插件,然后看插件中...

  • Vue.use 源码分析

    文章首次发表在 个人博客 vue提供了 Vue.use 的全局api来注册插件,了解它的内部实现,无论是看插件的源...

  • Vue.use注册插件

    安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 in...

  • Vue.use注册插件

    在搞清楚如何用Vue.use注册插件之前,首先需要理清楚一个问题,就是插件和组件的区别。组件比较简单,比如弹框组件...

  • Vue.use()在new Vue() 之前使用的原因浅析

    先看Vue.use做了什么 do: 检查插件是否已经注册,相同的插件只注册一次 将Vue构造函数作为第一个参数,作...

  • 为什么axios、echart不需要Vue.use()

    定义 通过全局方法Vue.use()使用插件,也可以理解成注册插件,它需要在你调用new Vue()启动应用之前完...

  • Vue.use怎么用

    1. 首先vue.use用来注册插件 2.这个插件必须是一个对象 3.步骤是先定义插件,再use,在new 在us...

  • Vue Router 源码模拟实现

    Vue Router实现原理 导入模块 注册插件(Vue.use传入函数时直接调用,传入对象时调用对象instal...

  • vue全局API和使用方法

    Vue.use(plugins) 注册一个插件 例子: Vue.directive()创建或者获取自定义指令 一个...

网友评论

    本文标题:Vue.use() 注册插件(个人笔记)

    本文链接:https://www.haomeiwen.com/subject/njcewrtx.html