2013-04-03 182 views
1

这是我第一次尝试使用木偶,我设计了我的应用程序的应用程序基础结构,如下所示。如何从另一个模块(Backbone Marionette)访问模块的API

本质上说,这个想法是有一个“答案”模块,它可以在多个地方,即进纸模块可以重复使用,数据模块等

enter image description here

什么样的答案模块将有所如示例:

@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'方法,例如: Feed模块?我应该怎么做呢?

3)对于需要将AnswersModule嵌入到它们自己的布局中的每个模块,需要不同的URL来获取不同的答案列表,即feed有自己的答案获取url,profile具有自己的答案URL。我如何通过答案模块申请不同的列表?

我对于牵线木偶颇为陌生,并且很想在继续之前就明白这个想法和概念。任何建议上述将不胜感激!

+0

我的回答对您有帮助吗?让我知道我是否可以改进它 – martin308

回答

1

我会避免直接调用另一个模块。木偶包括​​这是非常有用的。

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

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

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

那么你AnswersModule都会设定它的自我了回应称命令,做它需要做的。

请参阅this talk以获得良好的概述。

相关问题