约定式路由生成神器:vite-plugin-pages

简介: 这篇文章介绍了如何使用vite-plugin-pages插件在Vite项目中实现约定式路由自动生成,包括搭建工程、安装插件、配置vite.config.ts文件以及创建和挂载路由。

前言

去年我发布了一篇关于 约定式路由 的文章:在 vite 中使用 glob 实现约定式路由

文章主要写了关于在 Vite 中使用 glob 根据文件系统自动生成路由,但看到有伙伴介绍这个目前有现成的 vite 插件:vite-plugin-pages

我一时就来了兴趣,搭建了个 vite 工程了解了下,真的可以,而且配置很简单,下面我来介绍一下这个插件的使用

安装插件

1、 使用命令搭建一个 vue3 工程:

pnpm create vite vue3-demo -- --template vue-ts

2、 安装 vue-router 和 vite-plugin-pages:

pnpm add vue-router

pnpm add vite-plugin-pages -D

配置插件

1、 打开 vite.config.ts 文件,新增配置:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import pages from 'vite-plugin-pages'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    pages({
      dirs: "src/views", // 需要生成路由的文件目录,默认就是识别src下面的pages文件
      exclude: ["**/components/*.vue"], // 排除在外的目录,上面配置目录的例子,里面有 components 目录,我们不希望他被解析为路由
      extendRoute(route, parent) {
        if (route.path === '/') {
          //给默认路由加一个redirect,默认为index.vue
          return {
            ...route,
            redirect: '/about'
          }
        }
      }
    }),
  ]
})

2、 配置 router/index.ts 路由文件:

import {
  createRouter,
  createWebHistory
} from "vue-router";
import routes from "~pages";
const router = createRouter({
  history: createWebHistory(),
  routes,
});
export default router;

3、 main.ts 中挂载路由:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'

createApp(App).use(router).mount('#app')

文件系统即是路由

1、 我们简单创建几个菜单文件:

image.png

2、 我们在 router/index.ts 打印一下 routes ,会得到默认的路由配置,这时候我们就可以访问路由了:
image.png

3、 如果我们想覆盖 route 配置,可以在文件中添加 路由信息:

<route>
{
  name:'new-about',
  meta: {
    requiresAuth: false,
    layout:'top'
  }
}
</route>

里面的配置会直接覆盖默认配置,你也可以使用 yaml 格式:

<route lang="yaml">
name: new-about
meta:
  requiresAuth: true
  layout: top
</route>

4、 配置动态路由,只需要用 [] 符号包裹:

src/pages/users/[id].vue -> /users/:id (/users/one)
src/pages/[user]/settings.vue -> /:user/settings (/one/settings)

5、 配置 404 拦截页面,在 src/views 目录下添加 [...all].vue:
image.png

路由生成规则

src/views/index.vue -> /
src/views/index/a.vue -> /a // 这里的a.vue就是index.vue的子路由(children)
src/views/father/index.vue -> /father
src/views/father.vue -> /father
src/views/father/son.vue -> /father/son
src/views/father/[id].vue -> /father/:id
src/views/[father]/son.vue -> /:father/son
src/views/[…all].vue ->文件用来适配404页面

更多配置请参考:vite-plugin-pages

总结

个人感觉这个插件功能还是挺实用的,可以用在我们的项目上,就不用每次都要手写路由配置了,也更加容易维护。

不得不感叹现在前端开发的工具真的是越来越多了,也越来越实用,vite 还有很多实用的功能待我们去探索,这里给作者和 尤雨溪 老板一个赞👍🏻🫰

相关文章
|
4月前
|
SQL 人工智能 文字识别
阿里开源的 AI 代码审查工具 open-code-review 来了
阿里巴巴开源Open Code Review(OCR),融合确定性工程与LLM Agent,已服务数万开发者、发现百万级缺陷。内置NPE、SQL注入等安全规则,支持CLI、Agent集成及多平台部署,让AI代码审查更精准、稳定、可落地。(239字)
10828 1
|
8月前
|
安全 Java API
Spring Boot 4 升级实战:从3.x到4.0的分步升级保姆级指南
Spring Boot 4.0于2025年11月发布,基于Spring Framework 7.0,实现模块化(47个轻量自动配置)、JSpecify空安全校验、原生API版本控制等重大升级。镜像减19%、启动快33%,迁移平滑,3.5.x支持至2026年11月。(239字)
6813 1
|
前端开发 JavaScript
Promise.allSettled()方法和Promise.all()方法有什么区别?
Promise.allSettled()方法和Promise.all()方法有什么区别?
747 123
|
11月前
|
人工智能 IDE Java
IntelliJ IDEA 2025.1 完整安装指南:激活 + 中文设置 + 全程丝滑 附安装包
IntelliJ IDEA 2025.1 发布,全面支持 Java 24、默认启用 Kotlin K2 模式,增强 Scala 3 支持。AI 助手免费使用,支持 GPT-4.1、Claude 3.7 等云模型,提升代码补全与多文件编辑能力。调试、终端架构及 Markdown 预览搜索等功能全面优化,开发体验更高效流畅。
10219 3
IntelliJ IDEA 2025.1 完整安装指南:激活 + 中文设置 + 全程丝滑 附安装包
|
前端开发 JavaScript 应用服务中间件
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
跨域问题是前端开发中常见且棘手的问题,但通过理解CORS的工作原理并应用合适的解决方案,如服务器设置CORS头、使用JSONP、代理服务器、Nginx配置和浏览器插件,可以有效地解决这些问题。选择合适的方法可以确保应用的安全性和稳定性,并提升用户体验。
10004 90
|
存储 缓存 JavaScript
NPM怎样清空缓存
NPM怎样清空缓存
|
存储 安全 Java
Spring Security 入门与详解
Spring Security 是 Spring 框架中的核心安全模块,提供认证、授权及防护功能。本文详解其核心概念,包括认证(Authentication)、授权(Authorization)和过滤器链(Security Filter Chain)。同时,通过代码示例介绍基本配置,如 PasswordEncoder、UserDetailsService 和自定义登录页面等。最后总结常见问题与解决方法,助你快速掌握 Spring Security 的使用与优化。
3049 0
vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程
vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程
2050 0

热门文章

最新文章