面試題:VueRouter中的 hash 模式和 history 模式有什麼區別
面試題:VueRouter中的 hash 模式和 history 模式有什麼區別
hash模式
- hash 模式的路由中帶有
#
號 - hash 模式通過
window.onhashchange
方法監聽路由的修改 - hash 模式在頁面重新整理的時候,傳送的請求 url 是不帶 # 後面的內容的
- hash 模式可以相容部分低版本的瀏覽器
- hash 模式打包後,直接在瀏覽器中開啟
/dist/index.html
可以正常的訪問(原因是第 3 條指出的原因)
history模式
- history 模式是使用正常的 url 路徑顯示
- history 模式通過
pushState
和replaceState
方式修改路由改變 - history 模式在頁面重新整理的時候,會請求當前位址列中完成的 url,這時需要伺服器對這個 url 有處理,如果沒有對應的檔案,需要返回 index.html
- history 模式因為是使用的 HTML5 的新規範,所以不能相容低版本的瀏覽器
- history 模式打包後,直接在瀏覽器中開啟
/dist/index.html
會報錯(原因是第 3 條指出的原因)
其他注意事向
- 有些 App 的分享是不支援
#
的,所以不能使用hash
模式
總結
區別 | hash模式 | history模式 |
---|---|---|
位址列表現 | 帶著 # 號 | 標準的 url 格式,不帶 # |
路由跳轉的實現 | window.onhashchange 監聽 hash 的改變 | pushState 或者 replaceState Api改變路由 |
頁面重新整理 | 請求的地址中不攜帶 # 後面的內容,所以不需要後端的配合,也不會出現 404 | 請求的是當前地址的完整路徑,需要伺服器做特殊處理,否則會出現 404 |
相容性 | 可以相容一些低版本的瀏覽器 | 不相容低版本瀏覽器 |
相關文章
- Vue-router 中hash模式和history模式的區別Vue模式
- Standards模式和Quirks模式有什麼區別?模式UI
- 前端框架路由實現的Hash和History兩種模式的區別前端框架路由模式
- 手寫vueRouter-Hash模式Vue模式
- 前端路由原理之 hash 模式和 history 模式前端路由模式
- hash和history路由的區別路由
- vue-router的hash模式和history模式詳解Vue模式
- 前端路由: hash & history 模式前端路由模式
- 面試題: Webpack 的 plugin 和 loader 有什麼區別面試題WebPlugin
- 面試題總結:Queue 中 poll()和 remove()有什麼區別?面試題REM
- Vue的mode中 hash 與 history 的區別Vue
- history與hash路由的區別路由
- 【Java面試】IO和NIO有什麼區別?Java面試
- java面試題之Thread的run()和start()方法有什麼區別Java面試題thread
- 【Java面試】Mybatis中#{}和${}的區別是什麼?Java面試MyBatis
- 測試面試題:cookie/session/token 分別表示什麼意思,有什麼區別?面試題CookieSession
- 面試官:react和vue有什麼區別嗎?面試ReactVue
- 多執行緒面試題之sleep()和wait()方法有什麼區別?執行緒面試題AI
- 面試官:Java的重寫和過載有什麼區別?面試Java
- 面試— !Doctype的作用,嚴格模式和混雜模式的區別、以及如何觸發兩種模式面試模式
- MVC模式和MVP模式的區別MVC模式MVP
- 面試突擊:MVCC 和間隙鎖有什麼區別?面試MVC
- 「每天一道面試題」sleep方法和wait方法有什麼區別?面試題AI
- 工廠模式和抽象工廠的區別是什麼?模式抽象
- #如何看待問“a = a + b和a += b有什麼區別”的Java面試官?Java面試
- vue-cli多頁面history模式-問題解答Vue模式
- WPF中的StaticResource和DynamicResource有什麼區別
- react history模式下的白屏問題React模式
- php中const和define有什麼區別PHP
- 面試官:BIO、NIO、AIO是什麼,他們有什麼區別?面試AI
- python中的列表和元組有什麼區別Python
- JavaScript 中的 Var,Let 和 Const 有什麼區別JavaScript
- zabbix被動模式和主動模式的區別模式
- Android面試題之Android中的設計模式Android面試題設計模式
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- iOS面試題-load 和 initlize的區別iOS面試題
- nginx面試題-nginx和apache的區別Nginx面試題Apache
- C# 中List中的Count和Count(),有什麼區別C#