【发布时间】:2013-08-16 13:33:06
【问题描述】:
我有三个关于 Backbone.js / Marionette.js 中路由的问题:
- 1) 如何获取应用程序的路由器已注册的所有路由的列表?
例如,对于 Express.js(在 Node.js 中),它将是 app.routes。
我正在尝试对 Backbone.js / Marionette.js 执行相同的操作,但找不到执行此操作的任何属性或方法。
- 2) 我想清理我的 URL 并删除它们前面的主题标签“#”,我知道它们会触发路由器,那么我该如何做到这一点?
我找到了下面的 Backbone 路由器原型的脚本,但它更像是一个 hack,而不是一个稳定的解决方案:Simple backbone routing without hash URLs
- 3) Backbone.js / Marionette.js 中是否可以有子路由器?
我所说的子路由器是指只处理部分 url 的路由器,例如:
var AppRouter = Backbone.Router.extend({
routes: {
'articles' : 'MyArticleRouter'
}
});
var MyArticleRouter = Backbone.Router.extend({
routes: {
'science' : 'someMethod',
'literrature' : 'someOtherMethod'
}
});
通过让我在 AppRouter 中定义主路由以及在特定类别的子路由器中定义所有子路由(第二个斜杠“/”之后的部分),这将进一步对我的 URL 进行分类。
因此对于以下 URL:“hostname/articles/science”,路由过程将如下所示:
- 1) 将“/articles/science”传递给 AppRouter
- 2) AppRouter 拆分 URI 并获取“/articles”部分
- 3) AppRouter 找到注册的“/articles”路由
- 4) AppRouter 识别出 MyArticleRouter 已绑定到该 URI 元素
- 5) AppRouter 将路由转发到该路由器,并且仅将“/science”元素作为路由传递
- 6) MyArticleRouter 将“/science”路由到 someMethod() 并运行它
提前谢谢你!
【问题讨论】:
标签: backbone.js routes marionette