比如设计一个 v-auth="'admin'" 这个指令去控制一个组件的展示, 如果里面的逻辑就是,如果不包含admin的权限,就删掉这个组件的dom.
这种方式的弊端就是: 如果没有权限,但是其实这个组件的整个生命周期其实都是全部经历了一遍的。 意思就是这种方式已经消耗了资源去加载资源,有发请求的的已经都发了,只不过最后将这个dom 删掉了而已。 如果请求发送错误,那么就会有莫名的报错。 并且如果这个组件有ref ,并且组件内部暴露了一些方法,那么也可以去通过 Ref.value.fn() 这种方式去调用组件内部的方法。本来就没权限,那么就不应该有任何途径去访问到组件内部的结构!!!
所以就引出另外一种权限控制的方式:组件级别的权限控制:
这种方式,通过插槽加上 v-if 的方式去控制,只要v-if 条件不满足,插槽内的组件就不会走到生命周期,所以既不会展示这个组件,也不会在用户本不应该也没权限看到的情况下去后台发送多余的请求以及可能会出现莫名错误的情况~~~