使用体验

  1. # 安装路由
  2. yarn add vue-router@4

src 文件下新增 router 文件夹 再新增 index.ts 文件, 内容如下:
vue-router4.x 支持 typescript,配置路由的类型是 RouteRecordRaw

  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import type { RouteRecordRaw } from 'vue-router'
  3. const basicRouters: RouteRecordRaw[] = [
  4. {
  5. path: '/',
  6. name: 'Root',
  7. redirect: '/login'
  8. },
  9. {
  10. path: '/login',
  11. name: 'Login',
  12. component: () => import('@/views/login/Index.vue'),
  13. }
  14. ]
  15. const router = createRouter({
  16. history: createWebHistory(),
  17. routes: basicRouters,
  18. })
  19. export default router

修改入口文件 mian.ts挂载路由配置 :

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import router from './router/index'
  4. const app = createApp(App)
  5. app.use(router)
  6. app.mount('#app')

根据路由配置的实际情况,需要在 src 下创建 views 目录,用来存储页面组件。

路由设计

  1. └── src/
  2. ├── router/
  3. ├── modules/ // 根据业务划分路由模块
  4. ├── index.ts // 路由配置文件

这里 meta 可以让我们有更多的发挥空间,这里提供一些参考:

  • title:string; 页面标题,通常必选。
  • icon?:string; 图标,一般配合菜单使用。
  • auth?:boolean; 是否需要登录权限。
  • ignoreAuth?:boolean; 是否忽略权限。
  • roles?:RoleEnum[]; 可以访问的角色
  • keepAlive?:boolean; 是否开启页面缓存
  • hideMenu?:boolean; 有些路由我们并不想在菜单中显示,比如某些编辑页面。
  • order?:number; 菜单排序。
  • frameUrl?:string; 嵌套外链。

这里只提供一些思路,每个项目涉及到的业务都会存在些差异,这里就不作详细讲解了,根据自己业务需求做配置即可。