0

2つの簡単なコーヒースクリプトとアセットパイプラインがあります。私が得ました:

(function() {
  window.App.Test_widget = {...}
}).call(this);
(function() {
  $.widget("ui.Test_widget", window.App.Test_widget);
  $(document).ready(function() {...});
}).call(this);

しかし、私は1)クロージャをマージします2)クロージャパラメータを追加します

(function($) {
  var App;
  App.Test_widget = {...}
  $.widget("ui.Test_widget", App.Test_widget);
  $(document).ready(function() {...});
})(jQuery);

私はこれを実装する方法をグーグルできません

UPD:1)各ファイルを異なるクロージャに配置したくありません。これをコントロールしたい2)可能であればウィンドウに何も入れたくない

答えは単純です:「裸のオプションを使用してください。スプロケットについてはコミットを参照してください」

4

2 に答える 2

2

そのレベルの出力をきめ細かく制御したい場合は、CoffeeScriptに実行させるのではなく、JavaScriptを自分で作成する必要があります。CoffeeScriptの提唱者として、CoffeeScriptを使用する場合は、各ファイルに独自のスコープを与えるラッパーなど、それに伴う特定の規則を受け入れる必要があります。ファイル間で変数を共有するために、ファイルを連結する自由が失われます。

ただし、言及する価値はあります

  1. CoffeeScript 1.2.0以降では、ラッパーは必要な場合にのみ追加されます。少なくとも最初のファイルでは、そうではありません。(編集:私はこれについて間違っていました;この機能は1.1.3に存在していましたが、1.2.0より前に消えました)
  2. 関数の先頭に書き込む$ = jQueryことは、意味的には、名前が付けられた引数を持ち、その引数の値として$渡すことと同じです。したがって、jQueryをモードで使用するには、各CoffeeScriptファイルの先頭にjQuery配置するだけで済みます。$ = jQuerynoConflict
于 2012-04-26T15:58:13.897 に答える
-1

あなたが説明しているのは延期されていると思います...2つのクロージャが終了した後に何かをしたいですか?その場合は、jQuery1.5の遅延インフラストラクチャを調べてください。

于 2012-04-26T14:41:37.770 に答える