1.0.1 • Published 3 years ago

drop-down-load v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Vue - 插件

一、定义

通常用来为Vue添加全局功能。功能范围一般有:

1、添加全局方法或者property。
2、添加全局资源:指令/过滤器/过渡 等。
3、通过全局混入来添加一些组件选项。
4、添加Vue实例方法,通过吧他们添加到 Vue.property 上实现。
5、一个库,提供自己的api,同时提供上面提到的一个活多个功能。

二、插件与组件的区别

组件是什么?

组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发模式,在Vue中每个以.vue结尾的文件都可视为一个组件。

组件优势:

1、降低整个系统的耦合度,在接口不变的情况下,我们可以替换不同的组件,快速完成需求
2、调试方便,由于整个系统是通过组件组合起来的,出现问题时,可以用排除法直接摘除组件,或根据报错组件快速定位(因为每个组件间耦合度低,职责单一)
3、提高可维护性(因为每个组件职责单一,并且组件在系统中可复用)

区别:

1、编写形式
   组件最常见的形式就是Vue单文件的格式
   插件则是暴露一个install方法。该方法第一个参数是Vue构造器,第二个参数是一个可选的选项对象
2、注册形式
   组件:全局和局部两种
        全局注册:Vue.component('组件名称', {配置项})
        局部注册:用到的文件里通过components属性注册
   插件:通过Vue.use()方式安装
        Vue.use(插件名字, {配置项})
        注册插件的时候,需要在调用new Vue()启动前完成
        Vue.use会自动阻止多次注册相同插件,只会注册一次
        
        使用场景:
          组件:用来构成你的APP的业务模块,目标是App.vue
          插件:用来增强你的技术伐的功能模块,目标是Vue本身
          即插件是对Vue的功能的增强或补充
         

三、代码

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

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

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

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

在入口文件中,暴露一个扩展方法,在 install 方法里添加插件内容
Vue.prototype.   ---  注册全局属性
Vue.prototype.$xxx = function () {} --- 注册全局方法