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

news2024/11/23 4:59:37

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

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

显然这是非常低效的,通过全局布局 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1869409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm terminal终端不能激活 conda 虚拟环境,解决方法

# 1. 确保执行策略已更改 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser# 2. 初始化Conda conda init powershell# 3. 重启PowerShell# 4. 验证Conda初始化 conda --version# 5. 激活Conda环境 conda activate shi_labelme关闭所有的终端&#xff0c;然后重新打开新的终…

算法力扣刷题记录六【203移除链表元素】

前言 链表篇&#xff0c;开始。 记录六&#xff1a;力扣【203移除链表元素】 一、数据结构——链表 来源【代码随想录】&#xff0c;总结&#xff1a; &#xff08;1&#xff09;线性结构。内存地址不连续&#xff0c;通过指针指向串联一起。 &#xff08;2&#xff09;链表类…

互联网企业出海不得不面对的安全问题

在出海的互联网企业中&#xff0c;为什么游戏、电商企业总是被“D”&#xff1f;究其内因&#xff0c;这或与游戏和电商等业务的商业模式和技术应用有较大的关系。 首先&#xff0c;对于游戏和电商等行业而言&#xff0c;良好的用户体验是业务增长的关键点。对于普通用户而言&a…

当大模型开始「考上」一本

参加 2024 河南高考&#xff0c;豆包和文心 4.0 过了一本线&#xff0c;但比 GPT-4o 还差点。 今天的大模型&#xff0c;智力水平到底如何&#xff1f; 2024 年高考陆续出分&#xff0c;我们想要解开这个过去一年普罗大众一直争论不休的话题。高考是衡量人类智力和学识水平的…

鸿蒙:自定义组件、自定义函数、自定义样式

一、自定义组件 1.新建组件文件夹&#xff0c;新建自定义组件文件 . 2.编辑自定义组件&#xff0c;并通过 Component //声明组件 export struct PageHeader { //结构体private title: stringbuild() { //uiRow() {Image($rawfile(左返回.png)).width(15%)Text(this.title)…

C++实现一个简单的Qt信号槽机制

昨天写这个文章《深入探讨C的高级反射机制&#xff08;2&#xff09;&#xff1a;写个能用的反射库》的时候就在想&#xff0c;是不是也能在这套反射逻辑的基础上&#xff0c;实现一个类似Qt的信号槽机制&#xff1f; Qt信号槽机制简介 所谓的Qt的信号槽&#xff08;Signals …

吉时利 Keithley2461 数字源表

Keithley2461吉时利SMU高电流数字源表 2461 型图形化高电流数字 SourceMeter SMU 2461 高电流 SMU 凭借其 10A/1000W 脉冲电流和 7A/100W 直流电流能力以及双 18 位 1MS/s 数字转换器&#xff0c;优化用于检定和测试高功率材料、器件和模块&#xff0c;例如碳化硅 (SiC)、氮化…

WIFI各版本的带宽

带宽的定义&#xff1a; 带宽在网络领域通常指信道带宽&#xff0c;即信号在频谱中占用的频宽&#xff0c;单位是MHz&#xff08;兆赫&#xff09;。在无线通信中&#xff0c;带宽越宽&#xff0c;能够传输的数据量越大&#xff0c;因此信道带宽直接影响着数据传输速率。WiFi标…

LeetCode刷题之HOT100之岛屿数量

2024 6/27 酷暑难耐&#xff0c;天气热了&#xff0c;似乎更容易午睡了。上午上了cnn最后一节课。睡一觉买一杯蜜雪冰城&#xff0c;坐在舒适的实验室敲击键盘&#xff0c;做题&#xff01; 1、题目描述 2、逻辑分析 是的&#xff0c;又是直奔题解的一天哈&#xff01;题解给…

基于MATLAB仿真设计无线充电系统

通过学习无线充电相关课程知识&#xff0c;通过课程设计无线充电系统&#xff0c;将所学习的WPT&#xff0c;DC-DC&#xff0c;APFC进行整合得到整个无线充电系统&#xff0c;通过进行仿真研究其系统特性&#xff0c;完成我们预期系统功能和指标。 以功率器件为基本元件&#x…

鸿蒙Harmony开发案例教程:如何进行蓝牙设备发现、配对、取消配对功能

如何进行蓝牙连接 场景说明 蓝牙技术是一种无线数据和语音通信开放的全球规范&#xff0c;它是基于低成本的近距离无线连接&#xff0c;为固定和移动设备建立通信环境的一种特殊的连接。本示例通过ohos.bluetoothManager接口实现蓝牙设备发现、配对、取消配对功能。 效果呈现…

《Nest系列 - 4. 听说人人都会CRUD,可是我还不会怎么办???-《4.3结合前端使用实现多表联合查询》

&#x1f351; 联合查询 在我们前端来说&#xff0c;会抽离一些公用组件。不会把重复的组件或者所有代码都放在一个文件夹下。对于后端来说&#xff0c;也是一样的&#xff0c; 我们不会把所有数据都放在一张表里&#xff0c;我们回进行分表&#xff0c;根据一些关联关系&…

为什么说展厅数字人是展览未来的趋势?

展厅数字人是利用数字化、智能化和网络化等信息技术手段提升展厅展览服务和游览体验的全新载体。随着人工智能和虚拟现实技术的应用发展&#xff0c;展厅数字人已成为展厅展览转型升级的重要趋势。 展厅数字人凭借其创新性、强可塑性&#xff0c;成为展厅新名片&#xff0c;为各…

数据库工具之 —— SQLite

数据库工具之 —— SQLite SQLite 是一个非常流行的轻量级数据库&#xff0c;它是一个嵌入式的数据库&#xff0c;意味着数据库文件是存储在磁盘上的一个单一文件。SQLite 不需要一个独立的服务器进程&#xff0c;这使得它非常适合用于小型应用、移动应用、桌面应用&#xff0…

阿里云centos7.9 挂载数据盘 并更改宝塔站点根目录

一、让系统显示中文 参考&#xff1a;centos7 怎么让命令行显示中文&#xff08;英文-&#xff1e;中文&#xff09;_如何在命令行中显示中文-CSDN博客 1、输入命令&#xff1a;locale -a |grep "zh_CN" 可以看到已经存在了中文包 2、输入命令&#xff1a;sudo vi…

Django REST framework安全实践:轻松实现认证、权限与限流功能

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff1…

ROT5、ROT13、ROT18、ROT47全系列加解密小程序

ROT5、ROT13、ROT18、ROT47全系列加解密小程序 这几天在看CTF相关的课程&#xff0c;涉及到古典密码学和近代密码学还有现代密码学。自己编了一个关于ROT全系列的加、解密小程序。 ​ ROT5、ROT13、ROT18、ROT47 编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性&a…

use embeddings stored in vector db to reduce work for LLM generating response

题意&#xff1a;使用存储在向量数据库中的嵌入来表示&#xff0c;以减少大型语言模型&#xff08;LLM&#xff09;生成响应的工作量。 问题背景&#xff1a; Im trying to understand what the correct strategy is for storing and using embeddings in a vector database, …

计算机网路面试HTTP篇三

HTTPS RSA 握手解析 我前面讲&#xff0c;简单给大家介绍了的 HTTPS 握手过程&#xff0c;但是还不够细&#xff01; 只讲了比较基础的部分&#xff0c;所以这次我们再来深入一下 HTTPS&#xff0c;用实战抓包的方式&#xff0c;带大家再来窥探一次 HTTPS。 对于还不知道对称…

海报在线制作系统源码小程序

轻松设计&#xff0c;创意无限 一款基于ThinkPHPFastAdminUniApp开发的海报在线制作系统&#xff0c; 本系统不包含演示站中的素材模板资源。​ 一、引言&#xff1a;设计新纪元&#xff0c;在线海报制作引领潮流 在数字时代&#xff0c;海报已成为传播信息、展示创意的重要媒…