GVKun编程网logo

全面解析JavaScript的Backbone.js框架中的Router路由(js router)

11

本文将介绍全面解析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)

全面解析JavaScript的Backbone.js框架中的Router路由(js router)

Backbone 中的 Router 充当路由的作用,控制 URL 的走向,当在 URL 中使用 # 标签时生效。 定义 Router 至少需要一个 Router 和一个函数来映射特定的 URL,而且我们需要记住,在 Backbone 中,# 标签后的任意字符都会被 Router 接收并解释。 下面我们来定义一个 Router:

rush:js;"> @H_301_5@

现在,我们就定义好了一个 Router 了,但此时 Router 并未匹配特定的 URL,接下来我们开始详细讲解 Router 是如何工作的。

动态路由选择

Backbone 允许你定义带有特定参数的 Router。例如,你可能希望通过一个特定的 id 接收一个 post,比如这样一个 URL:"http://example.com/#/posts/12",一旦这个 Router 被激活,你就可以取得一个 id 为12的 post。接下来,我们就来定义这个 Router:

rush:js;"> @H_301_5@

匹配规则

Backbone 使用两种形式的变量来设置 Router 的匹配规则。第一种是 :,它可以匹配 URL 中斜杠之间的任意参数,另一种是 *,它用来匹配斜杠后面的所有部分。注意,由于第二种形式的模糊性大于第一种,所以它的匹配优先级最低。 任一形式匹配的结果会以参数的形式传递到相关的函数中,第一种规则可能返回一个或多个参数,第二种规则将整个匹配结果作为一个参数返回。 接下来,我们用实例来说明:

rush:js;"> routes:{

"posts/:id": "getPost",// <a href="http://example.com/#/posts/121"&gt;Example

"download/*path": "downloadFile",// <a href="http://example.com/#/download/user/images/hey.gif"&gt;Download

":route/:action": "loadView",// <a href="http://example.com/#/dashboard/graph"&gt;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
});

@H_301_5@

你可能经常听说“路由器”这个词,但它常常是指一种网络设备,这种设备是网络连接、数据传输的导航和枢纽。而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方法,例如:

rush:js;"> router.route('topic/:pageno/:pagesize','page',function(pageno,pagesize){ // todo }); 我们调用route()方法时,给定的规则不仅仅可以是字符串,也可以是一个正则表达式: router.route(/^topic/(.*?)/(.*?)$/,pagesize){ // todo }); @H_301_5@

2.navigate()方法

在前面的例子中,URL规则都是由我们手动输入触发的,在实际应用中,有时可能需要手动进行跳转、导航,这时可以调用

rush:js;"> Router.navigate()方法进行控制,例如: router.navigate('topic/1000',{ trigger: true }); @H_301_5@

这段代码将URL更改为http://localhost/index.html#topic/1000,并触发了renderDetail方法。需要注意的是,我们在第二个参数传入了trigger配置,该配置用于表示更改URL的同时是否触发相应的Action方法。

3.stop()方法

还记得我们是通过Backbone.history.start()方法来启动路由监听的,你也可以随时调用Backbone.history.stop()方法来停止监听,例如:

rush:js;"> router.route('topic/:pageno/:pagesize',pagesize) { Backbone.history.stop(); }); @H_301_5@

运行这段代码,并访问URL:http://localhost/index.html#topic/5/20,你会发现这个Action被执行之后,监听已经不再生效了。

总结

以上是小编为你收集整理的全面解析JavaScript的Backbone.js框架中的Router路由全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

JavaScriptjs路由路由

JavaScript相关文章

2022最全最新前端面试题(附加解答)
这是我整理所有看过的文章的面试题+各种百度每一道题的答案,希望可以有效的帮助别人本章博客,梳理所有基础的js,jquery,vue,css, html等题,包含面试题,可供参考学习,也督促自我学习
前端面试八股文(详细版)—上
前端面试八股文,知识点广而全,内容会及时更新
Js运算符
JavaScript 语言的算术运算符是使用数字值作为操作数,进行运算之后返回一个数字值。算术运算符+,-,*,/,%% => 模(余数)
【Vue】webpack的基本使用
好处:前端开发自成体系,有一套标准的开发方案和流量。概念: webpack是前端项目工程化的具体解决方案。主要功能:它提供了友好的前端模块化开发支持,以及代码压缩混淆,处理浏览器端JavaScript的兼容性性能优化等强大的功能。好处:让程序员把工作的重心放到具体功能的实现上,提高了前端开发效率和项目的可维护性。注意:目前Vue,React等前端项目,基本上都是基于webpack进行工程化开发的。步骤import和require导入模块的区别1、require对应导出的方法是module.export
Pro3:js实现放大镜效果
JavaScript练习项目第三个:js实现放大镜的效果。
【2022-11-26】JS逆向之北京百姓网
北京百姓网cookie逆向
你评论,我赠书~【TFS-CLUB社区 第9期赠书活动】〖HTML5+CSS3+JavaScript从入门到精通(微课精编版)(第2版)〗等你来拿
你评论,我赠书~【TFS-CLUB社区 第9期赠书活动】〖HTML5+CSS3+JavaScript从入门到精通(微课精编版)〗等你来拿
App逆向案例 X嘟牛 - Frida监听 & WT-JS工具还原(一)
App逆向 X嘟牛 - Frida监听 & WT-JS工具还原(一)
  • • 2022最全最新前端面试题(附加解答)
  • • 前端面试八股文(详细版)—上
  • • Js运算符
  • • 【Vue】webpack的基本使用
  • • Pro3:js实现放大镜效果
  • • 【2022-11-26】JS逆向之北京百姓网
  • • 你评论,我赠书~【TFS-CLUB社区 第9期赠
  • • App逆向案例 X嘟牛 - Frida监听 &
  • • js中的正则表达式入门
  • • JavaScript箭头函数中的this详解
HTMLreactjsCSSNode.jsangulartypescriptvue.jsreact-natispringkotlinAPIseleniumtensorflowbashangularJSexpressxcodematplotlibflaskHibernatedictionaryrailscocoswebnpmreact-hookmongoosegoogle-appformswpfRestwebpackunit-testihttpclassfileNext.jsJsHTML5bootstrap-

BackBone 1.0 发布,JavaScript 的 MVC 框架

BackBone 1.0 发布,JavaScript 的 MVC 框架

著名的 JavaScript 的 MVC 框架 BackBone.js 今天发布 1.0 版本。详情请看 发行说明。

主要改进包括:

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 发布,JavaScript 的 MVC 框架

Backbone.js 1.1.0 发布了,下载地址:

https://github.com/jashkenas/backbone/releases/tag/1.1.0

或者:

Development Version (1.1.0) 59kb, Full source, tons of comments
Production Version (1.1.0) 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 发布,JavaScript 的 MVC 框架

Backbone.js 1.2.1 发布,此版本更新内容如下:

此版本现已提供下载: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 发布,JavaScript 的 MVC 框架

Backbone.js 1.2.2 发布,此版本更新内容如下:

下载:

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 框架等相关知识的信息别忘了在本站进行查找喔。

本文标签:

上一篇实例讲解JavaScript的Backbone.js框架中的View视图(js viewbag)

下一篇详解Backbone.js框架中的模型Model与其集合collection(backbone.js中文教程)