Skip to content

Vue 约定式路由(文件路由)

Updated: at 09:12 AMSuggest Changes

Mark 一下,这可是好东西

配置

文档:https://github.com/hannoeru/vite-plugin-pages

vite.config.ts 文件

Pages({
  pagesDir: [
    { dir: 'src/views', baseRoute: '' },
    // { dir: 'src/features/**/pages', baseRoute: 'features' },
    // { dir: 'src/admin/pages', baseRoute: 'admin' }
  ],
});

router.ts 文件

import { createRouter } from 'vue-router';
import routes from '~pages';

const router = createRouter({
  // ...
  routes,
});

给页面添加元数据

<route>
{
  name: "name-override",
  meta: {
    requiresAuth: false
  }
}
</route>

优化一下页面是否缓存

vue2

<template>
  <!-- vue2.x 配置 -->
  <keep-alive>
    <router-view v-if="$route.meta.keepAlive" />
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive" />
</template>

vue3

<template>
  <!-- vue3.0 配置 -->
  <router-view v-slot="{ Component }">
    <keep-alive>
      <component :is="Component"  v-if="$route.meta.keepAlive"/>
    </keep-alive>
    <component :is="Component"  v-if="!$route.meta.keepAlive"/>
  </router-view> 
</template>

还可以用 keep-alive 的特性

感谢群友 @是判断,我加了判断 提及

<keep-alive include="a">
    <router-view>
        <!-- 只有路径匹配到的视图 a 组件会被缓存! -->
    </router-view>
</keep-alive>

后记

感谢群友 @邻家惊悚美少女 提供更好的方案:https://blog.csdn.net/m0_46309087/article/details/109403655

其他文章


Previous Post
MySQL 与 SQLite 的自然语言全文索引查询
Next Post
从 PDF 中提取图片和文字