
Company News
Socket Has Acquired Secure Annex
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.
vite-plugin-vue-meta-layouts
Advanced tools
vite 的 vue-router 的元信息布局系统
English | Chinese
vite-plugin-vue-layouts
的重写版本,在最新版本的 vite 中有合理的 hmr !!
npm i vite-plugin-vue-meta-layouts -D
// vite.config.js
import { defineConfig } from "vite";
import Vue from "@vitejs/plugin-vue";
import MetaLayouts from "vite-plugin-vue-meta-layouts";
export default defineConfig({
plugins: [Vue(), MetaLayouts()],
});
import { setupLayouts } from "virtual:meta-layouts";
import { createRouter, createWebHistory } from "vue-router";
const routes = setupLayouts([
{
// ... 页面路由配置
},
]);
const router = createRouter({
routes,
history: createWebHistory(),
});
layouts/default.vue 默认布局,此时页面都会被应用该布局<template>
default
<router-view />
<!-- 视图出口 -->
</template>
例如创建 layouts/other.vue
// 应用 layouts/default.vue 布局
const home = {
path: "/",
component: () => import("./pages/home.vue"),
};
// 应用 layouts/other.vue 布局
const about = {
path: "/about",
component: () => import("./pages/home.vue"),
meta: {
layout: "other", // 通过元信息来管理布局
},
};
const routes = setupLayouts([home, about]);
当然也支持文件路由哦 🤗
npm i vite-plugin-pages -D
// vite.config.js
import { defineConfig } from "vite";
import Vue from "@vitejs/plugin-vue";
import Pages from "vite-plugin-pages"; // 引入文件路由插件
import MetaLayouts from "vite-plugin-vue-meta-layouts";
export default defineConfig({
plugins: [
Vue(),
Pages(), // 配置文件路由插件
MetaLayouts(),
],
});
import fileRoutes from "~pages"; // 引入文件路由表
import { setupLayouts } from "virtual:meta-layouts";
import { createRouter, createWebHistory } from "vue-router";
const router = createRouter({
routes: setupLayouts(fileRoutes), // 注册文件路由表
history: createWebHistory(),
});
此时可以通过页面中的自定义块 route 的 meta 来做布局配置
<!-- 你的页面 -->
<template> 内容 </template>
<route> { meta: { layout: 'other' } } </route>
npm i unplugin-vue-router -D
import { routes } from "vue-router/auto-routes"; // 引入文件路由表
import { setupLayouts } from "virtual:meta-layouts";
import { createRouter, createWebHistory } from "vue-router/auto";
const router = createRouter({
routes: setupLayouts(routes), // 注册文件路由表
history: createWebHistory(),
});
// vite.config.js
import { defineConfig } from "vite";
import Vue from "@vitejs/plugin-vue";
import MetaLayouts from "vite-plugin-vue-meta-layouts";
export default defineConfig({
plugins: [
Vue(),
MetaLayouts({
target: "src/layouts", // 布局目录,默认 src/layouts
defaultLayout: "default", // 默认布局,默认为 default
importMode: "sync", // 加载模式,支持 sync 和 async。默认为自动处理,SSG 时为 sync,非 SSG 时为 async
skipTopLevelRouteLayout: true, // 打开修复 https://github.com/JohnCampionJr/vite-plugin-vue-layouts/issues/134,默认为 false 关闭
excludes: [], // 排除路径,仅接受 glob
metaName: "layout", // meta 名称,默认是 layout
}),
],
});
如果你是 ts 项目,还可以在 tsconfig.json 中配置以下声明
{
"compilerOptions": {
"types": ["vite-plugin-vue-meta-layouts/client"]
}
}
route 代码提示 💡使用 volar-plugin-vue-router 可以带来友好的代码提示.
由于布局系统需要在最外层嵌套一层布局路由,所以可能会造成路由表的获取混乱,此时可以用辅助的函数 👇
import { createGetRoutes } from "virtual:meta-layouts";
const getRoutes = createGetRoutes(router);
// 获取路由表但是不包含布局路由
console.log(getRoutes());
布局实现思路来自 vite-plugin-vue-layouts。
该方案可以自动地做合理的 hmr。
欢迎关注 帝莎编程
Made with markthree
Published under MIT License.
FAQs
vite 的 vue-router 的元信息布局系统
The npm package vite-plugin-vue-meta-layouts receives a total of 5,064 weekly downloads. As such, vite-plugin-vue-meta-layouts popularity was classified as popular.
We found that vite-plugin-vue-meta-layouts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.

Research
/Security News
Socket is tracking cloned Open VSX extensions tied to GlassWorm, with several updated from benign-looking sleepers into malware delivery vehicles.

Product
Reachability analysis for PHP is now available in experimental, helping teams identify which vulnerabilities are actually exploitable.