记一次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 相关文章推荐
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
Mar 04 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
Jun 14 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
Oct 21 Javascript
vue router 配置路由的方法
Jul 26 Javascript
jQuery UI实现动画效果代码分享
Aug 19 jQuery
JS实现点击发送验证码 xx秒后重新发送功能
Jul 30 Javascript
layer弹出层取消遮罩的方法
Sep 25 Javascript
d3.js实现图形缩放平移
Dec 19 Javascript
webpack中的模式(mode)使用详解
Feb 20 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
Javascript 继承实现例子
2009/08/12 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
javascript每日必学之封装
2016/02/23 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
py中的目录与文件判别代码
2008/07/16 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
python实现雨滴下落到地面效果
2018/06/21 Python
python调用百度语音识别api
2018/08/30 Python
python实现换位加密算法的示例
2018/10/14 Python
详解django2中关于时间处理策略
2019/03/06 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
岗位职责的定义
2013/11/10 职场文书
出国留学介绍信
2014/01/13 职场文书
职工运动会邀请函
2014/01/19 职场文书
秸秆管理实施方案
2014/03/15 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
应聘教师自荐信
2015/03/26 职场文书
Python字符串格式化方式
2022/04/07 Python