web路由那些事兒(一)

一、概念概述

1轴咱、網(wǎng)絡工程術語——
    路由(routing)是指分組從源到目的地時铭乾,決定端到端路徑的網(wǎng)絡范圍的進程剪廉。
    路由是指路由器從一個接口上收到數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的目的地址進行定向并轉發(fā)到另一個接口的過程炕檩。
    路由器通過動態(tài)維護路由表來反映當前的網(wǎng)絡拓撲斗蒋,并通過網(wǎng)絡上其他路由器交換路由和鏈路信息來維護路由表。
2笛质、市政工程術語——
    管線的“路由”一般可以概述為管線的起點到通往每個目的地的路徑泉沾,即管線的走向位置。
3妇押、web路由
  規(guī)定數(shù)據(jù)交換和頁面展現(xiàn)的目標跷究。

二、web路由的基礎

1敲霍、web路由的產(chǎn)生

web路由的基礎是ajax的廣泛應用俊马,尤其是前段開始有能力承擔更多的數(shù)據(jù)通信及與之對應的業(yè)務邏輯丁存。
web路由的作用和好處則是分擔后端處理業(yè)務邏輯的壓力。

2柴我、web路由的構成

ajax在web路由中扮演著數(shù)據(jù)交換的角色解寝,再通過URL的變化和記錄來完成對頁面展現(xiàn)的控制,就構成了一個簡單的web路由系統(tǒng)艘儒。

2.1聋伦、ajax

ajax的作用不言而喻,它是web路由產(chǎn)生和發(fā)展的基石界睁,是web路由的核心觉增。

2.2、URL

URL翻斟,統(tǒng)一資源定位符逾礁,它表示資源文件的位置以及瀏覽器怎樣處理它。
在web路由中杨赤,它的作用并沒有改變敞斋,但是卻強調了更多的特色:
(1)體現(xiàn)頁面刷新:由于ajax是局部刷新數(shù)據(jù),在顯示上只有通過URL的變化來體現(xiàn)頁面的跳轉(實際上并沒有跳轉)疾牲。
(2)前進與后退:由于ajax刷新時植捎,并沒有真正的跳轉,所以瀏覽器在處理前進與后退時會忽略這些刷新阳柔。而web路由就必須hack這些處理方式焰枢,來完成ajax刷新的前進與后退。

三舌剂、web路由:ajax

ajax(Asynchronous Javascript And XML) 的核心是 JavaScript 對象 XMLHttpRequest济锄,是一種支持異步請求的技術,發(fā)展已經(jīng)很成熟霍转,可以直接使用荐绝,而各個框架都有自己的封裝和實現(xiàn)。

四避消、web路由:URL

完成web路由需要達到兩個目標——展示低滩、前進與后退,而實際上這兩個目標是一致的——路徑岩喷。
在處理URL路徑時恕沫,基本要求就是,隨著ajax的請求改變URL纱意,但是必須避免整個頁面的跳轉和刷新(而一般情況下婶溯,URL的變化都會導致頁面的跳轉),否則ajax局部請求的特性就沒有意義了。
1迄委、錨點——#
錨點是頁面內的超鏈接褐筛,本意是用來進行當前頁面特定位置的跳轉。由于是頁面內的跳轉跑筝,使它具有了一個特性——改變了URL死讹,整個頁面不會跳轉。
對應的api—— window.onhashchange曲梗,不過window.onhashchange存在兼容性問題,所以只能使用最原始粗暴的方式——polling(輪詢)妓忍。
2虏两、history.pushState
首先要強調的是,history.pushState的方式是H5添加的新特性世剖,兼容性不言而喻定罢。
使用history.pushState,可以改變URL為任意形式而不會發(fā)生頁面跳轉旁瘫,同時也會添加添加對應的歷史記錄用于前進和后退祖凫。
對應的api—— history.pushState,history.replaceState酬凳,window.onpopstate惠况。
另外,目前web路由的方式經(jīng)常被稱為Pjax宁仔,也就是pushstate+ajax稠屠。

五、業(yè)務邏輯

web路由還有一個重要的部分——業(yè)務邏輯翎苫,主要包換兩個方面:
1权埠、用戶操作——通過ajax請求對應的業(yè)務數(shù)據(jù),進行展示和操作煎谍,并完成URL改變和歷史記錄攘蔽。
2、前進和后退——通過onhashchange和onpopstate監(jiān)聽對應的變化呐粘,根據(jù)對應的參數(shù)做出相應的響應满俗。

六、總結

web路由基于ajax產(chǎn)生和發(fā)展事哭,已經(jīng)被很多框架所實現(xiàn)漫雷,如angularjs、vue鳍咱、react等降盹。
框架的使用好處在于其兼容性、穩(wěn)定性谤辜、提高開發(fā)效率蓄坏、簡化設計等价捧,但是同時也存在一些很明顯的嚴重缺陷——臃腫性、影響性能涡戳、擴展性降低等结蟋。所以在項目開始時,尤其是一些小的項目渔彰,可以考慮自行實現(xiàn)框架中的功能嵌屎。
以后將一起探討怎樣實現(xiàn)一個簡單的路由。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末恍涂,一起剝皮案震驚了整個濱河市宝惰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌再沧,老刑警劉巖尼夺,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炒瘸,居然都是意外死亡淤堵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門顷扩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拐邪,“玉大人,你說我怎么就攤上這事屎即∶硭” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵技俐,是天一觀的道長乘陪。 經(jīng)常有香客問我,道長雕擂,這世上最難降的妖魔是什么啡邑? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮井赌,結果婚禮上谤逼,老公的妹妹穿的比我還像新娘。我一直安慰自己仇穗,他們只是感情好流部,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纹坐,像睡著了一般枝冀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天果漾,我揣著相機與錄音球切,去河邊找鬼。 笑死绒障,一個胖子當著我的面吹牛吨凑,可吹牛的內容都是我干的。 我是一名探鬼主播户辱,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼鸵钝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了焕妙?” 一聲冷哼從身側響起蒋伦,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焚鹊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韧献,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡末患,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锤窑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片璧针。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖渊啰,靈堂內的尸體忽然破棺而出探橱,到底是詐尸還是另有隱情,我是刑警寧澤绘证,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布隧膏,位于F島的核電站,受9級特大地震影響嚷那,放射性物質發(fā)生泄漏胞枕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一魏宽、第九天 我趴在偏房一處隱蔽的房頂上張望腐泻。 院中可真熱鬧,春花似錦队询、人聲如沸派桩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铆惑。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸭津,已是汗流浹背彤侍。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逆趋,地道東北人盏阶。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像闻书,于是被迫代替她去往敵國和親名斟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容