【问题标题】:How to setup multiple routers and controllers in Backbone.Marionette如何在 Backbone.Marionette 中设置多个路由器和控制器
【发布时间】:2013-11-05 09:30:50
【问题描述】:

随着我的应用程序的增长,我觉得需要更结构化的路由器/控制器设置。 Marionette 文档提到以下内容:

建议您将控制器对象划分为相关功能的小块,并拥有多个路由器/控制器,而不是只有一个巨大的路由器和控制器。

如果有这种结构的例子,那就太好了。假设我有一个由三个部分组成的网站;人物、媒体和文章。理想情况下,我希望每个部分都有路由器/控制器。像这样的:

App
  -- AppRouter
       -- AppController
            -- AppLayout
            -- PeopleRouter
               -- PeopleController
                  -- PeopleLayout
            -- MediaRouter
               -- MediaController
                  -- MediaLayout
            -- ArticleRouter
               -- ArticleController
                  -- ArticleLayout

对我来说非常不清楚的是如何让路由(“/people/detail/1”)由另一个路由器而不是 AppRouter 处理。似乎我必须为每个部分创建模块,但这是否适用于 RequireJS?使用两种不同的模块似乎有点奇怪……

如果有人能指出我正确的方向,那就太好了,我在网上找到的所有例子都让我有点困惑。

【问题讨论】:

  • 我和你有同样的困惑,因为没有明确说明你可以(并且应该)拥有多个AppRouter。 Marionette Modules 是一种管理命名空间和隐藏数据/功能的方法。我仍在尝试解决所有这些问题,但我认为更好的目录结构将如 David Sulc 书籍的代码所示:github.com/davidsulc/marionette-gentle-introduction/tree/master/…apps 目录中的每个应用程序都有自己的AppRouter

标签: marionette


【解决方案1】:

看看我的Marionette book开发的example application

你可以看到2个路由器文件:

如果您想了解有关本书中使用的路由方法的更多信息,请参阅sample 中有关该主题的免费章节。虽然它没有解释各种路由器文件,但它解释了将应用程序状态管理与 URL 管理分离的想法;您可能会感兴趣。

希望这会有所帮助!

【讨论】:

  • 调用 navigate 不会调用控制器方法是没有意义的。如果它不自己调用它,那么用方法定义路由有什么意义?在您的示例中,如果您只是省略了 Router 实例,我看不出有什么区别。
猜你喜欢
  • 1970-01-01
  • 2013-06-29
  • 2020-01-22
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
相关资源
最近更新 更多