什么是Marionette AppRouter +控制器优于Backbone.Router?

Jie*_*eng 16 backbone.js marionette

从我的理解,差异是AppRouter应该存在的事件的回调函数Controller,而不是相同的Router对象.此外AppRouter和控制器之间存在一对一的关系,我的所有代码都来自Router,现在转移到Controller,我没有看到太多的意义吗?那么为什么要用呢?我肯定错过了什么?

Dav*_*ulc 13

我认为它的方式是分开关注点:

  • 控制器实际上完成工作(组装数据,实例化视图,在区域中显示它们等),并且可以更新URL以反映应用程序的状态(例如显示的内容)
  • 路由器只是根据在地址栏中输入的URL触发控制器操作

所以基本上,如果你在应用程序的起始页面上,它应该可以正常工作而不需要任何路由器:你的动作(例如点击菜单条目)只需触发各种控制器动作.

然后,在路由器上添加"如果调用此URL,则执行此控制器操作".在控制器中,您可以使用更新显示的URL navigate("my_url_goes_here").请注意,你没有通过trigger: true.

有关更多信息,请查看Derick的博客文章http://lostechies.com/derickbailey/2011/08/28/dont-execute-a-backbone-js-route-handler-from-your-code/(段落"The" AHA!"关于Router.Navigate的第二个论点的时刻")

我在Marionette的书的免费预览中也详细介绍了这个主题.请参见第32-46页:http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf