?‍? 写在开头

点赞 + 收藏 === 学会???

自动生成前端路由最佳实践

概述

本文档介绍如何使用 vite 和 vite-plugin-pages 在前端项目中自动生成前端路由,通过文件系统结构自动映射为路由配置,减少手动维护路由的工作量。

安装必要依赖

首先需要安装用于自动生成路由的插件:

npm install vite-plugin-pages --save-dev# 或yarn add vite-plugin-pages -D# 或pnpm add vite-plugin-pages -D

配置 Vite

在 vite.config.ts 中配置插件:

import { defineConfig } from 'vite'import Vue from '@vitejs/plugin-vue'import Pages from 'vite-plugin-pages'export default defineConfig({  plugins: [    Vue(),    Pages({      // 基本配置选项      dirs: 'src/views', // 路由组件目录      exclude: ['**/components/*.vue'], // 排除的组件      extensions: ['vue'], // 支持的文件类型      // 更多配置见下文    }),  ],})

基本使用

文件系统路由约定

默认情况下,插件会扫描 src/views 目录下的 .vue 文件并自动生成路由:

src/views/  ├── index.vue        -> /  ├── about.vue        -> /about  ├── users/  │   ├── index.vue    -> /users  │   └── [id].vue     -> /users/:id  └── blog/      ├── index.vue    -> /blog      └── [slug].vue   -> /blog/:slug

动态路由

使用方括号命名文件来创建动态路由:

  • [param].vue -> /:param
  • [...all].vue -> /*

嵌套路由(不推荐)

创建与父路由同名的目录来生成嵌套路由:

src/views/  ├── users/  │   ├── [id].vue  │   └── index.vue  └── users.vue

会生成如下路由结构:

{  "path": "/users",  "component": "/src/views/users.vue",  "children": [    {      "path": "",      "component": "/src/views/users/index.vue"    },    {      "path": ":id",      "component": "/src/views/users/[id].vue"    }  ]}

高级配置(自定义路由属性)

可以在页面组件中使用 <route> 块来自定义路由属性:

<route>{  "meta": {    "requiresAuth": true  },  "alias": ["/home"]}</route><template>  <div>Home Page</div></template>

修改默认路由

在插件配置中可以通过 extendRoute 修改生成的路由:

Pages({  extendRoute(route, parent) {    if (route.path === '/') {      return {        ...route,        alias: ['/home']      }    }    return route  }})

使用不同的路由模式

支持生成 vue-router 或 react-router 格式的路由:

Pages({  routerMode: 'vue' // 或 'react'})

与路由库集成

Vue Router 集成

import { createRouter } from 'vue-router'import routes from 'virtual:generated-pages'const router = createRouter({  // ...  routes,})

React Router 集成

import { createBrowserRouter } from 'react-router-dom'import routes from 'virtual:generated-pages'const router = createBrowserRouter(routes)

类型支持

对于 TypeScript 项目,添加以下类型声明:

 
/// <reference types="vite-plugin-pages/client" />

完整配置选项

示例项目结构

my-project/├── src/│   ├── pages/│   │   ├── index.vue│   │   ├── about.vue│   │   ├── users/│   │   │   ├── [id].vue│   │   │   └── index.vue│   │   └── blog/│   │       ├── index.vue│   │       └── [slug].vue│   ├── App.vue│   └── main.ts├── vite.config.ts└── package.json

注意事项

  1. 生产构建时会预生成路由配置,不会影响性能
  2. 热更新在开发模式下正常工作
  3. 可以通过 console.log(routes) 查看生成的路由结构
  4. 对于需要特殊处理的路由,仍然可以手动维护部分路由配置

本文转载于:https://**juejin*.cn/post/7538829865350840359

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]