參考了vue-element-admin 指令庫的permissionvue
使用Demo(demo.vue)node
<template> <p>admin組:<span v-permission="['admin']">可看見v-permission="['admin']"</span></p> <p>editor:<span v-permission="['editor']">可看見v-permission="['editor']"</span></p> <p>admin editor組:<span v-permission="['admin','editor']">可看見v-permission="['admin','editor']"</span></p> <p>another組:<span v-permission="['another']">可看見v-permission="['another']"</span></p> </template>
v-permission指令代碼 註冊到全局(main.js)git
const permission={ inserted(el, binding, vnode) { const { value } = binding const roles = ['editor','admin'] if (value && value instanceof Array && value.length > 0) { const permissionRoles = value const hasPermission = roles.some(role => { return permissionRoles.includes(role) }) if (!hasPermission) { el.parentNode && el.parentNode.removeChild(el) } } else { throw new Error(`need roles! Like v-permission="['admin','editor']"`) } } } Vue.directive('permission', permission)
對比github
- v-show (v-show的dom不隱藏,改變display用戶能夠看到不應看的信息)dom
- v-if (v-if刪除節點遺留<!-- -->的註釋)spa
易維護,明瞭code