vue的use插件及权限使用

\color{black}{1、先说说vue的use、prototype区别}

    Vue为什么要弄两个注册插件的方式?他们各自有什么优点和联系?先说结论,
Vue.use和Vue.prototype没有本质区别,Vue.use就是在Vue.prototype基础上又封装了
一层而已,他们实现的原理都是在Vue.prototype上添加了一个方法,Vue.prototype适
合于注册Vue生态外的插件,Vue.use适合于注册Vue生态内的插件,use必须实现install方法。

\color{black}{2、vue.prototype具体使用}

  1. 拿一个自定义的权限插件来说明,先在main.js里面应用插件
import directive from './directive' 
Vue.use(directive)   
  1. 在directive里面执行install方法,并调用自定义函数
const install = function(Vue) {
  Vue.directive('hasPermi', hasPermi)
}

if (window.Vue) {
  window['hasPermi'] = hasPermi
  Vue.use(install); // eslint-disable-line
}


export default install
  1. 自定义v-hasPermi 函数
/**
 * v-hasPermi 操作权限处理
 *
 */
 
import store from '@/store'

export default {
  // directive里面我们常用这三种
  //bind--只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。和style有关的操作,最好在bind中去执行
  //inserted--(被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。和JS行为有关的操作,最好在 inserted 中去执行,否者 JS行为不生效
  //update--当VNode更新的时候,会执行 updated, 可能会触发多次

  inserted(el, binding, vnode) {
    const { value } = binding
    const all_permission = "*:*:*";
    const permissions = store.getters && store.getters.permissions

    if (value && value instanceof Array && value.length > 0) {
      const permissionFlag = value

      const hasPermissions = permissions.some(permission => {
        return all_permission === permission || permissionFlag.includes(permission)
      })

      if (!hasPermissions) {
        el.parentNode && el.parentNode.removeChild(el)
      }
    } else {
      throw new Error(`请设置操作权限标签值`)
    }
  }
}
  1. 调用
        <el-button
          icon="el-icon-plus"
          size="mini"
          v-hasPermi="['XXX:XXX:XXX']"
        >新增</el-button>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容