1

AMD モジュールを coffeescript で記述する場合、すべてが関数にラップされるため、すべてのファイルは次のようになります。

define 'myModule', ['dep1', 'dep2'], (dep1, dep2) ->
    funcA: ->
    funcB: ->
    # etc...
    funcZ: ->

私は自分のコードのインデントを最小限に抑えて理解しやすくするのが好きで、AMD がほぼすべてのものに一定レベルのインデントを追加する方法が嫌いです。それを回避する方法はありますか?

4

1 に答える 1

2

残念ながら、今のところはありません。しかし、まさにこの種のユースケース(およびその他、特に非同期コールバックコードと一般的なコールバックヘルに関する)に対処する機能の提案は、CoffeeScriptの問題で活発に議論されています。提案された機能は「バックコール」と呼ばれ、基本的には、この種のコールバックネストされたコードをよりシーケンシャルに見せるための構文変換です。モジュール定義は次のようになります。

(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) ->し、入力ファイルのすべての行に1レベルのインデントを追加するスクリプトを用意します。

したがって、ビルド手順は次のようになります。

cat myModule.coffee | add-amd | coffee -sc > myModule.js
于 2013-02-11T20:43:42.293 に答える