3

私はそれがグローバルスコープに自分自身を追加する方法、特に、store.jsのソースコードを見て持っていた:グローバルスコープにJavaScriptモジュールを追加するためのクロスプラットフォームの方法は何ですか?

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

私は最後の文this.store = storeが、どのように他のものについては理解できますか? moduledefineの機能は何ですか? this.store = storeは既にすべてのブラウザで動作しますか?

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

答えて

4

最初のケースはCommonJSで、Node.jsで最もよく使用され、AMD(Asynchronous Module Definition)のフレーバーです。モジュールとは、グローバルモジュールオブジェクトを定義して実行されるJavaScriptファイルです。そのファイルがmodule.exportsに設定されているものは、アプリケーションの他の部分でも利用できます。ファイル内のその他のものは、そのモジュールだけが非公開になります。ここにはgood blog postがあります。

もう1つはAMDのもう1つのフレーバーで、これは最も一般的にはrequirejsで実装されています。これはCommonJsと非常によく似ていますが、より一般的にはブラウザにあります。 Dojoフレームワークは、amdベースのフレームワークの良い例です。 Jqueryのコミュニティは、同様に多くの後ろになっています。 defineは、残りのアプリケーションがrequireを使用して引き込むことができるモジュールを、amdシステムに提供していることを通知します。

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

関連する問題