记一次Vue.js混入mixin的使用(分权限管理页面)


Posted in Javascript onApril 17, 2019

需求背景:在一个后台的管理系统中,不同的用户角色对应不同的用户权限。现要求,同一个页面对有操作权限的用户来说是可操作的,对无操作权限的用户来说是只读的,即操作按钮均失效。系统用Vue.js开发。

一、mixin的概念

官方文档这么说:混入是一种分发Vue组件中可服用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

我自己的理解:混入对象具有Vue组件可以声明的所有选项,如[components]、[computed]、[methods]等;当组件使用混入对象时,该组件也同时拥有了混入对象的选项。

二、思路

按照开篇写的需求描述,如果用一般的方法,我们通常会在每个页面的vue文件中,判断当前用户是否具有操作该页面的权限,根据判断结果来展示页面。然而,这种方法会导致大量代码的重复,徒然增加了一些无意义的工作量。因此,需要有一个可以复用的方法。

故此,我们可以把上述的可复用的办法放在混入对象的选项当中。

三、代码展示

在混入对象的computed选项中,我们有这几个方法,来判断用户所拥有的的‘编辑'、‘查看'、‘删除'等权限。

computed: {
  allowedToCreate() {
   return this.hasOperatePermissions('createRole');
  },
  allowedToEdit() {
   return this.hasOperatePermissions('editRole');
  },
  allowedToCheckIn() {
   return this.hasOperatePermissions('checkInRole');
  },
  allowedToDelete() {
   return this.hasOperatePermissions('deleteRole');
  },  
 },

注意,如果普通组件中引用了混入对象,那么这些计算属性会自动成为组件的计算属性。具体如何创建一个混入对象,并且引入该混入对象,这里不细讲,可参考官方文档。

记一次Vue.js混入mixin的使用(分权限管理页面)

记一次Vue.js混入mixin的使用(分权限管理页面)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
重定向实现代码
Nov 20 Javascript
js setattribute批量设置css样式
Nov 26 Javascript
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
理解JSON:3分钟课程
Oct 28 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
Vue响应式原理深入解析及注意事项
Dec 11 Javascript
浅析从vue源码看观察者模式
Jan 29 Javascript
vue中tab选项卡的实现思路
Nov 25 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
Aug 20 Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 Javascript
详解js获取video任意时间的画面截图
Apr 17 #Javascript
解决vue跨域axios异步通信问题
Apr 17 #Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 #Javascript
微信公众平台 发送模板消息(Java接口开发)
Apr 17 #Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 #Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 #Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 #Javascript
You might like
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
详解C++编程中一元运算符的重载
2016/01/19 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
kali中python版本的切换方法
2019/07/11 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
罗技美国官网:Logitech美国
2020/01/22 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
毕业生医学检验求职信
2013/10/16 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
2014年校长工作总结
2014/12/11 职场文书
家属慰问信
2015/02/14 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL