3

store.jsのソースコード、特にそれ自体がグローバルスコープにどのように追加されるかを調べていました:

if (typeof module != 'undefined') { module.exports = store }
else if (typeof define === 'function' && define.amd) { define(store) }
else { this.store = store }

最後のステートメントは理解できthis.store = storeますが、他のステートメントはどうですか? moduleおよびdefine関数とは何ですか? this.store = storeまだすべてのブラウザーで動作しませんか?

より一般的には、グローバル スコープにモジュールを追加するための正しいクロスブラウザーの方法は何ですか?

4

1 に答える 1

4

最初のケースは、Node.js で最もよく使用され、AMD ( Asynchronous Module Definition ) のフレーバーであるCommonJSの場合です。モジュールは、定義されたグローバル モジュール オブジェクトで実行される JavaScript ファイルです。そのファイルに設定されているものは何でも、アプリの他の部分で利用でき、ファイル内の他のすべてはそのモジュールだけにプライベートのままです。ここに良いブログ記事があります。module.exports

2 つ目は AMD の別のフレーバー用で、最も一般的にはrequirejsで実装されます。これは CommonJs と非常によく似た考え方ですが、より一般的にはブラウザーで見られます。Dojo フレームワークは、amd ベースのフレームワークの 1 つの良い例です。Jquery コミュニティも多くの点で遅れをとっています。defineは、アプリの残りの部分が を使用してプルできるモジュールを与えることを amd システムに伝えますrequire

最終バージョンは、プレーンなジェーン ブラウザーで実行する一般的なシナリオです。thisDOMWindow である可能性が最も高いため、store オブジェクトは Web ページ全体でグローバルになります。

于 2012-01-12T03:09:40.883 に答える