Vue Router是Vue.js官方的路由管理器,它和 Vue.js 的核心深度集成,讓構(gòu)建單頁(yè)面應(yīng)用變得輕而易舉。其中一個(gè)常見(jiàn)需求就是要根據(jù)當(dāng)前路由動(dòng)態(tài)修改網(wǎng)頁(yè)標(biāo)題。Vue Router提供了許多功能,包括動(dòng)態(tài)路由,嵌套路由和過(guò)渡效果等,下面我們將重點(diǎn)探討如何使用Vue Router來(lái)改變網(wǎng)頁(yè)標(biāo)題。
首先,在Vue的項(xiàng)目中,我們需要對(duì)Vue Router進(jìn)行引用和安裝。Vue Router可以通過(guò)npm安裝:
npm install vue-router
安裝完成之后,在Vue項(xiàng)目的入口文件中,我們需要新建一個(gè)router文件夾,然后在其中引入Vue和Vue Router:
import Vue from 'vue' import Router from 'vue-router' Vue.use(Router)
接下來(lái),我們需要在router文件夾中創(chuàng)建一個(gè)index.js文件,用于添加路由規(guī)則和修改網(wǎng)頁(yè)標(biāo)題。首先,我們需要定義路由規(guī)則:
const router = new Router({ mode: 'history', routes: [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', component: About } ] })
這里我們定義了兩個(gè)路由規(guī)則,一個(gè)是路徑為“/”的首頁(yè),另一個(gè)是路徑為“/about”的關(guān)于頁(yè)面。接下來(lái),我們需要設(shè)置修改網(wǎng)頁(yè)標(biāo)題的方法。
router.beforeEach((to, from, next) =>{ document.title = to.meta.title next() })
這里使用了Vue Router提供的beforeEach鉤子函數(shù),在每個(gè)路由跳轉(zhuǎn)前執(zhí)行該函數(shù)。在函數(shù)中,我們可以通過(guò)to對(duì)象獲取即將跳轉(zhuǎn)的路由信息,然后通過(guò)to.meta.title來(lái)獲取路由的標(biāo)題屬性,最后將該屬性值賦給document.title即可。
但有時(shí)候我們的網(wǎng)站需要一個(gè)通用的標(biāo)題,例如公司名稱。我們可以在路由規(guī)則中添加一個(gè)meta對(duì)象,在該對(duì)象中定義一個(gè)通用的標(biāo)題屬性:
const router = new Router({ mode: 'history', routes: [ { path: '/', name: 'Home', component: Home, meta: { title: 'Company Name | Home' } }, { path: '/about', name: 'About', component: About, meta: { title: 'Company Name | About Us' } } ] })
在這個(gè)例子中,我們?cè)趍eta對(duì)象中定義了一個(gè)title屬性,值為“Company Name | xxx”,其中xxx是指每個(gè)頁(yè)面的具體標(biāo)題。這樣在執(zhí)行beforeEach函數(shù)時(shí),我們就可以獲取該title屬性值來(lái)修改網(wǎng)頁(yè)標(biāo)題。
總體來(lái)說(shuō),使用Vue Router來(lái)動(dòng)態(tài)改變網(wǎng)頁(yè)標(biāo)題并不難,只需要通過(guò)beforeEach函數(shù)和路由的meta屬性即可。這個(gè)功能在SEO中也有很大的作用,可以為網(wǎng)站帶來(lái)更好的搜索引擎排名和用戶體驗(yàn)。