我对 Backbone.js / Marionette.js 中的路由有三个问题:
- 1) 如何获取我的应用程序的路由器已注册的所有路由的列表?
例如对于 Express.js(在 Node.js 中),它将是app.routes
.
我正在尝试对 Backbone.js / Marionette.js 做同样的事情,但找不到任何这样做的属性或方法。
- 2)我想清理我的网址并删除它们前面的主题标签“#”,我知道它们会触发路由器,那么我该如何做到这一点?
我找到了以下原型的主干路由器的脚本,但它更像是一个黑客而不是一个稳定的解决方案:没有哈希 URL 的简单主干路由
- 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() 并运行它
先感谢您 !