Vue實現hash模式網址方式(就是那種帶#的網址、井號url)
Vue實現hash模式網址
src\js\main.js
... const router = new VueRouter({ ... mode: 'hash', //hash模式網址,帶#井號 // mode: 'history', // 這裡存在一個弊端,如果要去掉路由的#號,需要後端配合配置,否則刷新頁面就會報錯404,反正如果不是非得要做支付建議不用這個參數配置,參考文檔:https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90 ... }); ...
hash模式下網址形如
- http://127.0.0.1/#/home
- http://localhost/#/home
Vue路由中hash模式
import Vue from 'vue' import Router from 'vue-router' import { router } from './router/index' Vue.use(Router) export default new Router({ mode: 'history', // mode: 'hash', base: process.env.BASE_URL, scrollBehavior: () => ({ y: 0 }), routes: router })
模式一:mode:‘hash’
hash —— 即地址欄 URL 中的 # 符號
模式二:mode:‘history’
一般場景下,hash 和 history 都可以,除非你更在意顏值,# 符號夾雜在 URL 裡看起來不美觀。
使用 history 模式時,URL 就像正常的 url,不過這種模式還需要後臺配置支持。
問題:
開發環境下,路由不管選用hash模式還是history模式都不會出問題,但打包後放在服務器上history模式會出現頁面一片空白的情況,而且沒有資源加載錯誤的報錯信息.。
原因:
1、後臺配置支持是否支持:history,是需要後臺配置支持的。原理是要在服務端增加一個覆蓋你的路由內所有情況的候選資源,如果 URL 匹配不到任何候選資源,則定位到打包好的 index.html 頁面,這個頁面就是你 app 依賴的頁面。
後端配置鏈接:https://router.vuejs.org/zh/guide/essentials/history-mode.html
2、前端配置:
router/index.js
export default new Router({ mode: 'history', // mode: 'hash', base: '/WebTest/Vue/bigscreen/dist', routes: router })
mode配置成hostory
如果項目代碼直接放在服務器的根目錄, 那麼是沒有問題的,base不需要配置。如果項目代碼是放在服務器的子目錄,需要加一個base配置項,裡面配置項目代碼在服務器內的路徑。
【我的代碼放在/WebTest/Vue/bigscreen】
**vue.config.js**
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- vue-router如何實現history模式配置
- Vue 前端路由工作原理hash與history的區別
- vue打包後出現空白頁的原因及解決方式詳解
- 關於vue項目部署後刷新網頁報404錯誤解決
- Vue中Router路由兩種模式hash與history詳解