vue vuex vue-rouert 权限路由(详细教程)

这篇文章主要介绍了vue vuex vue-rouert后台项目——权限路由,通过本文可以很清除的捋清楚vue+vuex+vue-router的关系,本版本非常简单,适合初学者,需要的朋友可以参考下

项目地址: vue-simple-template

共三个角色:adan barbara carrie 密码全是:123456

adan 拥有 最高权限A 他可以看到 red , yellow 和 blue 页面(共三个页面)

barbara 拥有 权限B 他可以看到 red 和 yellow 页面

立即学习“前端免费学习笔记(深入)”;

carrie 拥有 权限C 他可以看到 red 和 blue 页面

vue vuex vue-rouert 权限路由(详细教程)

技术栈

webpack ---- 打包神器vue ---- JavaScript 框架vuex ---- 实现不同组件间的状态共享vue-router ---- 页面路由babel-polyfill ---- 将ES6代码转为ES5代码normalize.css ---- 重置掉该重置的样式element-ui ---- UI组件库

登录后复制

项目初始化

# cd 到项目文件夹cd weven-simple-template# 安装依赖 (本项目还安装了其他依赖详情 请见 package.json 文件)npm install# 运行项目npm run dev

登录后复制

项目结构

vue-cil 脚手架初始化项目后,我只修改过src文件夹

src├── App.vue  ---- 页面入口├── api  ---- api请求│ └── login.js ---- 模拟json对象数据├── assets  ---- 主题 字体等静态资源│ └── logo.png├── components ---- 组件│ ├── index.vue│ └── login.vue ├── main.js  ---- 初始化组件 加载路由├── router  ---- 路由│ └── index.js└── store  ---- vuex状态管理 ├── getters.js ├── index.js └── modules └── login.js

登录后复制

重点:

动态路由的关键在于router配置的 meta字段 和vuex的 状态共存 (不懂可以先查看官方文档)

router/index.js

// 初始化路由export default new Router({  routes: [ { path: '/login', name: 'Login', component: Login } ] });// 动态路由 meta 定义了roleexport const powerRouter =[  { path: '/',redirect:'/red', name: 'index',component: Index,hidden:false, children: [ { path: '/red', name: 'red', component: red,}, { path: '/yellow', name: 'yellow', component: yellow, meta: {role: 'B'}}, { path: '/blue', name: 'blue', component: blue, meta: {role: 'C'}} ] }];

登录后复制

store/modules/lo

Logins({ commit }, info){  return new Promise((resolve, reject) => {  let data={};  loginByUserInfo.map(function (item) { //获取所以用户信息   if(info.username === item.username || info.pew === item.pew){   commit('SET_USERNAME',item.username); //将username和role进行存储   sessionStorage.setItem('USERNAME', item.username); //存入 session    commit('SET_ROLE',item.role);   sessionStorage.setItem('ROLE', item.role);   return data={username:item.username,introduce:item.introduce};   }else{   return data;   }  });   resolve(data); }).catch(error => {  reject(error); }); }, Roles({ commit }, newrouter){ return new Promise((resolve, reject) => {  commit('SET_NEWROUER',newrouter); //存储最新路由  resolve(newrouter); }).catch(error => {  reject(error); }); },

登录后复制登录后复制

gin.js  actions部分

Logins({ commit }, info){  return new Promise((resolve, reject) => {  let data={};  loginByUserInfo.map(function (item) { //获取所以用户信息   if(info.username === item.username || info.pew === item.pew){   commit('SET_USERNAME',item.username); //将username和role进行存储   sessionStorage.setItem('USERNAME', item.username); //存入 session    commit('SET_ROLE',item.role);   sessionStorage.setItem('ROLE', item.role);   return data={username:item.username,introduce:item.introduce};   }else{   return data;   }  });   resolve(data); }).catch(error => {  reject(error); }); }, Roles({ commit }, newrouter){ return new Promise((resolve, reject) => {  commit('SET_NEWROUER',newrouter); //存储最新路由  resolve(newrouter); }).catch(error => {  reject(error); }); },

登录后复制登录后复制

main.js

router.beforeEach((to, from, next) => { if(store.getters.role){ //判断role 是否存在  if(store.getters.newrouter.length !== 0){   next() //resolve 钩子 }else{  let newrouter  if (store.getters.role == 'A') { //判断权限  newrouter = powerRouter  } else {  let newchildren = powerRouter[0].children.filter(route => {   if(route.meta){   if(route.meta.role == store.getters.role){    return true   }   return false   }else{   return true   }  });  newrouter = powerRouter  newrouter[0].children = newchildren  }  router.addRoutes(newrouter) //添加动态路由  store.dispatch('Roles',newrouter).then(res => {   next({ ...to })  }).catch(() => {   }) }  }else{  if (['/login'].indexOf(to.path) !== -1) {   next() } else {  next('/login') } }})

登录后复制

components/index.vue

// mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性...mapGetters([ 'newrouter' ])

登录后复制

此项目拿去 捋清楚 vue+vuex+vue-router 的关系是没问题的,这可以说的超级简单的版本,适合初学。上面的内容说的重点,其实也算是项目的全部啦

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在js中如何实现上传并压缩图片功能(详细教程)

在js中如何实现上传并压缩图片功能(详细教程)

在js中如何实现上传并压缩图片功能(详细教程)

在js中如何实现上传并压缩图片功能(详细教程)

在js中如何实现上传并压缩图片功能(详细教程)

以上就是vue vuex vue-rouert 权限路由(详细教程)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3184510.html

(0)
上一篇 2025年3月31日 21:48:30
下一篇 2025年3月31日 21:48:39

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue+storejs处理获取数据

    这次给大家带来vue+storejs处理获取数据,vue+storejs处理获取数据的注意事项有哪些,下面就是实战案例,一起来看一下。 具体代码如下所示: export default { data(){ return { shopList…

    编程技术 2025年3月31日
    100
  • 详细介绍Vue事件修饰符capture的使用

    capture事件修饰符的作用是给元素添加一个监听器,当元素发生冒泡时,先触发带有该修饰符的元素。这篇文章给大家介绍了vue 事件修饰符capture 的使用,需要的朋友参考下吧 .capture事件修饰符的作用添加事件侦听器时使用事件捕获…

    编程技术 2025年3月31日
    100
  • 在react-router中刷新页面出现404问题

    本篇文章主要介绍了react-router browserhistory刷新页面404问题解决方法,非常具有实用价值,需要的朋友可以参考下 使用React开发新项目时,遇见了刷新页面,直接访问二级或三级路由时,访问失败,出现404或资源加载…

    2025年3月31日
    100
  • 在vue+swiper中如何实现侧滑菜单效果

    这篇文章主要为大家详细介绍了vue+swiper实现侧滑菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了vue swiper实现侧滑菜单效果的具体代码,供大家参考,具体内容如下 先上效果图: 这个左右滑动以及…

    2025年3月31日
    100
  • 在Vue组件通信中如何使用Bus

    本篇文章主要介绍了vue组件通信之bus的具体使用,现在分享给大家,也给大家做个参考。 关于组件通信我相信小伙伴们肯定也都很熟悉,就不多说了,对组件通信还不熟悉的小伙伴移步这里。 在vue2.0中 $dispatch 和 $broadcas…

    2025年3月31日
    100
  • 在nginx上部署vue项目(详细教程)

    vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载。这篇文章主要介绍了在nginx上部署vue项目(history模式),需要的朋友可以参考下 vue-router 默…

    编程技术 2025年3月31日
    100
  • 在vue中如何实现阅读全文

    下面我就为大家分享一篇vue实现文章内容过长点击阅读全文功能的实例,具有很好的参考价值,希望对大家有所帮助。 直接上代码: html:   阅读全文 登录后复制 css: .bodyFont{ .font-dpr(16px); color:…

    2025年3月31日
    100
  • vue-router内query动态传参如何处理

    这次给大家带来vue-router内query动态传参如何处理,vue-router内query动态传参的注意事项有哪些,下面就是实战案例,一起来看一下。 最近在写项目,在写项目的过程会总发现这样或者那样的问题,比如说vue-router中…

    编程技术 2025年3月31日
    100
  • 如何使用webpack+vue环境局域网

    这次给大家带来如何使用webpack+vue环境局域网,使用webpack+vue环境局域网的注意事项有哪些,下面就是实战案例,一起来看一下。 步骤: 1.查看自己在局域网内的ip 命令行 ipconfig 2.回到自己的开发目录,在根目录…

    编程技术 2025年3月31日
    100
  • 在Vue+SpringBoot中如何实现博客管理平台

    v部落是一个多用户博客管理平台。这篇文章主要介绍了vue+springboot开发v部落博客管理平台,需要的朋友可以参考下 V部落是一个多用户博客管理平台,采用Vue+SpringBoot开发。 演示地址: http://45.77.146…

    2025年3月31日 编程技术
    100

发表回复

登录后才能评论