Vue3中createWebHistory和createWebHashHistory的區(qū)別詳析
前言
Vue3 是目前比較流行的前端框架之一,它提供了很多方便的 API 來幫助我們開發(fā)高效、可維護(hù)的應(yīng)用程序。在使用 Vue Router 進(jìn)行路由管理時,我們可以使用 createWebHistory 和 createWebHashHistory 來創(chuàng)建不同類型的路由模式。本文將介紹這兩種模式的區(qū)別和如何選擇合適的模式。
createWebHistory
createWebHistory 是 Vue Router 提供的一種基于瀏覽器 history API 的路由模式,它使用了 HTML5 中的 history.pushState 和 history.replaceState 方法來實(shí)現(xiàn)路由跳轉(zhuǎn)。這種模式可以使得 URL 更加直觀,而且不會在 URL 中添加任何特殊字符。例如,我們可以將路由設(shè)置為 /home、/about 等等。
使用 createWebHistory 可以通過以下方式創(chuàng)建一個路由:
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 時,需要注意以下幾點(diǎn):
在使用 createWebHistory 時,需要在服務(wù)器端進(jìn)行一些配置。因為使用了 history API,如果直接在瀏覽器中刷新或直接訪問某個路由,服務(wù)器將無法識別該路由,并返回 404 錯誤。因此,需要在服務(wù)器端配置,將所有的路由請求都返回首頁,再由前端代碼進(jìn)行路由的匹配和處理。
createWebHistory 只支持 HTML5 標(biāo)準(zhǔn)瀏覽器,對于老版本的瀏覽器無法使用。
在開發(fā)環(huán)境下,我們需要將 webpack 的 historyApiFallback 屬性設(shè)置為 true,以便在開發(fā)環(huán)境下正常使用路由。
createWebHashHistory
createWebHashHistory 是 Vue Router 提供的一種基于瀏覽器 URL 的 hash 路由模式,它將路由添加到 URL 中的 hash 中,例如:/#/home、/#/about。這種模式可以避免服務(wù)器配置的問題,而且支持所有瀏覽器。但是,由于 URL 中添加了 hash,因此在搜索引擎的 SEO 優(yōu)化中存在一些問題。
使用 createWebHashHistory 可以通過以下方式創(chuàng)建一個路由:
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 頁面刷新變成白頁 解決
Vue使用createWebHistory 頁面刷新變成白頁 解決辦法

hash模式時,項目的根目錄是不變的,而在history模式時,以/開頭的嵌套路徑會被當(dāng)做根據(jù)經(jīng)。
所以更改文件webpack.prod.config.js(publicPath從’./‘更改為’/’)即可解決此問題

總結(jié)
到此這篇關(guān)于Vue3中createWebHistory和createWebHashHistory區(qū)別詳析的文章就介紹到這了,更多相關(guān)createWebHistory和createWebHashHistory區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue框架編輯接口頁面下拉級聯(lián)選擇并綁定接口所屬模塊
這篇文章主要為大家介紹了vue框架編輯接口頁面實(shí)現(xiàn)下拉級聯(lián)選擇以及綁定接口所屬模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
利用Vue3和element-plus實(shí)現(xiàn)圖片上傳組件
element-plus提供了uploader組件,但是不好定制化。所以本文將利用Vue3和element-plus實(shí)現(xiàn)一個圖片上傳的組件,感興趣的可以了解一下2022-03-03
vue+iview 實(shí)現(xiàn)可編輯表格的示例代碼
這篇文章主要介紹了vue+iview 實(shí)現(xiàn)可編輯表格的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
vue.extend實(shí)現(xiàn)alert模態(tài)框彈窗組件
這篇文章主要為大家詳細(xì)介紹了vue.extend實(shí)現(xiàn)alert模態(tài)框彈窗組件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
vue-tree-chart樹形組件的實(shí)現(xiàn)(含鼠標(biāo)右擊事件)
Vue-Tree-Chart,一個Vue.js2組件,本文就詳細(xì)的介紹一下vue-tree-chart樹形組件的實(shí)現(xiàn)(含鼠標(biāo)右擊事件),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Vue項目分環(huán)境打包的實(shí)現(xiàn)步驟
這篇文章主要介紹了Vue項目如何分環(huán)境打包,實(shí)現(xiàn)方法大概分為六步驟,需要的朋友可以參考下2018-04-04

