Vue 2.0学习笔记:如何创建Vue插件

栏目: JavaScript · 发布时间: 5年前

内容简介:Vue插件是向应用程序添加全局特性的一种强大而又简单的方法。它有多种用途,从分发应用程序范围的组件到向应用程序添加路由和不可变数据存储等附加功能。从概念上讲,Vue插件是非常简单。它实际上只是一个带有插件通常会为Vue添加全局功能。插件的范围没有限制,一般有以下几种:Vue的插件有一个公开方法

Vue插件是向应用程序添加全局特性的一种强大而又简单的方法。它有多种用途,从分发应用程序范围的组件到向应用程序添加路由和不可变数据存储等附加功能。从概念上讲,Vue插件是非常简单。它实际上只是一个带有 install 函数的对象,它接受两个参数: 全局的 Vue 对象 一个包含用户定义选项的对象 。然而,一个像这样简单的Vue插件仍然可以得到相当大的效果。

Vue插件使用范围

插件通常会为Vue添加全局功能。插件的范围没有限制,一般有以下几种:

  • 添加全局方法或者属性,如 vue-custom-element
  • 添加全局资源:指令、过滤器、过渡等,如 vue-touch
  • 通过全局 mixins 方法添加一些组件选项,如 vue-router
  • 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现
  • 一个库,提供自己的API,同时提供上面提到的一个或多个功能,如 vue-router

开发插件

Vue的插件有一个公开方法 install 。这个方法有两个参数,第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象。比如:

export default {
    install(Vue, options) {
        // 1. 添加全局方法或属性
        Vue.myGlobalMethods = function () {
            console.log(`添加全局方法或属性`)
        }

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

        // 3. 注入组件
        Vue.mixin({
            created () {
                console.log(`注入组件`)
            }
        })

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

接下来,咱们简单的一一介绍一下。

为了更好的向大家演示,先在 src 目录下创建一个新的目录 plugins ,并且在这个目录下创建一个 my-plugins.js 文件。

添加全局方法或属性

// /src/plugins/my-plugins.js
export default {
    install (Vue, options) {
        Vue.$data = {
            firstName: '大漠',
            lastName: 'W3cplus'
        }
        console.log(`${Vue.$data.firstName}_${Vue.$data.lastName}`)
    }
}

install 方法中,我们直接在 Vue 实例上声明了 $data 属性,并进行了赋值。当该插件注册后,只要存在Vue实例的地方你都可以获取到 Vue.$data 的值,比如我们上面的示例,输出 Vue.$data 中的 firstNamelastName

console.log(`${Vue.$data.firstName}_${Vue.$data.lastName}`)

输出的结果如下:

Vue 2.0学习笔记:如何创建Vue插件

能输出该值,那是因为其值直接绑定在 Vue 实例上。

添加全局资源

// /src/plugins/my-plugins.js

export default {
    install (Vue, options) {
        Vue.$data = {
            firstName: '大漠',
            lastName: 'W3cplus'
        }
        console.log(`${Vue.$data.firstName}_${Vue.$data.lastName}`)

        Vue.directive('hello', { 
            // 只调用一次,指令第一次绑定到元素时调用 
            bind: function (el) { 
                console.log('触发bind钩子函数!') 
            }, 
            // 被绑定元素插入父节点时调用 
            inserted: function (el) { 
                console.log('触发inserted钩子函数!') 
            }, 
            // 所在组件的`VNode`更新时调用,但是可能发生在其子元素的`VNode`更新之前 
            update: function (el) { 
                console.log('触发update钩子函数!') 
            }, 
            // 所在组件的`VNode`及其子元素的`VNode`全部更新时调用 
            componentUpdated: function (el) { 
                console.log('触发componentUpdated钩子函数!') 
            }, 
            // 只调用一次,指令与元素解绑时调用 
            unbind: function (el) { 
                console.log('触发unbind钩子函数!') 
            } 
        })
    }
}

添加全局资源包含了添加全局指令,过滤器、过渡等。上面的示例,通过 Vue.directive()


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

顾客要买什么

顾客要买什么

[美]迈克尔·西尔 / 方海萍 / 中国人民大学出版社 / 2006-10 / 38.00元

《顾客要买什么》告诉我们全球的中产阶级如何正在改造着消费品市场:对低价的产品和服务进行趋低消费,对于高端的产品和服务要趋优消费,而对于日趋乏味、价值降低的中档商品则避而远之。这些消费者大多是女性,教育程度高,可支配收入多,买东西的时候也更会精打细算。她们选购、使用商品和服务的时候都是有目的的,有一种大权在握的感觉。消费对她们来说并不是非做不可的麻烦事,也不是什么无法避免的琐事,而是如何明智地花钱的......一起来看看 《顾客要买什么》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具