这是我第一次尝试使用木偶,我已经设计了我的应用程序的应用程序基础结构,如下所示。
基本上,我们的想法是拥有一个可以在多个地方重复使用的“答案”模块,例如Feed模块,配置文件模块等
Answers模块的示例:
@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)我是否可以直接从其他模块访问AnswersModule中的'listAnswers'方法,例如饲料模块?那我该怎么做呢?
3)对于需要在自己的布局中嵌入AnswersModule的每个模块,需要一个不同的URL来获取不同的答案列表,即feed有自己的答案提取url,profile有自己的答案URL。如何通过Answers模块请求不同的列表?
我对牵线木偶很新,并且非常希望在继续之前得到理念和概念。对此有任何建议将不胜感激!
答案 0 :(得分:1)
我会避免直接调用另一个模块。木偶包括this library,这非常有用。
您的模块应该通过事件,命令和请求/响应进行交互。这将使您的模块分离,使您的应用程序更加模块化。
所以你的其他模块会做这样的事情:
API =
someMethod: ->
App.commands.execute('list-answers', { url: 'amazing-answers' })
然后你的AnswersModule会将它自己设置为响应该命令并执行它需要做的事情。
有关概述,请参阅this talk。