1

这是我第一次尝试使用木偶,我已经设计了我的应用程序的应用程序基础架构,如下所示。

本质上,这个想法是有一个可以在多个地方重复使用的“答案”模块,即饲料模块、配置文件模块等

在此处输入图像描述

答案模块的示例如下:

@MyApp.module "AnswersModule", (MusesModule, App, Backbone, Marionette, $, _) ->
  class AnswersModule.Router extends Marionette.AppRouter
    appRoutes:
      "answers" : "listAnswers"

  API =
    listAnswers: ->
      //Method will fetch a list of muses and populate a view template
      AnswersModule.List.Controller.listAnswers()

  App.addInitializer ->
    new AnswersModule.Router
      controller: API

问题:

1) 这种设计是否符合使用木偶的最佳实践?

2) 我可以/我应该能够直接从其他模块(例如 Feed 模块)访问 AnswersModule 中的“listAnswers”方法吗?我应该怎么做呢?

3) 对于需要在自己的布局中嵌入 AnswersModule 的每个模块,需要不同的 URL 来获取不同的答案列表,即提要有自己的 url 用于获取答案,配置文件有自己的 URL 来获取答案。如何通过答案模块请求不同的列表?

我对木偶比较陌生,真的很想在继续之前得到这个想法和概念。任何关于上述的建议将不胜感激!

4

1 回答 1

1

我会避免直接调用另一个模块。Marionette 包含这个非常有用的库。

您的模块应该通过事件、命令和请求/响应进行交互。这将使您的模块解耦并使您的应用程序更加模块化。

所以你的其他模块会做这样的事情:

API =
  someMethod: ->
  App.commands.execute('list-answers', { url: 'amazing-answers' })

那么您的 AnswersModule 将自行设置以响应该命令并执行它需要执行的操作。

请参阅此演讲以获得良好的概述。

于 2013-10-02T00:58:20.060 回答