directives类型:Objectvue3中自定义directives的方法组件中使用directivesexportdefault{data(){return{};},directives:{'local-test':function(el,binding,vnode){/**el可以获取当前的dom节点,进行编译,还可以操作事件**//**binding是指一个对象,一般不用**//**vnode是vue编译生成的虚拟节点**/el.style.border="1pxsolidred";//操作style的所有styleconsole.log(el.value);//获取v-model的值console.log(el.dataset.name)//data-name绑定值,需要el.dataset才能获取console.log(vnode.context.$route);//获取当前路由信息}},components:{},filters:{},}全局应用自定义指令的钩子函数的参数el:指令绑定的元素,可用于直接操作DOM.binding:包含以下属性的对象:name:指令的名称,不包括v-前缀。value:指令的绑定值,例如:在v-my-directive="1+1"中,绑定值为2。oldValue:指令绑定的前一个值,仅在update和componentUpdated钩子中可用。无论值是否已更改均可用。expression:字符串形式的指令表达式。例如v-my-directive="1+1",表达式为1+1。arg:传递给命令的参数,可选。例如,在v-my-directive:foo中,参数是“foo”。修饰符:包含修饰符的对象。例如,在v-my-directive.foo.bar中,修饰符对象是{foo:true,bar:true}。vnode:Vue编译生成的虚拟节点。oldVnode:最后一个虚拟节点,仅在update和componentUpdated钩子中可用。自定义指令可以全局应用。编写一个v-has-permissions指令来控制按钮的显示。添加用户//haspermissions.js,此文件需要导入main.js才能使用importVuefromglobal'vue'importstoragefrom'@/js/helper/storage';Vue.directive('has-permissions',function(el,binding,vnode){letpermissions=binding.valueconstcurrentUserPerms=storage.get('GAUSS').split(',');if(permissions){letisShow=permissions.every(item=>{returncurrentUserPerms.includes(item)})if(!isShow){el&&el.parentElement&&el.parentElement.removeChild(el)}}})通过权限控件的显示button,下面这个通过路由配置权限的例子并不合适,只是作为一个思路来传达//router.js通过meta中的权限配置页面需要权限{path:"/user-manage",name:“userManage”,组件:布局,重定向:{名称:“UserManage”},元:{标题:“XXX管理”,publicPage:true},孩子:[{路径:“/”,名称:“UserManage”,元:{标题:“用户管理”,childMenu:'databaseMenu',publicPage:true,权限:['admin','user_edit']},组件:()=>import("@/view/user/index.vue")},]}在组件中配置一条v-has指令添加用户