2012-10-03 18 views
5

私がやっていることは、jQueryプラグインをNode.jsのjQueryで使用するように調整することです。

私が理解しているように、CommonJSは最も基本的なフォームでは、ライブラリをクロージャでラップする必要があり、そのクロージャは 'エクスポート'パラメータのパラメータとして利用できるようにする必要があります。そうすれば、コードは(名前付き変数を介して)独自の名前空間にきれいに含まれ、グローバル名前空間を汚染しません。

jQuery自体は '$'名前空間に該当する必要があります。

アラ:

var $ = require(jquery); 

しかし、私のプラグインはまた、 '$' 名前空間の下に収まる必要があります。

プラグインコード:

(function($) { 
    // plugin code goes here 
})(jquery); 

exports.jquery = jquery // will this work? 

例:

var $ = require(jquery); 
$ = require(jquery-csv.js); // will this work? 

は、ブラウザで動作するように、すべてが私のモジュールがあるにもかかわらず、 '$' 名前空間から呼び出せるように設定され'$'のサブネームスペースとしてセットアップします(つまり、 '$ .csv')。

単一のネームスペースに複数の必須を行う標準的な方法はありますか?そうでない場合は、実行可能な代替手段(プラグインコードで浅いコピーを行っています)がありますか?

注:無名関数ラッパーは、standard jquery guidelinesの後に続きます。

注:この修正はjquery-csvプラグインに適用されます。の

module.exports = exports = function (jquery) { 
    //You modify the jquery object here. 
}; 

変更:また、あなたはこのような何かを行うことができることを意味し

var $ = require("jquery"); 
require("jquery-csv")($); 

:私はこのような何かをやって考えることができます

答えて

2

あなたはプラグイン内のjQuery を要求すべきである:

var $ = require("jquery"); 

これもUMD (Universal Module Definition)の技術で、CommonJSとAMDの両方のための規格です。

はまた、私はちょうど私のノードのenvの設定が完了example for a jQuery plugin with UMD

+1

jqueryが実際に使用されていない場合は?両方のユースケースをカバーしようとしているので、jqueryが実際に存在するかどうかに関わらず$にバインドされます。 –

2

最も簡単な方法は、以下のようなものをやっているだろう$オブジェクトはjQueryプラグインの推奨に従って処理する必要があります。私は、あなたが言ったことをすでに知っていると信じています。

誰かがよりスマートな方法を考え出すだろうと確信しています:)しかし、これは今のところうまくいくはずです。また、変更されたjqueryオブジェクトを返すだけで、モジュールを最初にインクルードしたスコープの$オブジェクトに割り当てることもできます。答えは私が思ったよりも簡単であることが判明し

+0

を参照し、解決策はそれよりもさらに簡単でした。既存のネームスペースを変更しているため、プラグインへのエクスポート呼び出しを追加する必要はありません。代入なしでrequireを呼び出すと、

  • 11. ブーストジオメトリトランスを2つ組み合わせるにはどうすればいいですか?次のように
  • 12. これをワンライナーに組み合わせるにはどうすればいいですか?
  • 13. CheckingFuelMonadとHooplのStateモナドを組み合わせるにはどうすればいいですか?
  • 14. stat_ecdfとgeom_ribbonを組み合わせるにはどうすればいいですか?
  • 15. nockoutjsのスロットリングとサブスクリプションを組み合わせるにはどうすればいいですか?
  • 16. DataTriggerとEventTriggerを組み合わせるにはどうすればいいですか?
  • 17. eclipseのホットキーをcontrol + sと組み合わせるにはどうすればいいですか?
  • 18. import allと他のものを組み合わせるにはどうすればいいですか?
  • 19. VimとPydictionのオートコンプリート機能を組み合わせるにはどうすればいいですか?
  • 20. ボタンを入力と組み合わせるにはどうすればいいですか?
  • 21. 辞書をPythonの同じキーと組み合わせるにはどうすればいいですか?
  • 22. Silhouette-4.0.X UserAwareActionとキャッシュアクションを組み合わせるにはどうすればいいですか?
  • 23. ファクトリパターンをコードの柔軟性と組み合わせるにはどうすればいいですか
  • 24. Perlのsplitコマンドと空白のトリミングを組み合わせるにはどうすればいいですか?
  • 25. Swiftソート方法とRealmコンテナを組み合わせるにはどうすればいいですか?
  • 26. HTMLセレクタをSwitch文と組み合わせるにはどうすればいいですか?
  • 27. play frameworkとangular2を組み合わせるにはどうすればいいですか?
  • 28. 3つのセレクタをa:hoverタグと組み合わせるにはどうすればいいですか?
  • 29. RegularExpressionValidatorコントロールとRequiredFieldValidatorを組み合わせるにはどうすればいいですか?
  • 30. Intellij Community EditionをGWT UiBinderとうまく組み合わせるにはどうすればよいですか?