日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

vue-router 去掉#

發布時間:2023/12/13 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 vue-router 去掉# 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  注:假設你的項目訪問地址為 http://www.a.com/test

  vue-router默認的路由模式是hash,我們要去掉url中的#需要將路由模式切換為history

const router = new VueRouter({
 base: 'test', // 如果項目項目在 域名 根據目錄下,則去掉這行 mode: 'history', ... })

  這樣子,url中的#就可以去掉了,在開發環境下不會出問題,部署上線后點擊正常,但是...你一旦手動點擊瀏覽器的刷新按鈕,頁面顯示nginx的404頁面。

  怎么解決呢?在vue-router官網有說明:這種模式還需要后臺配置支持。因為我們的應用是個單頁客戶端應用,如果后臺沒有正確的配置,當用戶在瀏覽器直接訪問http://oursite.com/user/id就會返回 404,這就不好看了。

  所以呢,你要在服務端增加一個覆蓋所有情況的候選資源:如果 URL 匹配不到任何靜態資源,則應該返回同一個index.html頁面,這個頁面就是你 app 依賴的頁面。我們線上的服務器用的是nginx,需要改為下面的配置:

location ^~/test {
     alias   D:/project/card-web/code/dist/;
     try_files  $uri $uri/ @card;
 }
        
 location @card {
     rewrite ^/(test)/(.+)$ /$1/index.html last;
 }
      
# 項目部署在服務器/下
(訪問地址:http://www.a.com)
 location / {
     root   D:/project/card-web/code/dist/;
     try_files $uri $uri/ /index.html;
 }

  這樣子,無論你怎么刷新頁面都不會報404了。。。賊開心。。。如果你是用vue-cli創建的工程的話,你可能會在線上看到報錯:所有的靜態資源都返回的 index.html 文件 , css或者js請求失敗

  默認的靜態資源生產環境構建配置應該為:

// config/index.js
build : {
    assetsPublicPath: "./"  
}

  上述nginx配置的意思就是說以test 開頭的路徑都會返回index.html,而我們構建時的靜態資源還是相對位置(相對于index.html的位置),如果我們把靜態資源都是設置為根路徑(以 / 開頭),瀏覽器會直接從域名根路徑開始請求(相對于域名的位置),請求的靜態資源路徑nginx就能找到,就不用rewrite,

所以我們修改如下:

// config/index.js
build : {
    assetsPublicPath: "/test/", // 如果項目項目在 域名 根據目錄下,則為 "/"
}

總結:

請求靜態資源nginx直接返回,www.baidu.com/test/a/b 等這種路徑nginx統一返回 index.html

我們在工程引用靜態資源(css或者圖片)需要使用相對路徑,如果在js中引用需要require()引用

總結

以上是生活随笔為你收集整理的vue-router 去掉#的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。