BackboneJs入门学习[09]—Router路由实践

2023-10-07 16:23:17 浏览数 (2)

BackboneJs入门学习—Router路由实践

在上一篇中,我们介绍了Router,但是并没有讲解Router是如何传递参数的。是的, Router是如何匹配所给出的URL中的内容,并将对应位置的内容作为参数传递的呢,这篇中我们继续。

  1. Router如何映射

先来看一个示例:

代码语言:javascript复制
var AppRouter=Backbone.Router.extend({
//routers是散列映射属性,将状态与活动关联起来,添加路由路径,要求重写父类的routes这个对象

	routers:{
			"posts/:id":"getPost",
			"*actions":"defaultRoute"
	},
	getPost:function(id){
			alert(id);
	},
	defaultRoute:function(actions){
		alert(actions);
	}
});
var app_router=new AppRouter;
//Backbong.history.start()能让我们在点击后退或是前进按钮时同样触发路由事件
Backbone.history.start();
----------
//要传递的参数为66,即id为66的参数
<a href="#/posts/66">Id=66</a>

讲解:Router匹配“ # ” 标签*之后内容的方法:*

  1. 用“:”来把#后面对应的位置作参数;
  2. 用“*”能够匹配所有的URL。

图示:

在a 标签的href中,“#”后面跟着的是posts/66, 而在routers对象中,“posts/:id"中冒号” : "后面的id就是匹配的参数,那么就形成**“#/posts/66”与“posts/:id”的匹配;**

再例如: demo 01

代码语言:javascript复制
<script>
routes:{
	"/download/*path":"downloadFile"
},
downloadFile(){
	alert(path);
	//输出:user/images/1.jpg,即* 能匹配所有的url;
}

</script>
<body>
链接为:
<a href="#/download/user/images/1.jpg">点击查看结果</a>
</body>

再如: demo 02

代码语言:javascript复制
<script>
routes:{
	"/:route/:action":"loadView"
	//表明在loadView中接受2个参数:route和action,因为route和action之前都有一个冒号":"
},

loadView(route,action){
	alert(route "&" action);
	//输出:dashboard&graph,即冒号“:”匹配的是href的url中对应的字符串参数
}

</script>
<body>
链接为:
<a href="#/dashboard/graph">点击查看结果</a>
</body>

通过以上的讲解,你是否对Router的匹配规则有更清楚的认识?没有的话,请留言,我们多交流哈~

2. 手动触发Router——navigate()

在一些情况下,我们不像像要点击了a 标签之后才发生url的变更,而希望自动发生url的变更,那么这个时候,我们就可以使用到Router的navigate方法。

先看一个示例:

代码语言:javascript复制
routes:{
	"posts/:id":"getPost",
	"manual":"manual",
	"*actions":"defaultRoute"
},
getPost:function(id){
   alert("id=" id);
},
manual:function(){
	alert("触发脚本...");
	app_router.navigate("/posts" error404,{
	trigger:true,
	replace:true
	});
	//navigate的第一个参数表示要变化或是替换的的url
	//trigger为true表示触发事件;为false只是url变化,不触发事件
	//replace表示url替换,而非转到另一个url;为true则浏览器的history不会记录该变动,即在历史记录中不会有url发生改动的记录
}
链接为:
//点击之后,会触发posts/:id对应的方法
< a  href="#/manual">点击触发脚本< /a >

通过navigate方法,我们就能实现url的更新。在Backbone的官方文档中这样解释:

每当你达到你的应用的一个点时,你想保存为一个URL, 可以调用navigate以更新的URL。

Ok,这一篇中我们介绍了Router的相关方法与匹配规则,下一篇中我们又将进入到Backbone的新模块的学习中——View模块。

每篇一语:

”周五公司里接着中秋这个节日举办了博饼游戏,首先选出每一桌的状元,和每一桌分数最低的 衰神。n位状元再次Pk,n 位衰神也再次Pk,又选出了1位状元和1位衰神,结果在状元与衰神的Pk中,衰神逆袭了!“这个剧情似乎还是挺nice的。 我也受到启发:在拼搏的过程中,你或许什么都没有得到,可能还失去了很多,但是请乐观、坚持,总会在最后有所回报的! 加油!

0 人点赞