2013-09-27 21 views
0

我想用于我的新项目Coffee + Marionette + Require.js, 但我有模块加载查询的问题。模块将在主应用程序启动回调后启动;用法Marionette.module与AMD

# main.coffee 
require.config 
    paths: 
     # ... 
     app: '/js/app/app' 
     marionette: '/js/vendors/backbone.marionette' 
    shim: 
     # ... 
     'marionette': 
      deps: ['backbone'] 
      exports: 'Marionette' 
     'app': 
      deps: ['marionette'] 
      exports: 'App' 


require ['app'], (App) -> 
    App.start() 


# module.coffee 
define ['app'], (App) -> 
    MyModule = App.module('MyModule'); 
    MyModule.foo = -> 
     console.log 'bar' 
    return MyModule 


# app.coffee 
define (require) -> 
    App = new Marionette.Application 
    App.addInitializer -> 
     require 'module' 
     console.log 'App inited' 

    App.on 
     'start': -> 
      console.log 'App started' 

    return App 


# Output 
App inited 
App started 
Module inited 

我该如何定义模块,如果我想在初始化器中使用他?

回答

0

Marionette模块系统旨在成为require.js的一个简单替代方案。我会不鼓励使用两者,因为你会一直遇到循环依赖问题,尤其是如果你想拥有“每个文件一个类”组织。请注意,requirejs为您提供了所有牵线木偶模块的功能,还有更多功能(异步加载,项目构建等)。

从木偶文档

一些更多的阅读