vue-router 中hash模式和history模式的區(qū)別

hash模式url里面永遠(yuǎn)帶著#號瓶佳,我們在開發(fā)當(dāng)中默認(rèn)使用這個(gè)模式侧戴。那么什么時(shí)候要用history模式呢估盘?如果用戶考慮url的規(guī)范那么就需要使用history模式车柠,因?yàn)閔istory模式?jīng)]有#號剔氏,是個(gè)正常的url適合推廣宣傳。當(dāng)然其功能也有區(qū)別竹祷,比如我們在開發(fā)app的時(shí)候有分享頁面谈跛,那么這個(gè)分享出去的頁面就是用vue或是react做的,咱們把這個(gè)頁面分享到第三方的app里塑陵,有的app里面url是不允許帶有#號的感憾,所以要將#號去除那么就要使用history模式,但是使用history模式還有一個(gè)問題就是令花,在訪問二級頁面的時(shí)候阻桅,做刷新操作凉倚,會(huì)出現(xiàn)404錯(cuò)誤,那么就需要和后端人配合讓他配置一下apache或是nginx的url重定向嫂沉,重定向到你的首頁路由上稽寒。

hash與history的區(qū)別

hash模式

我們先來認(rèn)識下這位朋友#,這個(gè)#就是hash符號趟章,中文名哈希符或錨點(diǎn)杏糙,當(dāng)然這在我們前端領(lǐng)域姑且這么稱呼。

然后哈希符后面的值尤揣,我們稱之為哈希值搔啊。OK,接下來我們繼續(xù)分析他的原理北戏。路由的哈希模式其實(shí)是利用了window可以監(jiān)聽onhashchange事件,也就是說你的url中的哈希值(#后面的值)如果有變化漫蛔,前端是可以做到監(jiān)聽并做一些響應(yīng)(搞點(diǎn)事情)嗜愈,這么一來,即使前端并沒有發(fā)起http請求他也能夠找到對應(yīng)頁面的代碼塊進(jìn)行按需加載莽龟。

后來人們給他起了一個(gè)霸氣的名字叫前端路由蠕嫁,成為了單頁應(yīng)用標(biāo)配。

大伙可以圍觀下網(wǎng)易云音樂的url模式:https://music.163.com/#/friend


history模式

我們先介紹一下H5新推出的兩個(gè)神器:pushState與replaceState

具體自行百度毯盈,簡而言之剃毒,這兩個(gè)神器的作用就是可以將url替換并且不刷新頁面,好比掛羊頭賣狗肉搂赋,http并沒有去請求服務(wù)器該路徑下的資源赘阀,一旦刷新就會(huì)暴露這個(gè)實(shí)際不存在的“羊頭”,顯示404脑奠。

那么如何去解決history模式下刷新報(bào)404的弊端呢基公,這就需要服務(wù)器端做點(diǎn)手腳,將不存在的路徑請求重定向到入口文件(index.html)宋欺,前后端聯(lián)手轰豆,齊心協(xié)力做好“掛羊頭賣狗肉”的完美特效。

總之齿诞,pushState方法不會(huì)觸發(fā)頁面刷新酸休,只是導(dǎo)致history對象發(fā)生變化,地址欄會(huì)有反應(yīng)祷杈。


總結(jié)

傳統(tǒng)的路由指的是:當(dāng)用戶訪問一個(gè)url時(shí)斑司,對應(yīng)的服務(wù)器會(huì)接收這個(gè)請求,然后解析url中的路徑吠式,從而執(zhí)行對應(yīng)的處理邏輯陡厘。這樣就完成了一次路由分發(fā)抽米。

而前端路由是不涉及服務(wù)器的,是前端利用hash或者HTML5的history API來實(shí)現(xiàn)的糙置,一般用于不同內(nèi)容的展示和切換云茸。

history模式下,build之后本地 index.html 打開是無效的谤饭。
hash模式下标捺,build之后本地 index.html 打開正常!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末揉抵,一起剝皮案震驚了整個(gè)濱河市亡容,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冤今,老刑警劉巖闺兢,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異戏罢,居然都是意外死亡屋谭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門龟糕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桐磁,“玉大人,你說我怎么就攤上這事讲岁∥依蓿” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵缓艳,是天一觀的道長校摩。 經(jīng)常有香客問我,道長郎任,這世上最難降的妖魔是什么秧耗? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮舶治,結(jié)果婚禮上分井,老公的妹妹穿的比我還像新娘。我一直安慰自己霉猛,他們只是感情好尺锚,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惜浅,像睡著了一般瘫辩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天伐厌,我揣著相機(jī)與錄音承绸,去河邊找鬼。 笑死挣轨,一個(gè)胖子當(dāng)著我的面吹牛军熏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卷扮,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼荡澎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晤锹?” 一聲冷哼從身側(cè)響起摩幔,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鞭铆,沒想到半個(gè)月后或衡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡车遂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年薇宠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艰额。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖椒涯,靈堂內(nèi)的尸體忽然破棺而出柄沮,到底是詐尸還是另有隱情,我是刑警寧澤废岂,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布祖搓,位于F島的核電站,受9級特大地震影響湖苞,放射性物質(zhì)發(fā)生泄漏拯欧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一财骨、第九天 我趴在偏房一處隱蔽的房頂上張望镐作。 院中可真熱鬧,春花似錦隆箩、人聲如沸该贾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杨蛋。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逞力,已是汗流浹背曙寡。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寇荧,地道東北人举庶。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像砚亭,于是被迫代替她去往敵國和親灯变。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容