Backbone.js 如何构造主干木偶应用程序?
我有一个应用程序,我想创建使用骨干木偶。基本上,它的UI结构非常简单。有:Backbone.js 如何构造主干木偶应用程序?,backbone.js,marionette,Backbone.js,Marionette,我有一个应用程序,我想创建使用骨干木偶。基本上,它的UI结构非常简单。有: 两个顶级区域,一个用于菜单,另一个用于内容 菜单区域显示菜单视图 内容区域显示两个相邻的视图 左一个用于子导航 正确的是针对实际内容 例如,菜单可能在应用程序的两个部分之间切换,例如“邮件”、“日历”和“联系人”。这些部件中的每个部件都有自己的子导航,子导航应显示在子导航视图中,每个部件都有一个默认视图。例如,“邮件”部分可能是“收件箱”视图,“日历”部分可能是“月份”视图 所以,一般来说,我们有一个嵌套的导航
- 两个顶级区域,一个用于菜单,另一个用于内容
- 菜单区域显示菜单视图
- 内容区域显示两个相邻的视图
- 左一个用于子导航
- 正确的是针对实际内容
#mail
和#calendar
等部分提供路由
子导航视图应该有自己的路由器。例如,邮件子导航视图可以有一个路由器,用于收件箱
和发送
最后我想要一个路由,比如#邮件/收件箱
,但是第一部分应该由顶级路由器处理,第二部分应该由次级路由器处理
我的问题是,我是否可以嵌套路由器,使子层路由器不需要知道URL前缀(如“邮件”),并且存在级联路由。这可能吗
或者这种方法完全错了?我不知道木偶是否有解决方案,但有一个名为的插件,它提供了您想要的功能 以这种方式分离子路由是一种合法的模式,我以前也使用过。然而,我得出的结论是,在主应用程序路由器中拥有每个部分的“主”路由并不是一条可行之路,因为它分离了应该共存的关注点。相反,我已经开始为路由器实现一个公共基类,它提供了一个“根”URL: 用法:
var CalendarRouter = BaseRouter.extend({
//all routes will be relative to "calendar"
urlRoot:"calendar",
routes: {
//...
}
}):
当然,在我的例子中,这也是有意义的,因为我在基类中定义了其他常见的路由器任务。只是为了避免为每个路由url键入额外的“日历”前缀并不能真正保证这一点
编辑:只是澄清一下,Backbone.subcure插件不会强制您在主路由器中定义根路由,您可以使用与我建议的基类相同的方式使用它。但是,如果您只需要路由前缀,那么基类是一个更轻、更简单的解决方案
var CalendarRouter = BaseRouter.extend({
//all routes will be relative to "calendar"
urlRoot:"calendar",
routes: {
//...
}
}):