1.前言介绍了什么是Vue指令以及在《从头再学 Vue 的指令》中如何实现自定义指令。接下来我们使用自定义指令来解决开发过程中的一个实际需求:按钮权限管理。2.分析在管理系统中,不可避免地要有一个权限管理模块。权限的划分可大可小。对于前端页面,较大的权限如菜单权限,较小的如按钮权限。对于菜单权限,我们可以处理后台返回的菜单数据。后台处理时,只返回当前用户有权限的菜单数据给前台,前台根据数据渲染菜单。对于按钮权限,在SpringMVC+Freemarker中,我们可以在返回View时直接将当前用户拥有的按钮代码设置到model中,在Freemarker中控制是否渲染按钮。在前后端不分离的情况下,处理按钮权限的过程比较简单。在如今流行的前后端分离架构中,视图的渲染不再由SpringMVC中的视图来控制,而是由前端单页应用来管理。前后端通过http协议以json格式交换数据。此时需要在前端控制按钮权限的需求。3、实现前后端分离架构下的按钮权限控制,一个简单的实现思路是:在加载单页应用时,将当前用户拥有的按钮权限加载到前端一次并缓存。切换页面时,每个页面独立处理本页面按钮的显示和隐藏。如果把处理逻辑写在每个页面上,可能会有很多重复性的工作。我们可以将处理逻辑封装成自定义指令,在需要权限管理的按钮上添加自定义指令和按钮对应的唯一代码。自定义指令//注册一个全局自定义指令`v-auth`Vue.directive('auth',{//当绑定元素插入到DOM中时...inserted:(el,binding,vnode)=>{constvalue=binding.value;constauths=localStorage.getItem('BTN_AUTHS')||'';if(!auths.split(',').includes(value)){el.parentNode!.removeChild(el);}}});使用命令:
