我对这个世界很陌生,所以我需要澄清一下。也许我在这个问题上可能是错的。所以,请随时纠正我。
我正在研究Marionette和Backbone如何协同工作。哦耶。 Marionette为我们提供了Backbone的扩展。非常好的东西。
对我来说不明显的是何时使用Backbone提供的路由机制以及何时使用Marionette的发布者/订阅者模式。
有没有经验法则?
这里,Where to use event aggregator in backbone marionette?,类似的讨论,但没有关于如何使用这个或其他的建议。
答案 0 :(得分:5)
我对路线管理的看法在我对Marionette(http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf)的书的免费预览中有解释
基本上,我的意见(其他人不一定分享它)是当用户通过URL“输入”应用程序时,应该使用Backbone的路由来配置应用程序状态。换句话说,它将解析参数,并调用适当的控制器操作。
但是一旦设置了初始状态,即使用户在应用程序中导航,也不应再触发路由代码。
以下是一个例子:
2
参数并使用该edit
参数调用id
控制器操作(该参数将获取该联系,显示正确的视图等)。换句话说,正在配置初始应用程序状态。请注意,这是我的观点,其他开发人员只需在用户点击链接时传递trigger: true
即可。但正如我在上面链接的书摘录中解释的那样,这往往会导致开发人员在javascript中创建“无状态应用程序”(例如,在URL中传递大量参数,即使它们应该存储在应用程序的状态中)。但是,默认情况下,Backbone的navigate
方法有trigger: false
。
Derick Bailey(木偶的创造者)也在这里讨论了这个问题:http://lostechies.com/derickbailey/2011/08/03/stop-using-backbone-as-if-it-were-a-stateless-web-server/
答案 1 :(得分:0)
事件聚合器对于通知事物更有用。 (想想一点反馈)
路由器适用于您希望状态可以保存的东西(想想MPA中的单独页面)
如果您不确定某件事是某个事件还是某个页面,那么请仔细考虑并提出单独的问题。