前端开发小技巧 - 【Vue】 - 给页面设置 动态标题 和 静态标题

前言

  • 在我们做项目的时候,这肯定是要给项目设置网页标题的,这里设置就分为两种:
    • 静态 网页标题 :
      • 整个项目从始至终就使用一个标题,不随着路径(路由)的变化而变化;
    • 动态 网页标题 :
      • 不同的页面有不同的标题,随着路径(路由)的切换,页面标题需要发生变化;
  • 下面就来说说,我目前知道的几种设置页面标题的方案吧;
    • 后续遇到了别的方式也会补充上的

一、静态标题

1.1 路由守卫中设置

  • ❗ 注意 :

    • 可以在 全局前置守卫 或者 全局后置守卫 中设置;
  • 代码展示:

    ts 复制代码
    // 导入vue-router
    // 实例化路由
    // ...
    
    // 路由前置守卫
    router.beforeEach((to, from) => {
      document.title = '想要设置的标题';
    });
    
    // 全局后置守卫
    router.afterEach((to, from) => {
      documnet.title = '想要设置的标题';
    });

说明:

  • 在这两个钩子函数中设置标题本质上没有太大区别;
  • 唯一的区别就在于:
    • 前置守卫 :
      • 先看到标题,再看到页面;
    • 后置守卫 :
      • 先看到页面,再看到标题;
  • 在一个页面跳转到另一个页面的时候,跳转之前会 对路由进行解析 ,加载异步组件 ,这是一个 耗时 的过程。如果受到网速的影响,页面加载的速度可能有点慢,大家可以根据这点选择在哪个守卫函数中设置标题;

1.2 给Webpack增添配置项设置

  1. 修改 index.html中<title>标签内容:

    html 复制代码
    <title>
      <%= webpackConfig.name %>
    </title>
  2. 设置标题:

    • 在项目的根目录下添加.env文件;

      ini 复制代码
      VUE_APP_TITLE = '天翼云办公工作台'
    • 配置Webpack:

      • 目标文件:
        • vue.config.js;
      js 复制代码
      const { VUE_APP_TITLE } = process.env;
      const name = VUE_APP_TITLE || '默认标题';
      
      module.exports = {
        // ...
      
        configureWebpack: { name }
      
        // ...
      };

1.3 使用插件

  • 适用于 Vue2 项目;
  1. 安装插件

    • npm i vue-wechat-title --save;
  2. 在 main.js 中 导入 并 注册插件 :

    js 复制代码
    import Vue from 'vue';
    import VueWechatTitle from 'vue-wechat-title';
    
    Vue.use(VueWechatTitle);
  3. 给路由添加 meta 属性:

    js 复制代码
    // 举例
    const routes = [
    // ...
    
     {
        path: '/home',
        component: () => import('@/views/Home.index.vue'),
        meta: { title: '首页' }
     },
     
     // ...
    ]
  4. 设置标题:

    html 复制代码
    <router-view v-mechat-title="$router.meta.title" />
  5. 设置完成后,重启项目即可;

说明:

  • 如果遇到不能生效的情况,请大家自行百度一下哈;
  • 这个插件我没使用过😂😂😂;
  • 抱歉哈;

1.4 ❌ 修改index.html中title标签的内容

  • 了解即可;
  • Vue2 项目:
    • 我们可以首手动修改index.html中<title>标签的内容;
    • 文件所在位置:项目/public/index.html;
  • Vue3 项目:
    • 也是可以直接修改index.html中<title>标签的内容;
    • 文件位置:项目/index.html;

二、动态标题

  • 动态标题 :
    • 随着页面的变化,网页的标题也会变化;
  • 要想实现动态标题,就必须借助于路由守卫;
  • ❗ 注意 :
    • 可以在 全局前置守卫 或者 全局后置守卫 中设置;
  1. 给路由添加meta属性;

    ts 复制代码
    import type { RouteRecordRaw } from 'vue-router';
    // 举例
    const routes: RouteRecordRaw[] = [
    // ...
    
    {
       path: '/home',
       component: () => import('@/views/Home.index.vue'),
       meta: { title: '首页' }
    },
    
    // ...
    ]
  2. 在全局守卫中设置标题:

    ts 复制代码
    // 导入vue-router
    // 实例化路由
    // ...
    
    // 路由前置守卫
    router.beforeEach((to, from) => {
      document.title = to?.meat.title || '默认标题';
    });
    
    // 全局后置守卫
    router.afterEach((to, from) => {
      documnet.title = to?.meat.title || '默认标题';
    });

说明:

  • 在这两个钩子函数中设置标题本质上没有太大区别;
  • 唯一的区别就在于:
    • 前置守卫 :
      • 先看到标题,再看到页面;
    • 后置守卫 :
      • 先看到页面,再看到标题;
  • 在一个页面跳转到另一个页面的时候,跳转之前会 对路由进行解析 ,加载异步组件 ,这是一个 耗时 的过程。如果受到网速的影响,页面加载的速度可能有点慢,大家可以根据这点选择在哪个守卫函数中设置标题;
相关推荐
wangruofeng4 小时前
AI Models 1.1.0 发布,查大模型价格、对比模型和找 API 地址
前端·aigc·ai编程
wangruofeng4 小时前
给前端开发者的 100 个设计参考网站
前端·设计
M--Y6 小时前
LangGraph 工作流模式
开发语言·javascript·python·langchain·大模型·llm·langgraph
星栈7 小时前
视频即代码,Remotion 能做什么、不能做什么
前端·音视频开发
广州华水科技7 小时前
单北斗GNSS位移监测系统的应用与技术解析
前端
用户47949283569157 小时前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
风骏时光牛马10 小时前
生成一个AI多模态标题,仅输出一条标题,无额外文字、问句、备选、配图、文案等任何附加内容,不需要其他的任务服务 只要标题。
前端
wangruofeng10 小时前
从 GIF 到 AVIF:网页图片格式演进与 2026 年选型指南
前端·架构
清晨Coding11 小时前
为什么用 React Developer Tools 查看组件树这么乱?
前端·react.js
johnjincaaaa11 小时前
猿人学第 18 题「jsvmp 洞察先机」逆向通关实录
javascript·后端