程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

  • 后端手册

  • 前端手册

    • 前端通用方法
    • 前端开发规范
    • 前端请求流程
    • 前端路由使用
      • 一、路由配置项说明
        • 1. hidden:是否在侧边栏中显示
        • 2. redirect:重定向路径
        • 3. alwaysShow:总是显示根路由
        • 4. name:路由名称
        • 5. query:默认传递的参数
        • 6. roles 和 permissions:路由访问的权限设置
        • 7. meta:路由元信息
      • 二、静态路由与动态路由
        • 1. 静态路由
        • 2. 动态路由
      • 三、常用路由操作方法
        • 1. 跳转到不同页面
        • 2. 跳转并传递请求参数
        • 3. 高亮指定菜单
      • 四、外链路由示例
    • Vue 组件使用
    • 前端动态菜单
    • 前端权限控制
    • 前台菜单管理
    • 多级目录与路由
    • 前端页签缓存
    • 使用 Svg Icon 图标
    • 使用字典功能
    • 动态系统参数
    • Axios 封装
    • 切换访问路径
    • 内容复制功能
  • 组件文档

  • 数据库分析

  • 若依框架
  • 前端手册
scholar
2024-08-31
目录

前端路由使用

# 若依框架中的路由使用

若依框架是通过路由配置来自动生成对应的导航,了解路由的配置项对于项目开发至关重要。本文将详细介绍路由的配置项及其使用方法,并结合若依框架的特点进行说明。

# 一、路由配置项说明

在若依框架中,路由的配置项可以控制页面的展示、导航行为、权限管理等。以下是常用的路由配置项及其说明:

{
  path: '/system/test',  // 路由路径
  component: Layout,     // 组件布局
  redirect: 'noRedirect', // 面包屑导航中不可点击
  hidden: false,          // 控制路由是否在侧边栏显示
  alwaysShow: true,       // 控制是否总是显示根路由
  meta: {                 // 路由元数据
    title: '系统管理',    // 在侧边栏和面包屑中展示的名字
    icon: 'system'        // 路由图标,可以是SVG或Element UI图标
  },
  children: [
    {
      path: 'index',      // 子路由路径
      component: (resolve) => require(['@/views/index'], resolve), // 组件路径
      name: 'Test',       // 路由名称
      meta: {
        title: '测试管理', // 子路由标题
        icon: 'user'      // 子路由图标
      }
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 1. hidden:是否在侧边栏中显示

  • 类型: Boolean
  • 默认值: false
  • 说明: 当设置为 true 时,该路由不会在侧边栏出现,常用于 401、login 等页面。

# 2. redirect:重定向路径

  • 类型: String
  • 说明: 设置为 'noRedirect' 时,该路由在面包屑导航中不可点击。

# 3. alwaysShow:总是显示根路由

  • 类型: Boolean
  • 默认值: false
  • 说明: 当 children 路由多于一个时,自动变为嵌套路由;若设置为 true,不论 children 路由数量,都会显示根路由。

# 4. name:路由名称

  • 类型: String
  • 说明: 路由的名字,必须填写,否则使用 <keep-alive> 时会出现问题。

# 5. query:默认传递的参数

  • 类型: Object
  • 说明: 路由默认传递的参数,如 {"id": 1, "name": "ry"}。

# 6. roles 和 permissions:路由访问的权限设置

  • roles 类型: Array
  • permissions 类型: Array
  • 说明: 设置访问路由的角色或权限,支持多个权限判断。

# 7. meta:路由元信息

  • 类型: Object
  • 说明: 包含以下子属性:
    • title: 在侧边栏和面包屑中展示的名字。
    • icon: 设置路由的图标,支持 SVG 和 Element UI 图标。
    • noCache: 如果设置为 true,则不会被 <keep-alive> 缓存。
    • breadcrumb: 如果设置为 false,则不会在面包屑中显示。
    • affix: 如果设置为 true,则会固定在 tags-view 中。
    • activeMenu: 设置该属性可以高亮侧边栏中的某个菜单项。

# 二、静态路由与动态路由

# 1. 静态路由

静态路由代表那些不需要动态判断权限的路由,如登录页、404 等通用页面。在 @/router/index.js 文件中配置。

// @/router/index.js
const routes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },
  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },
  ...
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2. 动态路由

动态路由根据用户的角色权限动态加载,需要在 @/store/modules/permission.js 中通过 addRoutes 动态添加。

// @/store/modules/permission.js
import { asyncRoutes, constantRoutes } from '@/router'

const state = {
  routes: [],
  addRoutes: []
}

const mutations = {
  SET_ROUTES: (state, routes) => {
    state.addRoutes = routes
    state.routes = constantRoutes.concat(routes)
  }
}

const actions = {
  generateRoutes({ commit }, roles) {
    return new Promise(resolve => {
      let accessedRoutes
      if (roles.includes('admin')) {
        accessedRoutes = asyncRoutes || []
      } else {
        accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
      }
      commit('SET_ROUTES', accessedRoutes)
      resolve(accessedRoutes)
    })
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

提示: 动态路由可以在系统管理中的菜单管理进行新增和修改,前端加载时会请求接口获取菜单信息并转换成前端对应的路由。

# 三、常用路由操作方法

# 1. 跳转到不同页面

使用 router.push 方法跳转页面:

this.$router.push({ path: "/system/user" });
1

# 2. 跳转并传递请求参数

使用 query 属性传递参数:

this.$router.push({ path: "/system/user", query: { id: "1", name: "若依" } });
1

# 3. 高亮指定菜单

使用 activeMenu 设置高亮菜单:

{
  path: '/article/:id',
  component: ArticleDetail,
  meta: { activeMenu: '/article/list' }
}
1
2
3
4
5

# 四、外链路由示例

在某些情况下,可能需要添加外链到导航中,例如若依官网:

{
  path: 'http://ruoyi.vip',
  meta: { title: '若依官网', icon : "guide" }
}
1
2
3
4
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
前端请求流程
Vue 组件使用

← 前端请求流程 Vue 组件使用→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式