本文将介绍全面解析JavaScript的Backbone.js框架中的Router路由的详细情况,特别是关于jsrouter的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主
本文将介绍全面解析JavaScript的Backbone.js框架中的Router路由的详细情况,特别是关于js router的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于BackBone 1.0 发布,JavaScript 的 MVC 框架、Backbone.js 1.1.0 发布,JavaScript 的 MVC 框架、Backbone.js 1.2.1 发布,JavaScript 的 MVC 框架、Backbone.js 1.2.2 发布,JavaScript 的 MVC 框架的知识。
本文目录一览:- 全面解析JavaScript的Backbone.js框架中的Router路由(js router)
- BackBone 1.0 发布,JavaScript 的 MVC 框架
- Backbone.js 1.1.0 发布,JavaScript 的 MVC 框架
- Backbone.js 1.2.1 发布,JavaScript 的 MVC 框架
- Backbone.js 1.2.2 发布,JavaScript 的 MVC 框架
全面解析JavaScript的Backbone.js框架中的Router路由(js router)
Backbone 中的 Router 充当路由的作用,控制 URL 的走向,当在 URL 中使用 # 标签时生效。 定义 Router 至少需要一个 Router 和一个函数来映射特定的 URL,而且我们需要记住,在 Backbone 中,# 标签后的任意字符都会被 Router 接收并解释。 下面我们来定义一个 Router:
现在,我们就定义好了一个 Router 了,但此时 Router 并未匹配特定的 URL,接下来我们开始详细讲解 Router 是如何工作的。
动态路由选择
Backbone 允许你定义带有特定参数的 Router。例如,你可能希望通过一个特定的 id 接收一个 post,比如这样一个 URL:"http://example.com/#/posts/12",一旦这个 Router 被激活,你就可以取得一个 id 为12的 post。接下来,我们就来定义这个 Router:匹配规则
Backbone 使用两种形式的变量来设置 Router 的匹配规则。第一种是 :,它可以匹配 URL 中斜杠之间的任意参数,另一种是 *,它用来匹配斜杠后面的所有部分。注意,由于第二种形式的模糊性大于第一种,所以它的匹配优先级最低。 任一形式匹配的结果会以参数的形式传递到相关的函数中,第一种规则可能返回一个或多个参数,第二种规则将整个匹配结果作为一个参数返回。 接下来,我们用实例来说明:"posts/:id": "getPost",// <a href="http://example.com/#/posts/121">Example
"download/*path": "downloadFile",// <a href="http://example.com/#/download/user/images/hey.gif">Download
":route/:action": "loadView",// <a href="http://example.com/#/dashboard/graph">Load Route/Action View
},app_router.on('route:getPost',function( id ){
alert(id); // 匹配后,传递过来的参数为 12
});
app_router.on('route:downloadFile',function( path ){
alert(path); // 匹配后,整个匹配结果作为一个参数返回,路径为 user/images/hey.gif
});
approuter.on('route:loadView',function( route,action ){
alert(route + "" + action); // 匹配后,传递过来两个参数,此时会弹出 dashboard_graph
});
你可能经常听说“路由器”这个词,但它常常是指一种网络设备,这种设备是网络连接、数据传输的导航和枢纽。而Backbone中的“路由器”功能与它类似,从上面的例子中你就能看出,它可以将不同的URL锚点导航到对应的Action方法。 (许多服务端Web框架中也提供了这样的机制,但Backbone.Router更侧重前端单页应用的导航。)
Backbone的路由导航是由Backbone.Router和Backbone.History两个类共同完成的:
- Router类用于定义和解析路由规则,并将URL映射到Action。
- History类用于监听URL的变化,和触发Action方法。
我们一般不会直接实例化一个History,因为我们在第一次创建Router实例时,会自动创建一个History的单例对象,你可以通过Backbone.history来访问这个对象。
要使用路由功能,首先我们需要定义一个Router类来声明需要监听的URL规则和Action,在刚才的例子中,我们在定义时通过routes属性来定义需要监听的URL列表,其中Key表示URL规则,Value表示当URL处于该规则时所执行的Action方法。
Hash规则
URL规则表示当前URL中的Hash(锚点)片段,我们除了能在规则中指定一般的字符串外,还需要注意两种特别的动态规则: 规则中以/(斜线)为分隔的一段字符串,在Router类内部会被转换为表达式([^\/]+),表示以/(斜线)开头的多个字符,如果在这一段规则中设置了:(冒号),则表示URL中这一段字符串将被作为参数传递给Action。 例如我们设置了规则topic/:id,当锚点为#topic/1023时,1023将被作为参数id传递给Action,规则中的参数名(:id)一般会和Action方法的形参名称相同,虽然Router并没有这样的限制,但使用相同的参数名更容易让人理解。 规则中的*(星号)会在Router内部被转换为表达式(.*?),表示零个或多个任意字符,与:(冒号)规则相比,*(星号)没有/(斜线)分隔的限制,就像我们在上面的例子中定义的*error规则一样。 Router中的*(星号)规则在被转换为正则表达式后使用非贪婪模式,因此你可以使用例如这样的组合规则:*type/:id,它能匹配#hot/1023,同时会将hot和1023作为参数传递给Action方法。上面介绍了规则的定义方式,这些规则都会对应一个Action方法名称,该方法必须处于Router对象中。 在定义好Router类之后,我们需要实例化一个Router对象,并调用Backbone.history对象的start()方法,该方法会启动对URL的监听。在History对象内部,默认会通过onhashchange事件监听URL中Hash(锚点)的变化,对于不支持onhashchange事件的浏览器(例如IE6),History会通过setInterval心跳的方式监听。
pushState规则
Backbone.History还支持pushState方式的URL,pushState是HTML5提供的一种新特性,它能操作当前浏览器的URL(而不是仅仅改变锚点),同时不会导致页面刷新,从而使单页应用使用起来更像一套完整的流程。 要使用pushState特性,你需要先了解HTML5为该特性提供的一些方法和事件(这些方法都被定义在window.history对象中):1.pushState():该方法可以将指定的URL添加一个新的history实体到浏览器历史里 2.replaceState():该方法可以将当前的history实体替换为指定的URL
调用pushState()和replaceState()方法,仅仅是替换当前页面的URL,而并不会真正转到这个URL地址(当使用后退或前进按钮时,也不会跳转到该URL),我们可以通过onpopstate事件来监听这两个方法引起的URL变化。
路由相关方法
1.route()方法
在设定好路由规则之后,如果需要动态调整,可以调用Router.route()方法来动态添加路由规则及Action方法,例如:2.navigate()方法
在前面的例子中,URL规则都是由我们手动输入触发的,在实际应用中,有时可能需要手动进行跳转、导航,这时可以调用这段代码将URL更改为http://localhost/index.html#topic/1000,并触发了renderDetail方法。需要注意的是,我们在第二个参数传入了trigger配置,该配置用于表示更改URL的同时是否触发相应的Action方法。
3.stop()方法
还记得我们是通过Backbone.history.start()方法来启动路由监听的,你也可以随时调用Backbone.history.stop()方法来停止监听,例如:运行这段代码,并访问URL:http://localhost/index.html#topic/5/20,你会发现这个Action被执行之后,监听已经不再生效了。
总结
以上是小编为你收集整理的全面解析JavaScript的Backbone.js框架中的Router路由全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
JavaScript相关文章
- • 2022最全最新前端面试题(附加解答)
- • 前端面试八股文(详细版)—上
- • Js运算符
- • 【Vue】webpack的基本使用
- • Pro3:js实现放大镜效果
- • 【2022-11-26】JS逆向之北京百姓网
- • 你评论,我赠书~【TFS-CLUB社区 第9期赠
- • App逆向案例 X嘟牛 - Frida监听 &
- • js中的正则表达式入门
- • JavaScript箭头函数中的this详解
BackBone 1.0 发布,JavaScript 的 MVC 框架
著名的 JavaScript 的 MVC 框架 BackBone.js 今天发布 1.0 版本。详情请看 发行说明。
主要改进包括:
- 引入 collection.set() 用来更新集合的内容
- The addition of the mirrored listenTo function in the Events mixin — which makes it easier to automatically unbind events when views are removed.
- 支持 HTTP PATCH 请求, sending only the changed state of your model to the server, instead of the full representation.
- New useful data-inspecting and filtering methods like where, pick, and omit.
- Many refactors, streamlinings, and optimizations to the core events and changes internal machinery.
- Beefed out literate documentation of the source code.
Backbone.js 是一种重量级javascript MVC 应用框架,通过Models进行key-value绑定及custom事件处理,通过Collections提供一套丰富的API用于枚举功能,通过 Views来进行事件处理及与现有的Application通过RESTful JSON接口进行交互.
Backbone.js 1.1.0 发布,JavaScript 的 MVC 框架
Backbone.js 1.1.0 发布了,下载地址:
https://github.com/jashkenas/backbone/releases/tag/1.1.0
或者:
59kb, Full source, tons of comments | |
6.4kb, Packed and gzipped (Source Map) |
Backbone.js 是一种重量级javascript MVC 应用框架,通过Models进行key-value绑定及custom事件处理,通过Collections提供一套丰富的API用于枚举功能,通过 Views来进行事件处理及与现有的Application通过RESTful JSON接口进行交互.
Backbone.js 1.2.1 发布,JavaScript 的 MVC 框架
Backbone.js 1.2.1 发布,此版本更新内容如下:
Collection#add now avoids trying to parse a model instance when passing parse: true.
Bug fix in Collection#remove.
Model#fetch no longer parses the response when passing patch: false.
Bug fix for iframe-based History when used with JSDOM.
Bug fix where Collection#invoke was not taking additional arguments.
When using on with an event map, you can now pass the context as the second argument. This was previously an undocumented behavior from 1.1.2 removed in 1.2.0.
此版本现已提供下载:https://github.com/jashkenas/backbone/archive/1.2.1.zip。
Backbone.js 是一种重量级javascript MVC 应用框架,通过Models进行key-value绑定及custom事件处理,通过Collections提供一套丰富的API用于枚举功能,通过 Views来进行事件处理及与现有的Application通过RESTful JSON接口进行交互.
比较适合于现在的类Twitter web2.0网站的开发!
Backbone.js 1.2.2 发布,JavaScript 的 MVC 框架
Backbone.js 1.2.2 发布,此版本更新内容如下:
Collection methods find, filter, reject, every, some, and partition can now take a model-attributes-style predicate: this.collection.reject({user: ''guybrush''}).
Backbone Events once again supports multiple-event maps (obj.on({''error change'': action})). This was a previously undocumented feature inadvertently removed in 1.2.0.
Added Collection#includes as an alias of Collection#contains and as a replacement for Collection#include in Underscore.js >= 1.8.
下载:
开发版:http://backbonejs.org/backbone.js
稳定版:http://backbonejs.org/backbone-min.js
测试版:https://raw.github.com/jashkenas/backbone/master/backbone.js
Backbone.js 是一种重量级javascript MVC 应用框架,通过Models进行key-value绑定及custom事件处理,通过Collections提供一套丰富的API用于枚举功能,通过 Views来进行事件处理及与现有的Application通过RESTful JSON接口进行交互.
关于全面解析JavaScript的Backbone.js框架中的Router路由和js router的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于BackBone 1.0 发布,JavaScript 的 MVC 框架、Backbone.js 1.1.0 发布,JavaScript 的 MVC 框架、Backbone.js 1.2.1 发布,JavaScript 的 MVC 框架、Backbone.js 1.2.2 发布,JavaScript 的 MVC 框架等相关知识的信息别忘了在本站进行查找喔。
本文标签: