最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue Router的三種歷史模式應用與對比詳解

 更新時間:2025年10月14日 09:18:39   作者:一只小風華~  
在 Vue.js 單頁應用(SPA)中,vue-router 提供了三種不同的 歷史模式 來管理路由導航和 URL 顯示方式,每種模式適用于不同場景,下面小編就和大家簡單介紹一下吧

核心概覽

在 Vue.js 單頁應用(SPA)中,vue-router 提供了三種不同的 歷史模式 來管理路由導航和 URL 顯示方式。每種模式適用于不同場景,理解其原理與配置是構(gòu)建現(xiàn)代前端應用的關(guān)鍵。

模式創(chuàng)建函數(shù)特點SEO 友好服務器要求
Hash 模式createWebHashHistory()使用 # 分隔真實路徑與路由信息,兼容性好? 不友好
HTML5 模式createWebHistory()正常 URL 形式,美觀且利于 SEO? 友好需要回退配置
Memory 模式createMemoryHistory()不依賴瀏覽器環(huán)境,適合 SSR 和測試環(huán)境?? 視情況

一、Hash 模式(哈希模式)

基本概念

  • 利用 URL 中的 # 后面的部分(即 hash)來模擬頁面跳轉(zhuǎn)。
  • 瀏覽器不會將 # 后的內(nèi)容發(fā)送到服務器,因此無需后端支持。

示例代碼

import { createRouter, createWebHashHistory } from 'vue-router'

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    { path: '/home', component: Home },
    { path: '/about', component: About }
  ]
})

訪問地址如:https://example.com/#/home

優(yōu)點

  • 兼容老版本瀏覽器(IE9+)
  • 無需服務器額外配置
  • 開發(fā)調(diào)試方便

缺點

  • URL 不美觀,帶有 #
  • 對 SEO 不友好(搜索引擎可能忽略 hash 內(nèi)容)

二、HTML5 模式(瀏覽器歷史記錄模式)

 基本概念

使用 HTML5 的 history.pushState() API 實現(xiàn)真實的 URL 路徑。

URL 更加“正常”,例如:https://example.com/user/123

示例代碼

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/user/:id', component: UserComponent }
  ]
})

關(guān)鍵問題:404 錯誤

當用戶直接訪問 /user/123 時,請求會發(fā)送給服務器。如果服務器沒有對應資源,則返回 404。

解決方案:Fallback 回退機制

所有非靜態(tài)資源請求都應返回 index.html,交由前端路由處理。

常見服務器配置示例:

服務器:nginx

配置方法

location / {
  try_files $uri $uri/ /index.html;
}

Apache 

| Express (Node.js) | 使用中間件:

const history = require('connect-history-api-fallback');
app.use(history());

| Firebase Hosting | 在 firebase.json 添加:

{
  "hosting": {
    "rewrites": [
      { "source": "**", "destination": "/index.html" }
    ]
  }
}

| Netlify | 創(chuàng)建 _redirects 文件:

/* /index.html 200

| Vercel | 創(chuàng)建 vercel.json

{ "rewrites": [{ "source": "/:path*", "destination": "/index.html" }] }

優(yōu)點

  • URL 美觀,符合現(xiàn)代 Web 標準
  • 利于 SEO 優(yōu)化
  • 用戶體驗更自然

缺點

  • 必須配合服務器正確配置
  • 配置不當會導致 404

三、Memory 模式(內(nèi)存模式)

基本概念

將路由狀態(tài)保存在內(nèi)存中,不依賴瀏覽器的 URL 或歷史棧。

完全由 JavaScript 控制導航。

示例代碼

import { createRouter, createMemoryHistory } from 'vue-router'

const router = createRouter({
  history: createMemoryHistory(),
  routes: [
    { path: '/login', component: LoginComponent }
  ]
})

// 手動觸發(fā)初始導航(必須?。?
router.push('/login')

適用場景

  • 服務端渲染(SSR)
  • Node.js 后端環(huán)境
  • 單元測試或自動化腳本
  • 移動端 WebView 或 Electron 應用(可選)

注意事項

  • 瀏覽器中無法使用前進/后退按鈕
  • 頁面刷新后路由狀態(tài)丟失
  • URL 不更新,不利于分享

補充知識點:處理 404 頁面

由于 HTML5 模式下所有路徑都被重定向到 index.html,服務器不再返回 404,因此需要在前端實現(xiàn)通用匹配路由。

前端萬能路由配置

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About },
  // 通配符路由必須放在最后
  { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFoundComponent }
]

也可以解構(gòu)參數(shù):

// 訪問 /not-found 時
this.$route.params.pathMatch // "not-found"

更佳實踐(SSR 場景)

在服務端預先用路由器匹配 URL:

  • 匹配成功 → 渲染頁面
  • 匹配失敗 → 返回 HTTP 404 狀態(tài)碼

查看 Vue SSR 文檔 獲取更多細節(jié)。

對比圖表:三種歷史模式一覽表

特性Hash 模式HTML5 模式Memory 模式
是否改變真實 URL否(僅改 hash)
是否需要服務器配置
支持前進/后退否(除非手動模擬)
SEO 友好性取決于上下文
適用環(huán)境瀏覽器瀏覽器瀏覽器 / SSR / 測試 / Node
URL 示例/#/user/1/user/1(無變化)
初始化是否需手動 push?

知識點詳解

下列為解決上述內(nèi)容所涉及的核心知識點:

1.HTML5 History API

通過 $window.history.pushState() 動態(tài)修改 URL 而不刷新頁面,是實現(xiàn) HTML5 模式的基礎。它允許 SPA 擁有“真實”路徑。

2.URL 重寫與回退機制

服務器需配置將所有未命中靜態(tài)資源的請求指向 index.html,從而交由前端路由處理,避免 404 錯誤。

3.通配符路由匹配

使用 /:pathMatch(.*)* 捕獲任意未知路徑,在前端展示 404 頁面,彌補服務器回退帶來的錯誤掩蓋問題。

總結(jié)建議

使用場景推薦模式理由
普通生產(chǎn)環(huán)境 Web 應用? HTML5 模式更好的用戶體驗和 SEO
快速開發(fā)、演示或無后端支持項目? Hash 模式零配置,開箱即用
SSR、測試、Node.js 環(huán)境? Memory 模式獨立于瀏覽器環(huán)境,便于控制
移動 Hybrid 應用?? Hash 或 Memory根據(jù)容器能力選擇

附加提示

若部署在子目錄(如 /my-app/),記得設置 base: '/my-app/'

const router = createRouter({
  history: createWebHistory('/my-app/'),
  routes: [...]
})

構(gòu)建工具(Vue CLI / Vite / Nuxt)通常已集成相關(guān)插件,但仍需手動配置服務器規(guī)則。

使用 CI/CD 部署時,確保 _redirectsvercel.json 等文件包含在構(gòu)建輸出中。

到此這篇關(guān)于Vue Router的三種歷史模式應用與對比詳解的文章就介紹到這了,更多相關(guān)Vue Router歷史模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue 需求 data中的數(shù)據(jù)之間的調(diào)用操作

    vue 需求 data中的數(shù)據(jù)之間的調(diào)用操作

    這篇文章主要介紹了vue 需求 data中的數(shù)據(jù)之間的調(diào)用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue3本地打包啟動出現(xiàn)白屏的解決思路詳解

    Vue3本地打包啟動出現(xiàn)白屏的解決思路詳解

    這篇文章主要為大家詳細介紹了Vue3本地打包啟動時出現(xiàn)白屏的解決思路,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-05-05
  • vue實現(xiàn)標簽云效果的方法詳解

    vue實現(xiàn)標簽云效果的方法詳解

    這篇文章主要介紹了vue實現(xiàn)標簽云效果的方法,結(jié)合實例形式詳細分析了vue標簽云的實現(xiàn)技巧與相關(guān)操作注意事項,需要的朋友可以參考下
    2019-08-08
  • vue2+elementui上傳照片方式(el-upload超簡單)

    vue2+elementui上傳照片方式(el-upload超簡單)

    這篇文章主要介紹了vue2+elementui上傳照片方式(el-upload超簡單),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue項目中常用的實用技巧匯總

    Vue項目中常用的實用技巧匯總

    如果說是JQuery是手工作坊,那么Vue.js就像是一座工廠,雖然Vue.js做的任何事情JQuery都可以做,但無論是代碼量還是流程規(guī)范性都是前者較優(yōu),這篇文章主要給大家匯總介紹了關(guān)于Vue項目中常用的實用技巧,需要的朋友可以參考下
    2021-07-07
  • vue 實現(xiàn)單選框設置默認選中值

    vue 實現(xiàn)單選框設置默認選中值

    今天小編就為大家分享一篇vue 實現(xiàn)單選框設置默認選中值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue+jquery+lodash實現(xiàn)滑動時頂部懸浮固定效果

    vue+jquery+lodash實現(xiàn)滑動時頂部懸浮固定效果

    這篇文章主要為大家詳細介紹了vue+jquery+lodash實現(xiàn)滑動時頂部懸浮固定效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Vue的Props實例配置詳解

    Vue的Props實例配置詳解

    props主要用于組件的傳值,他的工作就是為了接收外面?zhèn)鬟^來的數(shù)據(jù),與data、el、ref是一個級別的配置項,下面這篇文章主要給大家介紹了關(guān)于Vue組件如何設置Props的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 詳解Vuex的屬性和作用

    詳解Vuex的屬性和作用

    這篇文章主要為大家介紹了Vuex的屬性和作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Vue頁面生成PDF的最佳方法推薦

    Vue頁面生成PDF的最佳方法推薦

    公眾中經(jīng)常會有這種場景,一些合同、協(xié)議等的頁面需要進行下載,而且需要和頁面保持一致,下面這篇文章主要給大家介紹了關(guān)于Vue頁面生成PDF的最佳方法,需要的朋友可以參考下
    2022-05-05

最新評論

临猗县| 瑞金市| 湄潭县| 铁岭县| 礼泉县| 广西| 阳东县| 临漳县| 扎鲁特旗| 岫岩| 上饶县| 淅川县| 绥德县| 安岳县| 乡城县| 莫力| 出国| 肃宁县| 莎车县| 旬邑县| 甘洛县| 云梦县| 监利县| 永州市| 铜陵市| 东莞市| 绍兴县| 兰州市| 台湾省| 木兰县| 涞水县| 苗栗县| 浦北县| 保定市| 威海市| 邯郸县| 石河子市| 芷江| 海城市| 老河口市| 博乐市|