不幸的是,现在不行。但是一个功能提案可以完全解决这种用例(以及其他问题,特别是关于异步回调代码和一般回调函数)is being actively discussed in the CoffeeScript Issues。所提出的功能被称为“backcalls”,它基本上是一种语法转换,使得这种回调嵌套代码看起来更加顺序。你的模块定义会是什么样子:
(dep1, dep2) <- define 'myModule', ['dep1', 'dep2']
funcA: ->
funcB: ->
# etc...
funcZ: ->
如果你想要的东西的工作现在,有一两件事你可以做的是一个预处理步骤添加到您的构建配置,以便define ...
线和压痕在进入CoffeeScript编译器之前被添加。
您可以与.coffee源上的一些特殊的注释声明你的模块:
#!module=myModule
#!dependencies=dep1,dep2
funcA: ->
funcB: ->
# etc...
funcZ: ->
,然后有一个脚本,将阅读这些评论并产生define 'myModule', ['dep1', 'dep2'], (dep1, dep2) ->
行和缩进一个级别添加到每一行在输入文件中。
所以您构建步骤看起来是这样的:
cat myModule.coffee | add-amd | coffee -sc > myModule.js
的backcall语法看起来很有趣。我认为,如果我要添加一个预处理步骤,它将成为AMD转换器的常见选择。 – gregsabo 2013-02-13 02:00:57
@gregsabo这是一个很好的选择。更好的是:看起来[RequireJS提供了一个工具](http://requirejs.org/docs/commonjs.html)就是这么做的。看起来'r.js'工具虽然是JS代码转换器,但它必须是CoffeeScript编译器之后的后处理器。祝你好运:) – epidemian 2013-02-13 02:46:09