摘要:中的充當(dāng)路由的作用,控制的走向,當(dāng)在中使用標(biāo)簽時(shí)生效。任一形式匹配的結(jié)果會(huì)以參數(shù)的形式傳遞到相關(guān)的函數(shù)中,第一種規(guī)則可能返回一個(gè)或多個(gè)參數(shù),第二種規(guī)則將整個(gè)匹配結(jié)果作為一個(gè)參數(shù)返回。
Backbone 中的 Router 充當(dāng)路由的作用,控制 URL 的走向,當(dāng)在 URL 中使用 # 標(biāo)簽時(shí)生效。
定義 Router 至少需要一個(gè) Router 和一個(gè)函數(shù)來(lái)映射特定的 URL,而且我們需要記住,在 Backbone 中,# 標(biāo)簽后的任意字符都會(huì)被 Router 接收并解釋。
下面我們來(lái)定義一個(gè) Router:
現(xiàn)在,我們就定義好了一個(gè) Router 了,但此時(shí) Router 并未匹配特定的 URL,接下來(lái)我們開(kāi)始詳細(xì)講解 Router 是如何工作的。
動(dòng)態(tài)路由選擇Backbone 允許你定義帶有特定參數(shù)的 Router。例如,你可能希望通過(guò)一個(gè)特定的 id 接收一個(gè) post,比如這樣一個(gè) URL:"http://example.com/#/posts/12",一旦這個(gè) Router 被激活,你就可以取得一個(gè) id 為12的 post。接下來(lái),我們就來(lái)定義這個(gè) Router:
匹配規(guī)則
Backbone 使用兩種形式的變量來(lái)設(shè)置 Router 的匹配規(guī)則。第一種是 :,它可以匹配 URL 中斜杠之間的任意參數(shù),另一種是 *,它用來(lái)匹配斜杠后面的所有部分。注意,由于第二種形式的模糊性大于第一種,所以它的匹配優(yōu)先級(jí)最低。
任一形式匹配的結(jié)果會(huì)以參數(shù)的形式傳遞到相關(guān)的函數(shù)中,第一種規(guī)則可能返回一個(gè)或多個(gè)參數(shù),第二種規(guī)則將整個(gè)匹配結(jié)果作為一個(gè)參數(shù)返回。
接下來(lái),我們用實(shí)例來(lái)說(shuō)明:
routes:{ "posts/:id": "getPost", // Example "download/*path": "downloadFile", // Download ":route/:action": "loadView", // Load Route/Action View }, app_router.on("route:getPost", function( id ){ alert(id); // 匹配后,傳遞過(guò)來(lái)的參數(shù)為 12 }); app_router.on("route:downloadFile", function( path ){ alert(path); // 匹配后,整個(gè)匹配結(jié)果作為一個(gè)參數(shù)返回,路徑為 user/images/hey.gif }); app_router.on("route:loadView", function( route, action ){ alert(route + "_" + action); // 匹配后,傳遞過(guò)來(lái)兩個(gè)參數(shù),此時(shí)會(huì)彈出 dashboard_graph });參考
http://backbonetutorials.com/what-is-a-router/#/posts/120
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/92317.html
摘要:事件關(guān)于路由觸發(fā)事件是通過(guò)兩個(gè)函數(shù)來(lái)完成的,它們分別是和前者會(huì)檢測(cè)路由是否發(fā)生了改變,如果改變了就會(huì)觸發(fā)函數(shù)并調(diào)用函數(shù),而后者會(huì)通過(guò)路由片段來(lái)找到相關(guān)的事件函數(shù)來(lái)觸發(fā)。 注意:強(qiáng)烈建議一邊閱讀源碼一邊閱讀本文。 終于到了backbone源碼解讀的最后一篇,這一篇和前面幾篇時(shí)間上有一定的間隔(因?yàn)橐貙W(xué)校有一堆亂七八糟的事...)。在這一篇里面會(huì)講解Bakcbone的sync & rou...
摘要:應(yīng)用的功能這個(gè)應(yīng)用是一個(gè)個(gè)人簡(jiǎn)歷生成器。比較好的教程有這一個(gè)。這樣的命名污染問(wèn)題自然顯而易見(jiàn)。而且發(fā)出多次請(qǐng)求也會(huì)影響性能。明顯不利于維護(hù)。然而我希望能夠不發(fā)生變化,因?yàn)槭窃谖募那疤嵯碌臉?biāo)簽頁(yè),不能換一個(gè)標(biāo)簽就重建一個(gè)。 為什么學(xué)習(xí)backbone?這是個(gè)好問(wèn)題。在這個(gè)前端框架爆炸的年代,比起backbone,對(duì)開(kāi)發(fā)來(lái)說(shuō)有更多更好的選擇,react,vue,angular等等。但這些...
1. 開(kāi)場(chǎng) 1.1 MVC? MVC是一種GUI軟件的一種架構(gòu)模式。它的目的是將軟件的數(shù)據(jù)層(Model)和視圖(view)分開(kāi)。Model連接數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)的交互。用戶不能直接和數(shù)據(jù)打交道,而是需要通過(guò)操作視圖,然后通過(guò)controller對(duì)事件作出響應(yīng),最后才得以改變數(shù)據(jù)。最后數(shù)據(jù)改變,通過(guò)觀察者模式更新view。(所以在這里需要用到設(shè)計(jì)模式中的觀察者模式) 1.2 Smalltalk-80...
摘要:個(gè)人認(rèn)為,讀懂老牌框架的源代碼比會(huì)用流行框架的要有用的多。另外,源代碼中所有的以開(kāi)頭的方法,可以認(rèn)為是私有方法,是沒(méi)有必要直接使用的,也不建議用戶覆蓋。 寫在前面 backbone是我兩年多前入門前端的時(shí)候接觸到的第一個(gè)框架,當(dāng)初被backbone的強(qiáng)大功能所吸引(當(dāng)然的確比裸寫js要好得多),雖然現(xiàn)在backbone并不算最主流的前端框架了,但是,它里面大量設(shè)計(jì)模式的靈活運(yùn)用,以及令...
摘要:個(gè)人認(rèn)為,讀懂老牌框架的源代碼比會(huì)用流行框架的要有用的多。另外,源代碼中所有的以開(kāi)頭的方法,可以認(rèn)為是私有方法,是沒(méi)有必要直接使用的,也不建議用戶覆蓋。 寫在前面 backbone是我兩年多前入門前端的時(shí)候接觸到的第一個(gè)框架,當(dāng)初被backbone的強(qiáng)大功能所吸引(當(dāng)然的確比裸寫js要好得多),雖然現(xiàn)在backbone并不算最主流的前端框架了,但是,它里面大量設(shè)計(jì)模式的靈活運(yùn)用,以及令...
閱讀 4351·2021-09-26 10:17
閱讀 941·2021-09-22 15:02
閱讀 3560·2021-09-06 15:00
閱讀 1124·2021-07-25 16:52
閱讀 2818·2019-08-29 16:16
閱讀 2588·2019-08-29 13:25
閱讀 1645·2019-08-26 13:51
閱讀 2243·2019-08-26 10:58