不幸的是,現在不行。但是一個功能提案可以完全解決這種用例(以及其他問題,特別是關於異步回調代碼和一般回調函數)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