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。

推薦閱讀: