vue 項目地址去掉 #

vue-router 設(shè)置 history 模式

vue 項目往往會搭配 vue-router 官方路由管理器,它和 vue.js 的核心深度集成,讓構(gòu)建單頁面應(yīng)用變得易如反掌。vue-router 默認為 hash 模式,使用 URL 的 hash 來模擬一個完整的 URL,所以當(dāng) URL 改變時,頁面不會重新加載,只是根據(jù) hash 來更換顯示對應(yīng)的組件,這就是所謂的單頁面應(yīng)用。

但是使用默認的 hash 模式時,瀏覽器 URL 地址中會有一個 # ,這跟以往的網(wǎng)站地址不太一樣,可能也會讓大部分人不習(xí)慣,甚至覺得它很丑。

想要去掉地址中的 # 也不難,只要更換 vue-router 的另一個模式 history 模式即可做到。

history 模式

當(dāng)你使用 history 模式時,URL 就變回正常又好看的地址了,和大部分網(wǎng)站地址一樣,例如:http://zhengchang.com/name/id

不過,這種模式有個坑,不僅需要前端開發(fā)人員將模式改為 history 模式,還需要后端進行相應(yīng)的配置。如果后端沒有正確的配置好,當(dāng)你訪問你的項目地址時,就會出現(xiàn) 404 ,這樣可就更不好看了。

官方給出了幾種常用的后端配置例子:

  • Apache
  • nginx
  • 原生 Node.js
  • Internet Information Services (IIS)

因為我的項目后端服務(wù)是 IIS ,所以就著重分享一下 IIS 的相關(guān)配置。


IIS 后端配置

首先,前端將 vue-router 模式修改為 history 模式,開發(fā)完成并打包后,將文件部署到站點。站點的根目錄會有一些相關(guān)配置文件,這些后端人員會很清楚,前端開發(fā)只需要告訴后端人員如何寫去掉 # 的配置文件。

在站點的根目錄創(chuàng)建一個 web.config 文件,內(nèi)容如上圖所示。起到關(guān)鍵作用的是 rewrite 標(biāo)簽中的代碼:

  • rule 標(biāo)簽:代表定義的一條規(guī)則。

  • match 標(biāo)簽:你的規(guī)則是什么要求,url 屬性內(nèi)容就是要求(正則表達式)。

  • action 標(biāo)簽:type 屬性為 Rewrite(重寫),url 屬性為目標(biāo)。意思是:如果滿足 match 標(biāo)簽中 url 屬性的正則,就執(zhí)行此配置(將符合match標(biāo)簽url要求的地址,重寫為action標(biāo)簽中url屬性的地址)。

這個配置就和重定向一樣,將符合你要求的地址,重定向為你想要的地址。下面是我的項目中 IIS 的配置:

我的要求是,除了 "api" 或者 "token" 開頭的地址,全部重定向為 " / " ,因為我的接口地址是 api 和 token 開頭的,所以接口地址不能變。

api 接口
token 接口

然后服務(wù)端設(shè)置的是默認顯示目錄下的 index.html ,而這個 index.html 文件就是前端打包后生成的 html 文件。網(wǎng)站打開了 html 文件,執(zhí)行對應(yīng)腳本,就會按照你的路由設(shè)置顯示對應(yīng)的組件內(nèi)容,瀏覽器地址中的 # 也被替換掉了。

還有一個 rule 標(biāo)簽是配置我的圖片路徑的。

圖片在開發(fā)環(huán)境中,都按照對應(yīng)的組件,分類放到不同的文件夾中,例如:home 組件中的 banner 圖,路徑是 “ assets/home/banner.png ”。

我的項目打包后,生成了 index.html 和 static 文件夾,js、css、img等文件夾都在 static 中。所有的圖片全都放在“ /static/img/ ”下面,圖片路徑也會自動更改為“ ./static/img/ ”。

我不希望圖片路徑重定向為“ / ”,所以規(guī)則就是:將符合“ ./static/img/name.png ”重定向為“ /static/img/name.png ”。

靜態(tài)圖片路徑

配置里的最難的可能是那個正則表達式,根據(jù)不同的需求配置不同的正則表達式,搞定正則就大功告成了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • 內(nèi)容 UI組件 開發(fā)框架 實用庫 服務(wù)端 輔助工具 應(yīng)用實例 Demo示例 UI組件 element ★13489...
    前端來入坑閱讀 3,699評論 0 31
  • 導(dǎo)語 如果把人生譬作長途旅行,那么,現(xiàn)代人搭乘的這趟列車就好像是由工作車廂和娛樂車廂組成的,而他們的慣常生活方式就...
    漫游家閱讀 1,159評論 0 0
  • 椰子鞋的圖片~
    癡迷舊戲閱讀 165評論 0 0
  • 一、到達機場 1. 乘坐出租車到達機場,魯巷廣場門口很好打車,打車時間十分鐘以內(nèi),路上不堵車的情況大約需要40分...
    sicychen344閱讀 3,691評論 0 3

友情鏈接更多精彩內(nèi)容