vue3+vite中自动配置路由的神器:vite-plugin-pages

文章介绍了如何在Vue3和Vite的项目中利用vite-plugin-pages和vite-plugin-vue-layouts插件自动化配置本地路由,包括一级路由、嵌套路由、动态路由以及如何排除特定组件。同时,展示了如何设置布局页面和处理不需要布局的页面,以及在后台管理系统中实现侧边栏和主要内容的路由配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

        在写vue3+vite组合的项目中,很多时候我们都需要配置本地路由,实际vite有个神器来提高效率,把配置本地路由的工作代替我们处理掉。

具体使用:

1、安装 npm/cnpm/pnpm/yarn  都可以,装上下面两个插件

vite-plugin-pages vite-plugin-vue-layouts

2、vite.config.js中配置

import Pages from 'vite-plugin-pages';
import Layouts from 'vite-plugin-vue-layouts';

const PROJECT_ROOT = '../..'; //根据个人项目实际需要
const config = {
    plugins: [
        Pages({
          // 需要生成路由的文件目录,默认就是识别src下面的pages文件
          pagesDir: join(PACKAGE_ROOT, 'src') + '/pages',
          //dirs: "src/pages", 

          // 排除在外的目录,即不将所有 components 目录下的 .vue 文件生成路由
          exclude: ["**/components/*.vue"], 
        }),
        Layouts({
            layoutsDirs: join(PACKAGE_ROOT, 'src') + '/layouts',
         }),


    ]
}

3、路由配置

import { createRouter, createWebHashHistory } from 'vue-router';
import { setupLayouts } from 'virtual:generated-layouts';//将route里面的路由变成嵌套路由
import generatedRoutes from 'virtual:generated-pages';


const routes = setupLayouts(generatedRoutes);
const router = createRouter({
  history: createWebHashHistory(),
  routes,
});
const app = createApp(App);
app.use(router);

virtual:generated-layouts 这个插件只做一件事,就是把通过 vite-plugin-pages 生成的一级路由处理成嵌套路由,大概就是这样:

项目中有的路由是需要用到布局页面的,有的则不需要,
1、那我们可以将不需要的页面设置为 layout: false :
<route>
    {
        meta: {
            layout: false
        }
    }
</route>
2、在路由配置中间增加
...
import generatedRoutes from 'virtual:generated-pages';

//加这里的代码
let routes = []
generatedRoutes.forEach(v => {
    routes.push(v?.meta?.layout != false ? setupLayouts([v])[0] : v)
})


//注释这行代码
const routes = setupLayouts(generatedRoutes);
...

 4、后台管理系统的  侧边栏,上边栏 加  右边主要内容 路由配置

1)新建layouts 
2)DesktopLayout.vue
<template>
  <div class="flex-box">
    <SidebarMenu />
    <div class="right-box">
      <div class="right-box-header">
        <TopbarMenu />
      </div>
      <router-view v-slot="{ Component }">
        <keep-alive>
          <component :is="Component"></component>
        </keep-alive>
      </router-view>
    </div>
  </div>
</template>v
3)单个页面的路由配置
1、增加路由配置
<route lang="yaml">
    meta:
      layout: DesktopLayout
    </route>
2、添加页面内容
<template> 
    <router-view v-slot="{ Component }">
        <keep-alive>
            ...页面主体内容
         </keep-alive>
  </router-view>
</template>

5、路由具体使用

  • src/pages/users.vue -> /users
  • src/pages/users/profile.vue -> /users/profile
  • src/pages/settings.vue -> /settings

以 index 命名的文件会自动当做路由的索引页:

  • src/pages/index.vue -> /
  • src/pages/users/index.vue -> /users
动态路由

使用方括号来表示动态路由,文件夹和文件都可以动态哦:

  • src/pages/users/[id].vue -> /users/:id (/users/one)
  • src/[user]/settings.vue -> /:user/settings (/one/settings)
    动态参数需要通过 props 传入到目标页面,如 src/pages/users/[id].vue 路由 /users/abc 将需要传递如下参数:
    { "id": "abc" }

这种的就是动态路由的页面

 

要在Vue 3 + Vite项目中使用pinia-plugin-persistedstate插件,你需要按照以下步骤进行设置: 1. 首先,确保你已经安装了`pinia`和`pinia-plugin-persistedstate`插件。可以使用以下命令进行安装: ```bash npm install pinia pinia-plugin-persistedstate ``` 2. 在你的Vue 3项目的入口文件(通常是`main.js`或`main.ts`)中,引入所需的依赖项,并创建一个Pinia实例。示例代码如下: ```javascript import { createApp } from &#39;vue&#39; import { createPinia } from &#39;pinia&#39; import { createPersistedState } from &#39;pinia-plugin-persistedstate&#39; import App from &#39;./App.vue&#39; const pinia = createPinia() pinia.use(createPersistedState()) createApp(App).use(pinia).mount(&#39;#app&#39;) ``` 3. 在你的应用程序中,可以在需要的组件中使用Pinia提供的状态管理。示例代码如下: ```vue <template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> </div> </template> <script> import { defineComponent } from &#39;vue&#39; import { useStore } from &#39;pinia&#39; export default defineComponent({ setup() { const store = useStore() const increment = () => { store.count++ } return { count: store.count, increment, } }, }) </script> ``` 在这个示例中,我们使用了`useStore`函数来获取Pinia的store实例,并在组件中使用了一个计数器来展示和增加一个`count`状态。 4. 现在,当你的应用程序重新加载或关闭后再次打开时,Pinia插件会自动将状态持久化到本地存储中,以便你可以保留之前的状态。 这就是在Vue 3 + Vite项目中使用pinia-plugin-persistedstate插件的基本步骤。你可以按照这些步骤进行设置,并根据自己的需求进行调整和扩展。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值