vue中使用路由改瀏覽器標題和圖標
路由改瀏覽器標題和圖標
第一種方法:設置瀏覽器標題
router/index.js
第二種方法:設置瀏覽器標題和圖標
public/index.html
創(chuàng)建路由,隨路由顯示網(wǎng)頁標題
從一個空白頁開始創(chuàng)建路由,網(wǎng)頁標題隨路由進行改變。
先看一下效果,結(jié)尾有彩蛋
一、創(chuàng)建一個新的vue項目
把vue給我們設置的原始頁面home頁和about頁及其路由刪掉,留下空白頁,可以看到我這里的網(wǎng)頁標題是我項目的名字,路由呢也是起始路由,沒有頁面。
二、路由映射的就是頁面
所以先要創(chuàng)建我們需要的頁面,vue的項目下views是放我們的頁面,一個首頁home,一個展示頁面show。
三、接下來就是創(chuàng)建我們這兩個頁面所需要的路由
vue項目下的router是創(chuàng)建頁面路由的地方,我們可以采取路由分模塊的形式,引入到router根目錄下的index。
代碼 ,show.js也是如此
//首頁路由, 及其匯總 export default { path:"/home", //路由的路徑,會顯示在地址欄 name:"home", //路由的名稱,后期項目做起來直接拿名稱比較方便 meta:{ //路由元信息 title:'首頁', //拿取當前路由的title //這里邊還可設置其他的狀態(tài),比如登錄的標志,路由是否緩存的標志 }, component: () => import ("@/views/Home"), //路由映射的頁面 }
說一下,這里為什么要這樣引入組件,采取了一種路由懶加載的模式,官網(wǎng)也有說哈, 有的人會直接放一個頁面路徑,比如這樣:component:"@/views/Home", 或者在上面 import Home from"@/views/Home" 進來,component:Home,
這樣也不是不可以只是項目大了加載會慢,
官網(wǎng)原話,當打包構(gòu)建應用時,JavaScript 包會變得非常大,影響頁面加載。如果我們能把不同路由對應的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應組件,這樣就更加高效了。
引入到router根目錄下的index.js
import Vue from 'vue' import VueRouter from 'vue-router' import home from "./home.js"; import show from "./show.js"; Vue.use(VueRouter) const routes = [ {path:"/", redirect:"home"}, //啟動項目重定向到home頁面 home, show, //分路由進入后在這里注冊一下 ] const router = new VueRouter({ mode: 'history', //分為hash和history模式,默認是history,history帶#號,hash模式需要后臺進行配置 routes }) export default router
四、渲染路由
<template> <div id="app"> <router-link v-for="i in nav" :key="i.title" :to='i.path'>{{i.title}}</router-link> <router-view /> </div> </template> <script> export default { data(){ return { nav:[ {title:'首頁', path:'/home'}, {title:'展示頁', path:'/show'}, ] } } } </script>
vue提供了兩種存在歷史記錄的路由跳轉(zhuǎn),router-link聲明式導航(就是寫在標簽里的),必須屬性to,要跳轉(zhuǎn)的路由;router.push(),編程式導航(就是寫在方法里的),router.push( ’ 路徑 ’ ) 或者 router.push({path: ’ 路徑 ’ , query:‘攜帶的參數(shù)’}),這里我沒有聲明這個路由是動態(tài)路由,但是依舊可以攜帶參數(shù),
五、隨路由切換改變網(wǎng)頁標題
其實這里有兩種辦法,前置和后置的路由守衛(wèi)
前置的,在main.js頁面使用,直接插入代碼就可以了
router.beforeEach((to, from, next) => { if (to.meta.title) { document.title = to.meta.title } next() })
后置的,在router根目錄下的index.js使用
import Vue from 'vue' import VueRouter from 'vue-router' import home from "./home.js"; import show from "./show.js"; Vue.use(VueRouter) const routes = [ {path:"/", redirect:"home"}, //啟動項目重定向到home頁面 home, show, //分路由進入后在這里注冊一下 ] const router = new VueRouter({ mode: 'history', //分為hash和history模式,默認是history,history帶#號,hash模式需要后臺進行配置 routes, }) router.afterEach((to, from) => { if (to.meta.title) { document.title = to.meta.title } }) export default router
其實區(qū)別不大,唯一的區(qū)別就是后置的比較保險一點,前置的是還沒有渲染頁面,路由一旦終止掉,頁面還沒有進入,網(wǎng)頁標題就已經(jīng)顯示了,后置的是路由完全進入后,才會顯示網(wǎng)頁標題??醋约盒枰伞?/p>
六、創(chuàng)建子路由
例如創(chuàng)建home下的子路由,步驟和創(chuàng)建路由一樣,
在home下創(chuàng)建里兩個頁面。
在home的路由下創(chuàng)建homepage1和homepage2的子路由
再去把這兩個頁面渲染出來
插一個小知識:
路由的redirect是可以寫成一個函數(shù)的,當你有兩套頁面,根據(jù)身份id標識來進入到不同的頁面,比如我登錄了要進入個人中心,個人中心有會員和工作人員,個人信息的頁面不一樣,但是都要進來就要顯示個人信息頁,這時redirect就可以這樣寫;
引入store 把標識放到store中管理
判斷一下用戶的身份標識,根據(jù)標識重定向到什么頁面
redirect: to => { if('id標識'){ return "路由路徑" }else if('id標識'){ return "路由路徑" } }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
登錄頁面的實現(xiàn)及跳轉(zhuǎn)代碼實例(vue-router)
在Vue.js中可以使用vue-router來實現(xiàn)前端路由,通過路由來跳轉(zhuǎn)頁面,這篇文章主要給大家介紹了關于登錄頁面的實現(xiàn)及跳轉(zhuǎn)(vue-router)的相關資料,需要的朋友可以參考下2023-12-12Vuex持久化插件(vuex-persistedstate)解決刷新數(shù)據(jù)消失的問題
這篇文章主要介紹了Vuex持久化插件(vuex-persistedstate)-解決刷新數(shù)據(jù)消失的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04vue動態(tài)綁定class選中當前列表變色的方法示例
這篇文章主要介紹了vue動態(tài)綁定class選中當前列表變色的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12