vue实现路由切换改变title功能

时间:2021-05-26

由于vue项目通常是单页应用,因此在入口文件index.html只有一个title,单页所展示的若干页面只是随着路由的切换而在同一个index.html上不同的渲染而已,因此此时的title属性是不会随着页面的切换而变更的

那么想实现路由切换title变换可以通过vue-router的导航守卫来实现,最简单的的目录结构可如下所示

├── index.html├── main.js├── api│ └── ... # 抽取出API请求├── common│ └── constants.js //title值├── components│ ├── HelloWorld.vue│ ├── Test.vue│ ├── User.vue│ └── ...├── router│ └── index.js

下面主要就是vue-router的内容了,其他页面级别的内容无关紧要

router/index.js内容如下:

import Vue from 'vue'import Router from 'vue-router'import constants from '../common/constants'Vue.use(Router)const router = new Router({ routes: [{ path: '/', name: 'HelloWorld', component: reslove => require(['../components/HelloWorld'], reslove) },{ path: '/hello', name: 'hello', props: {name: 'garrett'}, component: reslove => require(['../components/Test'], reslove) },{ path: '/user', name: 'user', component: reslove => require(['../components/User'], reslove) },{ path: '*', redirect: {name: 'hello'} }]})//导航后置守卫,可以在确定导航到目标页面时再更改titlerouter.afterEach((to, from) => { window.document.title = constants[to.name];})export default router;

在这里使用全局后置守卫来对路由切换进行统一操作,全局前置守卫在正常情况下也可以,但是如果出现导航一半终止掉,会出现页面没有被渲染为目标导航页面,但是title以及被替换掉了,因此这里使用全局后置守卫是相对稳妥的,由上面可以看出实际的关键代码也就三行,其他照旧

constants.js的内容如下:export default{ HelloWorld: '首页', hello: '欢迎页', user: '用户页'}

只是简单将对象导出

总结

以上所述是小编给大家介绍的vue实现路由切换改变title功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章