?1、history?關(guān)鍵字:createWebHistory
import { createRouter, createWebHistory } from 'vue-router'
const routes = [ {
path: '/userinfo',
name: 'UserInfo',
component: () => import('../views/UserInfo.vue')
}]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
?history模式直接指向history對(duì)象,它表示當(dāng)前窗口的瀏覽歷史,history對(duì)象保存了當(dāng)前窗口訪問過的所有頁面網(wǎng)址。URL中沒有#,它使用的是傳統(tǒng)的路由分發(fā)模式,即用戶在輸入一個(gè)URL時(shí),服務(wù)器會(huì)接收這個(gè)請(qǐng)求,并解析這個(gè)URL,然后做出相應(yīng)的邏輯處理。
特點(diǎn):
當(dāng)使用history模式時(shí),URL就像這樣:hhh.com/user/id。相比hash模式更加好看。
雖然history模式不需要#。但是,它也有自己的缺點(diǎn),就是在刷新頁面的時(shí)候,如果沒有相應(yīng)的路由或資源,就會(huì)刷出404來。
history api可以分為兩大部分,切換歷史狀態(tài) 和 修改歷史狀態(tài):
修改歷史狀態(tài):
包括了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法,這兩個(gè)方法應(yīng)用于瀏覽器的歷史記錄棧,提供了對(duì)歷史記錄進(jìn)行修改的功能。只是當(dāng)他們進(jìn)行修改時(shí),雖然修改了url,但瀏覽器不會(huì)立即向后端發(fā)送請(qǐng)求。如果要做到改變url但又不刷新頁面的效果,就需要前端用上這兩個(gè)API。
切換歷史狀態(tài):
包括forward()、back()、go()三個(gè)方法,對(duì)應(yīng)瀏覽器的前進(jìn),后退,跳轉(zhuǎn)操作。
配置:
想要設(shè)置成history模式,就要進(jìn)行以下的配置(后端也要進(jìn)行配置):
const router = new VueRouter({
mode: 'history',
routes: [...]
})
2、hash 關(guān)鍵字:createWebHashHistory
import { createRouter, createWebHashHistory } from 'vue-router'
const routes = [{
path: '/userinfo',
name: 'UserInfo',
component: () => import('../views/UserInfo.vue')
}]
const router = createRouter({
history: createWebHashHistory(),
routes
})
export default router
hash模式是開發(fā)中默認(rèn)的模式,也稱作錨點(diǎn),它的URL帶著一個(gè)#,例如:www.abc.com/#/vue,它的hash值就是#/vue。
特點(diǎn):
hash值會(huì)出現(xiàn)在URL里面,但是不會(huì)出現(xiàn)在HTTP請(qǐng)求中,對(duì)后端沒有影響。所以改變hash值不會(huì)重新加載頁面。
這種模式的瀏覽器支持度很好,低版本的IE瀏覽器也支持這種模式。
hash路由被稱為是前端路由,已經(jīng)成為SPA(單頁面應(yīng)用)的標(biāo)配。
?原理:
?hash模式的主要原理就是onhashchange()事件:
window.onhashchange = function(event){
console.log(event.oldURL, event.newURL);
let hash = location.hash.slice(1);
}
?使用onhashchange()事件的好處就是,在頁面的hash值發(fā)生變化時(shí),無需向后端發(fā)起請(qǐng)求,window就可以監(jiān)聽事件的改變,并按規(guī)則加載相應(yīng)的代碼。除此之外,hash值變化對(duì)應(yīng)的URL都會(huì)被瀏覽器記錄下來,這樣瀏覽器就能實(shí)現(xiàn)頁面的前進(jìn)和后退。雖然是沒有請(qǐng)求后端服務(wù)器,但是頁面的hash值和對(duì)應(yīng)的URL關(guān)聯(lián)起來了。文章來源:http://www.zghlxwxcb.cn/news/detail-593530.html
?獲取頁面hash變化的方法:
?文章來源地址http://www.zghlxwxcb.cn/news/detail-593530.html
// 監(jiān)聽,當(dāng)路由發(fā)生變化的時(shí)候執(zhí)行
watch: {
$route: {
handler: function(val, oldVal){
console.log(val);
},
// 深度觀察監(jiān)聽
deep: true
}
},
到了這里,關(guān)于vue3中路由hash與History的設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!