hash和history的區(qū)別

一、hash模式

hash是指url上#和其后面的鏈接,#稱之為錨點(diǎn)。
由于 hash 值變化不會(huì)導(dǎo)致瀏覽器向服務(wù)器發(fā)出請(qǐng)求珊随,而且 hash 改變會(huì)觸發(fā) hashchange 事件(hashchange只能改變 # 后面的url片段);更關(guān)鍵的一點(diǎn)是,因?yàn)閔ash發(fā)生變化的url都會(huì)被瀏覽器記錄下來(lái)叶洞,從而你會(huì)發(fā)現(xiàn)瀏覽器的前進(jìn)后退都可以用了鲫凶。

window.location.hash = 'qq' // 設(shè)置 url 的 hash,會(huì)在當(dāng)前url后加上 '#qq'
var hash = window.location.hash // '#qq'  
window.addEventListener('hashchange', function(){ 
    // 監(jiān)聽(tīng)hash變化衩辟,點(diǎn)擊瀏覽器的前進(jìn)后退會(huì)觸發(fā)
})

二螟炫、history模式

首先,hash 本來(lái)是拿來(lái)做頁(yè)面定位的艺晴,如果拿來(lái)做路由的話昼钻,原來(lái)的錨點(diǎn)功能就不能用了。其次封寞,hash 的傳參是基于 url 的然评,如果要傳遞復(fù)雜的數(shù)據(jù),會(huì)有體積的限制狈究,而 history 模式不僅可以在url里放參數(shù)碗淌,還可以將數(shù)據(jù)存放在一個(gè)特定的對(duì)象中。
history api可以分為兩大部分:切換和修改
1抖锥、切換歷史狀態(tài)包括back亿眠、forward、go
這三個(gè)方法磅废,對(duì)應(yīng)瀏覽器的前進(jìn)纳像,后退,跳轉(zhuǎn)操作拯勉;(跳轉(zhuǎn)操作:在前進(jìn)后退上長(zhǎng)按鼠標(biāo)竟趾,會(huì)出來(lái)所有當(dāng)前窗口的歷史記錄,從而可以跳轉(zhuǎn))

history.go(-2);//后退兩次
history.go(2);//前進(jìn)兩次
history.back(); //后退
hsitory.forward(); //前進(jìn)

2宫峦、修改歷史狀態(tài)包括了 pushState, replaceState兩個(gè)方法
這兩個(gè)方法接收三個(gè)參數(shù):stateObj, title, url

window.history.pushState(state, title, url) 
// state:需要保存的數(shù)據(jù)潭兽,這個(gè)數(shù)據(jù)在觸發(fā)popstate事件時(shí),可以在event.state里獲取
// title:標(biāo)題斗遏,基本沒(méi)用,一般傳 null
// url:設(shè)定新的歷史記錄的 url鞋邑。新的 url 與當(dāng)前 url 的 origin 必須是一樣的诵次,否則會(huì)拋出錯(cuò)誤。url可以是絕對(duì)路徑枚碗,也可以是相對(duì)路徑逾一。
//如 當(dāng)前url是 https://www.baidu.com/a/,執(zhí)行history.pushState(null, null, './qq/'),則變成 https://www.baidu.com/a/qq/肮雨,
//執(zhí)行history.pushState(null, null, '/qq/')遵堵,則變成 https://www.baidu.com/qq/
window.history.replaceState(state, title, url)
// 與 pushState 基本相同,但她是修改當(dāng)前歷史記錄,而 pushState 是創(chuàng)建新的歷史記錄
window.addEventListener("popstate", function() {
    // 監(jiān)聽(tīng)瀏覽器前進(jìn)后退事件陌宿,pushState 與 replaceState 方法不會(huì)觸發(fā)              
});

history模式下锡足,不怕前進(jìn)后退,就怕h5刷新頁(yè)面壳坪,因?yàn)樗⑿马?yè)面是向服務(wù)器請(qǐng)求了舶得。
history 模式改變 url 的方式會(huì)導(dǎo)致瀏覽器向服務(wù)器發(fā)送請(qǐng)求,這不是我們想看到的爽蝴,我們需要在服務(wù)器端做處理:如果匹配不到任何靜態(tài)資源沐批,則應(yīng)該始終返回同一個(gè) html 頁(yè)面。
nginx服務(wù)器配置:

// 意思為,匹配url和url/下的文件蝎亚,如果嗎九孩,沒(méi)有匹配到,則返回index.html
location / {
  try_files $uri $uri/ /index.html;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末发框,一起剝皮案震驚了整個(gè)濱河市躺彬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缤底,老刑警劉巖顾患,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異个唧,居然都是意外死亡江解,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門徙歼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)犁河,“玉大人,你說(shuō)我怎么就攤上這事魄梯〗奥荩” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵酿秸,是天一觀的道長(zhǎng)灭翔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)辣苏,這世上最難降的妖魔是什么肝箱? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮稀蟋,結(jié)果婚禮上煌张,老公的妹妹穿的比我還像新娘。我一直安慰自己退客,他們只是感情好骏融,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布链嘀。 她就那樣靜靜地躺著,像睡著了一般档玻。 火紅的嫁衣襯著肌膚如雪怀泊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天窃肠,我揣著相機(jī)與錄音包个,去河邊找鬼。 笑死冤留,一個(gè)胖子當(dāng)著我的面吹牛碧囊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纤怒,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼糯而,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了泊窘?” 一聲冷哼從身側(cè)響起熄驼,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烘豹,沒(méi)想到半個(gè)月后瓜贾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡携悯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年祭芦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憔鬼。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡龟劲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轴或,到底是詐尸還是另有隱情昌跌,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布照雁,位于F島的核電站蚕愤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饺蚊。R本人自食惡果不足惜萍诱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卸勺。 院中可真熱鬧,春花似錦烫扼、人聲如沸曙求。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悟狱。三九已至静浴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挤渐,已是汗流浹背苹享。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浴麻,地道東北人得问。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像软免,于是被迫代替她去往敵國(guó)和親宫纬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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