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

简介: BackboneJs入门学习[09]—Router路由实

BackboneJs入门学习—Router路由实践

在上一篇中,我们介绍了Router,但是并没有讲解Router是如何传递参数的。是的,

Router是如何匹配所给出的URL中的内容,并将对应位置的内容作为参数传递的呢,这篇中我们继续。

  1. Router如何映射


先来看一个示例:

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

<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

<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方法。

先看一个示例:

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的。我也受到启发:在拼搏的过程中,你或许什么都没有得到,可能还失去了很多,但是请乐观、坚持,总会在最后有所回报的!

加油!


相关文章
|
3月前
|
前端开发 测试技术 开发者
React Router的神奇之处:如何用导航与路由管理让你的复杂SPA飞起来?
【8月更文挑战第31天】本文全面解析了React Router——一款用于React应用的路由与导航管理库。通过定义不同路径并依据URL渲染组件,React Router支持路径匹配、参数路由及嵌套路由等多种模式。文章详细介绍了其基本与高级用法,如使用`Link`组件导航、`Switch`组件进行路径匹配及`NavLink`自定义活动链接样式。此外,还探讨了懒加载、代码分割等性能优化技巧,并提供了简单示例代码,帮助读者快速上手。遵循本文最佳实践,开发者能够更高效地利用React Router构建复杂的单页面应用。
73 0
|
6月前
|
存储 Web App开发 JavaScript
第十二章:vue路由进阶使用
第十二章:vue路由进阶使用
67 0
|
前端开发 网络架构
前端学习笔记202304学习笔记第十七天-vue3.0-动态路由匹配
前端学习笔记202304学习笔记第十七天-vue3.0-动态路由匹配
77 0
前端学习笔记202304学习笔记第十七天-vue3.0-动态路由匹配
|
前端开发 API 容器
|
前端开发
《Vue3实战》 第九章 路由
《Vue3实战》 第九章 路由
74 0
|
前端开发 JavaScript 网络架构
小满Router(第十二章-动态路由)
动态路由主要通过两个函数实现。router.addRoute() 和 router.removeRoute()。它们只注册一个新的路由,也就是说,如果新增加的路由与当前位置相匹配,就需要你用 router.push() 或 router.replace() 来手动导航,才能显示该新路由
155 0
小满Router(第十二章-动态路由)
|
前端开发 网络架构
前端学习笔记202304学习笔记第十七天-vue3.0-获取动态路由参数的两种方案1
前端学习笔记202304学习笔记第十七天-vue3.0-获取动态路由参数的两种方案1
99 0
|
前端开发
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法2
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法2
63 0
|
前端开发
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法
73 0