在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前言: 我们在使用Vue的时候,经常会使用并写一些自定义的插件,然后利用 看完这篇文章,你将学到:
好啦,闲话不多说,咱们直接开始!!! 一、install在Vuex&Vue-Router中的处理这里先抛出两个问题,大家可以思考下,算是挖坑,下面再逐一解答:
二者其实原理相同,这里我们用 class Router { constructor(options) { ... } } Router.install = function(_Vue) { _Vue.mixin({ beforeCreate() { if (this.$options.router) { _Vue.prototype.$router = this.$options.router } } }) } export default Router;
既然如此,我们大胆的做一个判断。 安啦,这咱们才刚刚解决了第一个问题,下面咱们来填第二个坑。 咱们平时使用 // router/index.js import VueRouter form 'vue-router'; import Vue from 'vue'; Vue.use(VueRouter); const _router = [ ... ] const Router = new VueRouter(_router); export default Router; // main.js import Vue from 'vue'; import router from 'router'; new Vue({ router, ... }).$mount('#app'); 结合最开始的例子,我们先来分析一波。
叮!!!要素察觉,那我们来大胆推测一波。 二、install在Vue中的内部实现看完了常用库 export function initUse (Vue: GlobalAPI) { // 注册一个挂载在实例上的use方法 Vue.use = function (plugin: Function | Object) { // 初始化当前插件的数组 const installedPlugins = (this._installedPlugins || (this._installedPlugins = [])) // 如果这个插件已经被注册过了,那就不作处理 if (installedPlugins.indexOf(plugin) > -1) { return this } ... // 重点来了哦!!! if (typeof plugin.install === 'function') { // 当插件中install是一个函数的时候,调用install方法,指向插件,并把一众参数传入 plugin.install.apply(plugin, args) } else if (typeof plugin === 'function') { // 当插件本身就是一个函数的时候,把它当做install方法,指向插件,并把一众参数传入 plugin.apply(null, args) } // 将插件放入插件数组中 installedPlugins.push(plugin) return this } } 源码这部分写的很简洁,可读性很高。就是在use的时候,判断插件类型,执行 结语: 不知道大家对于Vue的插件机制有没有更深入的了解呢?其实开发插件的时候利用 到此这篇关于深入理解Vue的插件机制与 |
请发表评论