Vue3中createWebHistory和createWebHashHistory的區(qū)別詳析
前言
Vue3 是目前比較流行的前端框架之一,它提供了很多方便的 API 來(lái)幫助我們開(kāi)發(fā)高效、可維護(hù)的應(yīng)用程序。在使用 Vue Router 進(jìn)行路由管理時(shí),我們可以使用 createWebHistory 和 createWebHashHistory 來(lái)創(chuàng)建不同類型的路由模式。本文將介紹這兩種模式的區(qū)別和如何選擇合適的模式。
createWebHistory
createWebHistory 是 Vue Router 提供的一種基于瀏覽器 history API 的路由模式,它使用了 HTML5 中的 history.pushState 和 history.replaceState 方法來(lái)實(shí)現(xiàn)路由跳轉(zhuǎn)。這種模式可以使得 URL 更加直觀,而且不會(huì)在 URL 中添加任何特殊字符。例如,我們可以將路由設(shè)置為 /home、/about 等等。
使用 createWebHistory 可以通過(guò)以下方式創(chuàng)建一個(gè)路由:
import { createRouter, createWebHistory } from 'vue-router' import Home from '@/views/Home.vue' import About from '@/views/About.vue' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/home', name: 'home', component: Home }, { path: '/about', name: 'about', component: About } ] })
在使用 createWebHistory 時(shí),需要注意以下幾點(diǎn):
在使用 createWebHistory 時(shí),需要在服務(wù)器端進(jìn)行一些配置。因?yàn)槭褂昧?history API,如果直接在瀏覽器中刷新或直接訪問(wèn)某個(gè)路由,服務(wù)器將無(wú)法識(shí)別該路由,并返回 404 錯(cuò)誤。因此,需要在服務(wù)器端配置,將所有的路由請(qǐng)求都返回首頁(yè),再由前端代碼進(jìn)行路由的匹配和處理。
createWebHistory 只支持 HTML5 標(biāo)準(zhǔn)瀏覽器,對(duì)于老版本的瀏覽器無(wú)法使用。
在開(kāi)發(fā)環(huán)境下,我們需要將 webpack 的 historyApiFallback 屬性設(shè)置為 true,以便在開(kāi)發(fā)環(huán)境下正常使用路由。
createWebHashHistory
createWebHashHistory 是 Vue Router 提供的一種基于瀏覽器 URL 的 hash 路由模式,它將路由添加到 URL 中的 hash 中,例如:/#/home、/#/about。這種模式可以避免服務(wù)器配置的問(wèn)題,而且支持所有瀏覽器。但是,由于 URL 中添加了 hash,因此在搜索引擎的 SEO 優(yōu)化中存在一些問(wèn)題。
使用 createWebHashHistory 可以通過(guò)以下方式創(chuàng)建一個(gè)路由:
import { createRouter, createWebHashHistory } from 'vue-router' import Home from '@/views/Home.vue' import About from '@/views/About.vue' const router = createRouter({ history: createWebHashHistory(), routes: [ { path: '/home', name: 'home', component: Home },
補(bǔ)充:Vue使用createWebHistory 頁(yè)面刷新變成白頁(yè) 解決
Vue使用createWebHistory 頁(yè)面刷新變成白頁(yè) 解決辦法
hash模式時(shí),項(xiàng)目的根目錄是不變的,而在history模式時(shí),以/開(kāi)頭的嵌套路徑會(huì)被當(dāng)做根據(jù)經(jīng)。
所以更改文件webpack.prod.config.js(publicPath從’./‘更改為’/’)即可解決此問(wèn)題
總結(jié)
到此這篇關(guān)于Vue3中createWebHistory和createWebHashHistory區(qū)別詳析的文章就介紹到這了,更多相關(guān)createWebHistory和createWebHashHistory區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何去掉ElementUI Table的hover變色問(wèn)題
這篇文章主要介紹了如何去掉ElementUI Table的hover變色問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue框架編輯接口頁(yè)面下拉級(jí)聯(lián)選擇并綁定接口所屬模塊
這篇文章主要為大家介紹了vue框架編輯接口頁(yè)面實(shí)現(xiàn)下拉級(jí)聯(lián)選擇以及綁定接口所屬模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05利用Vue3和element-plus實(shí)現(xiàn)圖片上傳組件
element-plus提供了uploader組件,但是不好定制化。所以本文將利用Vue3和element-plus實(shí)現(xiàn)一個(gè)圖片上傳的組件,感興趣的可以了解一下2022-03-03vue+iview 實(shí)現(xiàn)可編輯表格的示例代碼
這篇文章主要介紹了vue+iview 實(shí)現(xiàn)可編輯表格的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10vue.extend實(shí)現(xiàn)alert模態(tài)框彈窗組件
這篇文章主要為大家詳細(xì)介紹了vue.extend實(shí)現(xiàn)alert模態(tài)框彈窗組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04uniapp嵌套webview無(wú)法返回上一級(jí)解決方式
uniapp是一款非常強(qiáng)大的跨平臺(tái)開(kāi)發(fā)框架,它可以讓我們只編寫一份代碼,就能在多個(gè)平臺(tái)上運(yùn)行,這篇文章主要給大家介紹了關(guān)于uniapp嵌套webview無(wú)法返回上一級(jí)的解決方式,需要的朋友可以參考下2024-05-05vue-tree-chart樹(shù)形組件的實(shí)現(xiàn)(含鼠標(biāo)右擊事件)
Vue-Tree-Chart,一個(gè)Vue.js2組件,本文就詳細(xì)的介紹一下vue-tree-chart樹(shù)形組件的實(shí)現(xiàn)(含鼠標(biāo)右擊事件),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Vue項(xiàng)目分環(huán)境打包的實(shí)現(xiàn)步驟
這篇文章主要介紹了Vue項(xiàng)目如何分環(huán)境打包,實(shí)現(xiàn)方法大概分為六步驟,需要的朋友可以參考下2018-04-04