认识Backbone (五)
Backbone.Router(路由)/ Backbone.history(历史)
Backbone.Router 为客户端路由提供了许多方法,并能连接到指定的动作(actions)和事件(events)。 对于不支持 History API 的旧浏览器,路由提供了优雅的回调函数并可以透明的进行 URL 片段的转换。
页面加载期间,当应用已经创建了所有的路由,需要调用 Backbone.history.start(),或Backbone.history.start({pushState: true}) 来确保驱动初始化 URL 的路由。想要停止监听URL的路由,使用 Backbone.history.stop().
History 作为全局路由服务用于处理 hashchange 事件或 pushState,匹配适合的路由,并触发回调函数。 我们不需要自己去做这些事情 — 如果使用带有键值对的 路由,Backbone.history 会被自动创建。
<div>
<a href="#help">help</a>
<a href="#search/list">list</a>
<a href="#search/list/p6">list page6</a>
<a href="#file/image/logo.png">image logo</a>
<a href="#account/total">account total</a>
</div>
//action方式绑定URL
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
},
help: function() {
console.log('help')
},
search: function(query, page) {
console.log(query +'/'+ page)
},
file: function(path){
console.log(path)
},
view: function(path,action){
console.log(path +'/'+ action)
}
});
var route = new PageRoute();
Backbone.history.start(); //event方式绑定URL
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
}
});
var route = new PageRoute();
route.on('route:help',function(){
console.log('help')
});
route.on('route:search',function(query,page){
console.log(query +'/'+ page)
});
route.on('route:file',function(path){
console.log(path)
});
route.on('route:view',function(path,action){
console.log(path +'/'+ action)
});
Backbone.history.start();
route router.route(route, name, [callback])
动态修改URL的hash属性的匹配规则和动作函数。为路由对象手动创建路由,route 参数可以是 routing string(路由字符串) 或 正则表达式。 每个捕捉到的被传入的路由或正则表达式,都将作为参数传入回调函数(callback)。 一旦路由匹配, name 参数会触发 "route:name" 事件。如果callback参数省略 router[name]将被用来代替。 后来添加的路由可以覆盖先前声明的路由。
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
},
initialize: function () {
this.route("help", 'help', function () {
console.log('oo, help');
});
},
help: function() {
console.log('help')
},
search: function(query,page) {
console.log(query +'/'+ page)
},
file: function(path){
console.log(path)
},
view: function(path,action){
console.log(path +'/'+ action)
}
});
var route = new PageRoute();
route.route("search/:query/p:page", 'search', function(query,page){
console.log('oo, '+ query +'/'+ page)
});
Backbone.history.start();
navigate router.navigate(fragment, [options])
每当你达到你的应用的一个点时,你想保存为一个URL, 可以调用navigate以更新的URL。 如果您也想调用路由功能, 设置trigger选项设置为true。 无需在浏览器的历史记录创建条目来更新URL, 设置 replace选项设置为true。
var PageRoute = Backbone.Router.extend({
routes: {
"help": "help", //1 #help
"search/:query": "search", //2 #search/list
"search/:query/p:page": "search", //3 #search/list/p6
"file/*path": "file", //4 #file/image/logo.png
":path/:action": "view" //5 #account/total
},
help: function() {
console.log('help')
},
search: function(query,page) {
console.log(query +'/'+ page)
},
file: function(path){
console.log(path)
},
view: function(path,action){
console.log(path +'/'+ action)
}
});
var route = new PageRoute();
setTimeout(function(){
route.navigate("search/list/p5",{trigger: true});
},2000);
setTimeout(function(){
route.navigate("help",{trigger: true});
},4000);
Backbone.history.start();
认识Backbone (五)的更多相关文章
- 用Backbone.js创建一个联系人管理系统(五)
原文: Build a Contacts Manager Using Backbone.js: Part 5 这是这系列教程最后一部分了. 之前所有的增删改都在前端完成. 这部分我们要把Contact ...
- Backbone源码解析(五):Route和History(路由)模块
今天是四月十二号,距离上次写博已经将近二十天了.一直忙于工作,回家被看书的时间占用了.连续两个礼拜被频繁的足球篮球以及各种体育运动弄的精疲力竭,所以很少抽时间来写技术博客.今天抽出时间把backbon ...
- (五)backbone - DEMO - 通信录改造之使用requirejs
DEMO介绍是 DEMO通信录的扩展,使用requirejs模块化整合 大体实现 • model文件 model/contact.js define(function (){ // user cont ...
- 论文阅读笔记五十九:Res2Net: A New Multi-scale Backbone Architecture(CVPR2019)
论文原址:https://arxiv.org/abs/1904.01169 摘要 视觉任务中多尺寸的特征表示十分重要,作为backbone的CNN的对尺寸表征能力越强,性能提升越大.目前,大多数多尺寸 ...
- 浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore
本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)--requirejs + angular + a ...
- Backbone入门讲解
Backbone是一个实现了web前端mvc模式的js框架. 一种解决问题的通用方法,我们叫做模式. 设计模式:工厂模式,适配器模式,观察者模式等,推荐js设计模式这本书.设计模式是一种思想. 框架模 ...
- 用Backbone.js教程系列的链接
整理了一下用Backbone.js系列教程链接. Backbone.js入门教程 用Backbone.js创建一个联系人管理系统(一) 用Backbone.js创建一个联系人管理系统(二) 用Back ...
- 【转】Backbone使用总结
转自 http://www.pchou.info/javascript/2014/06/26/backbone-summary-01.html 开始在项目中大规模使用backbone,一路磕磕碰碰, ...
- 【再探backbone 01】模型-Model
前言 点保存时候不注意发出来了,有需要的朋友将就看吧,还在更新...... 几个月前学习了一下backbone,这段时间也用了下,感觉之前对backbone的学习很是基础,前几天有个园友问我如何将路由 ...
随机推荐
- DOM - Element 对象
http://www.runoob.com/dom/dom-element.html Element 对象 Element 对象代表 XML 文档中的一个元素.元素可以包含属性.其他元素或文本.如果一 ...
- deque,list,queue,priority_queue
1.deque deque双端队列容器与vector一样,采用线性表顺序存储结构,但与vector唯一不同的是,deque采用分块的线性存储结构来存 储数据,每块的大小一般为512字节,称为一个deq ...
- [cocos2d-x]屏幕自适应解决的方法
近期在写一个项目,要求pc,ipad,andriod平台上都能够执行,所以选择用cocos2d-x来开发. 我们的资源大小是1024*768的,在pc上和苹果上都是没有问题的,但是到了andriod上 ...
- android新浪分享实例
新浪分享比较简单,新浪有提供完整的demo. android实现新浪的分享功能,分3种分享情况: 纯文本的,带图片的,图片为本地图片(传入的是图片在手机的地址),第2种带图片的是,网络图片,图片地址为 ...
- Indiegogo: An International Crowdfunding Platform to Raise Money
Indiegogo: An International Crowdfunding Platform to Raise Money The world's funding platform. Fund ...
- jQuery 自学笔记—5 遍历
什么是遍历? jQuery 遍历,意为“移动”,用于根据其相对于其他元素的关系来“查找”(或选取)HTML 元素.以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止. 下图展示了一个家族树. ...
- Androidclient和server端数据交互的第一种方法
网上有非常多样例来演示Android客户端和server端数据怎样实现交互只是这些样例大多比較繁杂,对于刚開始学习的人来说这是不利的.如今介绍几种代码简单.逻辑清晰的交互样例,本篇博客介绍第一种: 一 ...
- hdu1151 Air Raid,DAG图的最小路径覆盖
点击打开链接 有向无环图的最小路径覆盖 = 顶点数- 最大匹配 #include <queue> #include <cstdio> #include <cstring& ...
- SE 2014年4月3日
一 OSPF协议都支持哪些特殊区域?每种特殊区域都有什么特点. OSPF协议支持的特殊区域主要有stub区域.totally stub区域以及nssa区域,其中stub区域一般出现在末梢网络,即它的 ...
- RESTEasy:@FormParam、@PathParam、@QueryParam、@HeaderParam、@CookieParam、@MatrixParam说明
在第一RESTEasy教程我们已经学习了基本的Web服务和休息我们已经测试了一个简单的REST风格的Web服务.在本教程中,我们将显示如何将Web应用程序元素(形式参数,查询参数和更多)为REST风格 ...