zoukankan      html  css  js  c++  java
  • vue2.x学习笔记(二十四)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12663909.html

    插件

    插件通常是用来为vue添加全局功能的。

    插件的功能范围

    插件的功能范围没有严格的限制,一般有以下几种:

    1.添加全局方法或属性。比如vue-custom-element。

    2.添加全局资源:指令/过滤器/过渡等。比如vue-touch。

    3.通过全局混入来添加一些组件选项,比如vue-router。

    4.添加vue实例方法,通过把它们添加到Vue.prototype上来实现。

    5.一个库,提供自己的api,同时提供上面提到的一个或多个功能。比如vue-router。

    插件的使用

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

    // 调用MyPlugin.install(Vue)
    Vue.use(MyPlugin)
    
    new Vue({
      // ...组件选项
    })

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

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

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

    虽然vue官方提供的一些插件(例如vue-router)在检测到vue是可访问的全局变量时,就会自动调用【Vue.use()】。然而在像CommonJS这样的模块环境中,你应该始终显式地调用【Vue.use】。

    // 用Browserify或webpack提供的CommonJS模块环境时
    var Vue = require('vue')
    var VueRouter = require('vue-router')
    
    // 不要忘了调用此方法
    Vue.use(VueRouter)

    插件的开发

    vue的插件开发应该暴露一个【install】方法,这个方法的第一个参数是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) {
        // 逻辑...
      }
    }

    从上面的代码很容易知道,vue中插件的机制就是通过对函数中的传入的第一参数(Vue)进行拓展,然后通过函数作为整体输出的途径,以达到封装的效果。

    "我还是很喜欢你,像萋萋野草生故里,荒芜四季。"

  • 相关阅读:
    61. 最长不含重复字符的子字符串
    60. 礼物的最大价值 (未理解)
    59. 把数字翻译成字符串
    58. 把数组排成最小的数
    57. 数字序列中某一位的数字 (不懂)
    spring data jpa 官方文档
    idea 编译报错 源发行版 1.8 需要目标发行版 1.8
    idea maven 依赖报错 invalid classes root
    solr
    spring boot 官方文档
  • 原文地址:https://www.cnblogs.com/yanggb/p/12677019.html
Copyright © 2011-2022 走看看