一、兩種模式比較
在vue.js中,路由模式分為兩種:hash 模式和 history 模式。這兩種模式決定了URL的結構和瀏覽器歷史記錄的管理方式。
1. hash 模式帶 #,#后面的地址變化不會引起頁面的刷新。換句話說,hash模式不會將#后面的地址帶給服務器。如果是在移動端,帶有#地址的鏈接是無法訪問的。
2. history 模式,沒有#,地址變化會引起頁面刷新,這種模式會將整個地址發送給服務器。在vue項目中,如果設置成了 history模式,在進行路由跳轉時,開始地址是localhost:8081/ , 跳轉后的地址是localhost:8081/employee, 但由于是單頁面,服務器只有一個index頁面,并沒有employee頁面,就會出現404。這種URL更加美觀和友好,但是需要后端配置支持,否則在vue項目中,刷新會導致頁面404
?
二、切換兩種路由模式?
在vue腳手架中,默認是采用hash模式的,但項目上線時,一般都會將其改成history模式。只需要在路由配置文件中設置即可。
import VueRouter from 'vue-router'const router = new VueRouter ({mode: 'history', // 設置為 history 模式routes
})export default router
三、nginx 環境下解決history 404 問題
上面我們知道為什么history模式刷新會出現404問題了,現在我們可以配置 nginx, 如果頁面發生了變化,就讓它返回 index 頁面就好了。
1. 進入到 nginx/config 目錄下
2. 更改配置
location / {try_files $uri $uri/ /index.html;}
3. 重啟服務
./nginx -s reload #重啟