路由
backbone將路由規則和一個方法名綁定到一塊兒,來控制單頁的hash,以及單頁的前進後退。html
var UserRouter = Backbone.Router.extend({ routes: { "": "main", "help": "help", // #help "search/:query": "search", // #search/page "search/:query/p:page": "search", // #search/page/p1 "*error": "error", }, main:function(){ console.log("main"); }, help: function() { console.log("help"); }, search: function(query, page) { console.log(query,page); }, error:function(error){ console.log(error,"is a error hash!"); } }); var user_router=new UserRouter(); Backbone.history.start();//開啓前history監控hashchange //http://localhost/backbone_test/backbone_test.html //=> main //http://localhost/backbone_test/backbone_test.html#help //=> help //http://localhost/backbone_test/backbone_test.html#search/page //page null //http://localhost/backbone_test/backbone_test.html#search/page/p1 //page 1 //http://localhost/backbone_test/backbone_test.html#other //other is a error hash!
路由規則
search/:query中 : 表示查詢,,當輸入#search/page 這裏的page就做爲參數傳給與規則search/:query綁定的函數中。
*表示匹配0或多個字符 ,若是上面的例子中沒有這個"": "main"規則,url後面輸入#,控制檯就會顯示 null "is a error hash!" ,由於 * 匹配了0個字符。
#以後的全部字符,均可以做爲一個總體字符串的參數傳給和該規則綁定的方法中。*也能夠和:混用。好比對於規則"*search/:query/error": "error",url後面輸入「#search/page/url」,「search/page/url」就做爲參數傳給了error方法。
函數
Backbone.history.start()或Backbone.history.start({pushState: true})用於開啓history監控,這樣就能應用路由規則了。