我对这个世界很陌生,所以我需要一些澄清。也许我在这个问题上可能是错的。所以,请随时纠正我。
我正在研究 Marionette 和 Backbone 如何协同工作。哦耶。Marionette 为我们提供了 Backbone 的扩展。真是好东西。
对我来说不明显的是什么时候使用 Backbone 提供的路由机制,什么时候使用 Marionette 提供的发布者/订阅者模式。
有什么经验法则吗?
在这里,在骨干木偶中在哪里使用事件聚合器?,类似的讨论,但没有关于如何使用它或其他的建议。
我对这个世界很陌生,所以我需要一些澄清。也许我在这个问题上可能是错的。所以,请随时纠正我。
我正在研究 Marionette 和 Backbone 如何协同工作。哦耶。Marionette 为我们提供了 Backbone 的扩展。真是好东西。
对我来说不明显的是什么时候使用 Backbone 提供的路由机制,什么时候使用 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/
事件聚合器对于通知事物更有用。(想想一点点反馈)
路由器适用于您希望状态可保存的事物(想想 MPA 中的单独页面)
如果您不确定某事是事件还是页面,请考虑一下并提出单独的问题。