Vue设置document.title浏览器标题名字处理方案

Vue单页面,设置下根据路由变化,自动显示对应页面名字。

  • 方案一:使用路由守卫 router.beforeEach、router.afterEach
  • 方案二:在App.vue使用watch监听路由变化
  • 方案三:在App.vue使用组件传值来更新
  • 方案四:使用vue-wechat-title插件
  • 方案五:每个组件页面的钩子函数:created 或 mouted中处理(太蠢,不建议)

配置路由文件中 meta.title

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => import('../views/Home.vue'),
    meta: { title: '首页' }
  },
  {
    path: '/about',
    name: 'About',
    component: () => import('../views/About.vue'),
    meta: { title: '关于' }
  }
]

const router = new VueRouter({
  mode: 'history', // history模式需要服务器配置(找运维或后端配置可开)
  base: process.env.BASE_URL,
  routes
})

export default router

.

方案一:路由守卫 router.beforeEach、router.afterEach

1.新建 路由守卫管理文件

src / router / handle.js (目录自己找个地方放)

import router from './index';

// beforeEach、afterEach二选一
// router.beforeEach((to, from, next) => {
//   document.title = to.meta?.title || '默认页面名';
//   next(); // 必须要,否则不执行跳转
// })

// beforeEach、afterEach二选一
router.afterEach((to, from, next) => {
  document.title = to.meta?.title;
})

2.main.js中引用

引用到 对应路由守卫文件就行,不必保持一致

// 引用路由守卫
import './router/handle'

.

方案二:在App.vue使用watch监听路由变化

对,你没看错,App.vue 也能改造的。

<script>
export default {
  watch: {
    $route(to, from) {
      document.title = to.meta?.title || '默认页面名';
    },
  },
};
</script>

.

方案三:在App.vue使用组件传值来更新

testKey、testVal 自己随意起名字。代码仅是案例

<template>
  <div id="app">
    <router-view :testKey="testVal" />
  </div>
</template>

<script>
export default {
  computed: {
    testVal(){
      document.title = this.$route.meta?.title || '默认页面名';
      return Math.random() * 1e18;
    }
  }
};
</script>

.

方案四:使用vue-wechat-title插件

1.安装:

//安装命令
npm install --save vue-wechat-title
或
yarn add vue-wechat-title

2.main.js中引用

Vue.use(require('vue-wechat-title'))

3.优化多次渲染(非必须)

src / App.vue中:

<template>
  <div id="app">
    <!-- 原先 <router-view/> -->
    <router-view v-wechat-title='$route.meta.title'/>
  </div>
</template>

方案五:每个组件页面的钩子函数:created 或 mouted中处理

非常蠢笨 - 不建议用

created() {
    document.title='这是页面名';  
 },

.

好了,到此结束。常规的就这几种,有问题留言。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要动态修改`vue.config.js`中配置的浏览器页面标题,你需要在Vue项目的组件中使用Vue Router或直接操作`document.title`来更新页面标题。 以下是两种常用的方法: 1. 使用Vue Router: 在Vue项目中,你可以使用Vue Router来管理路由和页面标题。在每个路由定义中,你可以使用`meta`字段来设置页面标题。然后,在路由切换时,你可以在路由导航守卫中动态更新页面标题。 首先,在`vue.config.js`中配置Vue Router时,确保启用了history模式: ```javascript module.exports = { // ...其他配置 devServer: { historyApiFallback: true } }; ``` 然后,在每个路由定义中,使用`meta`字段设置页面标题: ```javascript const routes = [ { path: '/', name: 'Home', component: Home, meta: { title: '首页' } // 设置页面标题为 '首页' }, // 其他路由定义 ]; ``` 最后,在你的Vue组件中,使用Vue Router提供的导航守卫(如`beforeEach`)来更新页面标题: ```javascript import router from '@/router'; // 引入Vue Router实例 router.beforeEach((to, from, next) => { document.title = to.meta.title || '默认标题'; // 根据路由的meta字段设置页面标题,如果没有设置则使用默认标题 next(); }); ``` 2. 直接操作`document.title`: 如果你不使用Vue Router,或者不需要在每个路由中设置页面标题,你可以直接在组件中操作`document.title`来动态修改页面标题。 在组件的生命周期钩子函数(如`mounted`)中,使用`document.title`来更新页面标题: ```javascript export default { mounted() { document.title = '动态标题'; } } ``` 这样,当组件被挂载到DOM中时,页面标题就会被设置为指定的值。 希望这些方法能帮到你!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值