vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程

简介: vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程

一个常见的需求是,同模块的若干页面需要使用同一种布局,比如俱乐部相关的页面的顶部需要展示俱乐部的名称,其他页面顶部需要展示网站名称。


通常实现的方法是,将俱乐部的名称和网站名称定义成公共组件,在每个页面都书写置顶的布局,并引入响应的公共组件。


显然这是非常低效的,通过全局布局 vite-plugin-vue-layouts 可以帮你解决这个麻烦!

友情提示:

vite-plugin-vue-layouts 通常是配合 unplugin-vue-router 一起使用的!

使用流程

1. 安装 vite-plugin-vue-layouts

npm i -D vite-plugin-vue-layouts

2. vite 配置中导入

vite.config.ts

import Layouts from 'vite-plugin-vue-layouts'

plugins 中添加 Layouts

  plugins: [
    // VueRouter  必须在 vue() 之前
    VueRouter({}),
    Layouts({
      layoutsDirs: 'src/layouts', // 指定布局文件的目录路径
      defaultLayout: 'default' // 指定默认布局文件的名称
    }),
    vue(),
    vueJsx(),
    vueDevTools()
  ],

3. 添加类型声明

env.d.ts

/// <reference types="vite-plugin-vue-layouts/client" />

4. 改造路由配置

  • 引入 setupLayouts
  • 用 setupLayouts() 包裹原路由

src/router/index.ts 的最终效果如下:

import { createRouter, createWebHistory } from 'vue-router'
import { routes } from 'vue-router/auto-routes'
import { setupLayouts } from 'virtual:generated-layouts'

const router = createRouter({
  history: createWebHistory(),
  routes: setupLayouts([
    ...routes,
    // 自定义配置路由 /test ,访问文件 src/views/test.vue
    {
      path: '/test',
      component: () => import('@/views/test.vue')
    }
  ])
})
export default router

5. 创建布局模板

新建文件 src/layouts/default.vue

<template>
  <div>网站标题</div>
  <router-view></router-view>
</template>

新建文件 src/layouts/ECclub.vue

<template>
  <div>EC编程俱乐部</div>
  <router-view></router-view>
</template>

6. 页面中指定布局模板

src/pages/about.vue

<template>
  <div>关于EC俱乐部</div>
</template>

<route lang="yaml">
meta:
  layout: ECclub
</route>
  • 在目标页面底部参考上方范例新增 route 标签
  • layout 的值设定为目标布局模板名称即可!

因在配置中,指定了默认布局模板为 default,所以所有未指定布局模板的页面,都会使用 src/layouts/default.vue 中的布局。

最终效果如下:

  • 路由 /
网站标题
首页
  • 路由 /about
EC编程俱乐部
关于EC俱乐部
 

更多配置和用法见官网

https://www.npmjs.com/package/vite-plugin-vue-layouts



目录
相关文章
|
2天前
|
JavaScript 索引
Vue 2和Vue 3的区别以及实现原理
Vue 2 的响应式系统通过Object.defineProperty来实现,它为对象的每个属性添加 getter 和 setter,以便追踪依赖并响应数据变化。
16 9
|
4天前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
|
2天前
|
JavaScript 调度
Vue3 使用 Event Bus
Vue3 使用 Event Bus
9 1
|
2天前
|
JavaScript
Vue3 : ref 与 reactive
Vue3 : ref 与 reactive
8 1
|
3天前
|
JavaScript
|
3天前
vue3定义暴露一些常量
vue3定义暴露一些常量
|
2天前
Vue3 使用mapState
Vue3 使用mapState
7 0
|
5天前
|
JavaScript 前端开发
vue学习(6)
vue学习(6)
23 9
|
5天前
|
JavaScript 开发者
vue学习(5)
vue学习(5)
20 7
|
2天前
|
JavaScript 前端开发
Vue项目使用px2rem
Vue项目使用px2rem