router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import store from '@/store'import routes from '../router.config.js'Vue.use(Router)const createRoute = (routes) => {// 数组的reduce方法,累加得出路由信息return routes.reduce((processedRoutes, currentRoute) => {processedRoutes.push(processRouteObj(currentRoute))return processedRoutes}, [])
}const processRouteObj = ({menuCode,breadcrumb,children,component,keepAlive,...args
}) => {return Object.assign({ // Object.assign()合并后返回新的路由对象// 路由元信息,配合全局守卫钩子实现页面的路由访问控制meta: {menuCode,keepAlive},// 路由解耦传参props: {breadcrumbObj: {content: breadcrumb,menuCode: menuCode}},// 此路由下对应的组件component: () => import(`@/pages/${component}`),// 子路由children: children ? createRoute(children) : []}, args)
}const router = new Router({mode: 'history',base: process.env.BASE_URL,routes: createRoute(routes)
})
// 全局前置守卫,实现路由的拦截与放行
router.beforeEach(async (to, form, next) => {const {userInfo: {code}} = store.state// 防止死循环跳出if (to.path.indexOf('error') > -1) {next()return}// console.log('totototototototo', to)if (code.includes(`${process.env.VUE_APP_CONTEXT}_${to.meta.menuCode}`)) {next()} else if (to.meta.menuCode) {// 真实菜单,但无权限next({path: '/error/403'})} else {// 不属于系统的url,跳转到404页面next({path: '/error/404'})}
})export default router

router.config.js


export default [{name: 'xxxx',path: '/xxx',menuCode: 'xxx',component: 'xxx/index'}
]

veu项目中的路由处理相关推荐

  1. Vue.JS项目中二级路由下刷新浏览器仍呈现当前路由的实现方案

    1.需求介绍: 以下介绍一下实现起来没什么疑问的需求:设备列表为一个主页,点击设备列表中的编辑按钮,进入设备信息主页面,默认打开设备配置页,点击设备状态.设备日志.固件升级,会切换下方内容. 本人对以 ...

  2. 搭建SPA项目SPA项目中使用路由嵌套路由

    目录 一.vue-cli建立SPA项目 1.1 安装vue-cli 1.2 命令构建SPA项目 1.3 导入编码器 1.4 SPA项目运行访问过程 二.SPA项目使用路由 2.1 定义组件 2.2 定 ...

  3. Vue项目中使用 路由导航守卫 处理页面的访问权限

    参考Vue-Router官方文档 Vue-Router导航守卫 效果展示 1.给需要登录状态才能访问的页面路由对象的 meta 中添加配置属性 { // 小智同学name: 'user-chat',p ...

  4. vue项目中解决路由重复点击报错问题

    router.js中写入 import导入代码下面加入const prototypePush = VueRouter.prototype.pushVueRouter.prototype.push = ...

  5. vue项目中跳转页面,页面从顶部开始

    vue项目中采用路由机制,当页面进行跳转,滚轮的位置不会改变 mounted() {//设置滚动条指定document.documentElement.scrollTop=0},

  6. 新窗口打开vue项目中的静态pdf文件,并做权限控制

    问题:公司系统做安全测试,其中一个问题是没有登录的情况下,直接访问 "项目地址/operate.pdf "此地址,会展示pdf文件. 描述:点击系统内的一个按钮会打开新窗口展示系统 ...

  7. 25、react 中使用路由 router 详解

    react 中使用路由 router 详解 今天开始最新的一个模块,也是 react 开发中最重要的一部分,就是路由. SPA 理解 我们使用原生的 HTML + CSS + JavaScript 开 ...

  8. vue 项目中当访问路由不存在的时候默认访问404页面

    前言: 在Vue项目中,当访问的页面路由不存在或错误时,页面显示为一片空白.然而,通常我们需要对访问url不存在或者错误的情况下添加默认的404页面,即not found页面. 一般的处理方法是: 在 ...

  9. React-router 5.0项目中统一动态设置路由页面Title

    React项目中想在不同的路由页面都有自己的独立title,并且统一设置. 可以在每个路由页面的 componentDidMount() 钩子回调中 document.title = 'title' ...

  10. Vue-cli项目中路由的基础用法,以及路由嵌套

    文件目录: 编辑router文件夹下的index.js文件 · 第一步:引用vue和vue-router ,Vue.use(VueRouter) /* eslint-disable*/ import ...

最新文章

  1. 理解YOLOv2训练过程中输出参数含义
  2. python查看文件有多少行_python如何判断文件有多少行
  3. 2021年下半年软考报考流程!
  4. hbase 学习(十四)Facebook针对hbase的优化方案分析
  5. [转]Device Context 设备环境 设备上下文 理解
  6. 算法61---两个字符串的最小ASCII删除和【动态规划】
  7. 我的邮局系统,欢迎大家注册!hotxf.com
  8. 使用offsetof对结构体指针偏移操作
  9. 快速部署web项目上线云服务器
  10. linux java gc_Java GC机制及相关
  11. Java - 常用函数Random函数
  12. 3.9MB超小超强文本识别模型,支持20000个字符的识别,平安产险提出Hamming OCR
  13. 74HC138 三八译码器
  14. h5扫描pc端二维码登录
  15. iOS Mach-O文件
  16. 如何查看本机IP及端口
  17. C++ printf打印二进制,三进制,八进制,十六进制等
  18. 安卓Andriod使用入门(二)【高仿安卓微信6.0】
  19. android 广播的插件化
  20. 学校计算机教室建设要求,计算机教室施工建设要求

热门文章

  1. 部署外网网站(一)——内网穿透实现外网访问
  2. c语言怎样识别字母大小写,c语言islower()函数如何判断字符是否为小写字母
  3. java中dao_java中的Dao类是什么意思?
  4. 毕业设计-基于SpringBoot体育运动场馆管理系统+开题报告-任务书等
  5. 图扑案例合集丨用赛博朋克语言诠释数字孪生
  6. java编程马拉松比赛_腾讯编程马拉松
  7. 安恒堡垒机如何启用Radius双因素/双因子(2FA)身份认证
  8. 北美周末票房榜TOP10 (06.21-23)
  9. 企业网络冗余技术(EthernetChannel、HSRP、VRRP)
  10. 虹科新品 | 需要进行高功率,大规模的测试控制?这款5A功率高密度继电器模块你一定不能错过!