コードを管理し整理するノードJsのモジュラー方法、すべての関数は、各モジュールに存在しているNodeJs
まず、モジュールは何ですか?
簡単に言えば、モジュール間の特定の依存関係があることが特定の機能を持つファイルは、モジュールを使用することができますモジュールは、これらの依存関係を統合することは非常に良いことができます。
第二に、なぜモジュールを使用する必要があります
名前の競合を解決するための2.1
2.2コードの再利用性を向上させます
2.3依存関係の管理を避けます
2.4は、コードの非同期ロードを実現ページロードのパフォーマンスを改善し、ウェブフリーズを回避することができます
チーム分裂を助長2.5
第三に、モジュールの仕様
現在、3つの一般モジュールの仕様があります:AMD、CMD、Common.js
まず簡単な紹介:
3.1、AMD(非同期モジュール定義=非同期モジュール定義)、この仕様では、クライアントのブラウザ環境に適した非同期ロード・モジュール、この仕様のrequirejsアプリケーションです。主に、ブラウザのページレンダリングが停止する時期がロードされたJS JSファイルの依存関係を解決し、より失われたファイルにページ応答時間をロードするために長いです。
モジュール参照:
JSコード:
(依存関係、?IDを?、工場)を定義
アルファ作成モジュールは、必要と輸出に依存し、モジュールを識別し、モジュールはベータ版として識別されます
定義( "アルファ" [ "必要"、 "エクスポート"、 "ベータ"]、関数(必要、輸出、ベータ){ export.verb = 関数(){ 戻りbeta.verb(); // または: リターンが必要( "ベータ" ).verb(); } })。
定義と同様の方法CommonJS
定義(関数(){ VARの輸出= {}; exports.say = 関数(){ アラート( 'こんにちは' ); }; 戻り輸出; });
3.2、CMD:(共通モジュール定義)、seajs尊敬されている規範、国内の仕事の大きなニウYubo。
私たちはリロードする必要がある主な制御JSファイルの読み込みタイミング、
(工場)を定義します。
(ID ?, DEPS ?,工場)を定義します。
時間の関数、ブロック工法などの工場は、コンストラクタは、モジュールが浮上することができるインターフェイスを取得するために実行されます。
(DEFINE 関数を(必要、輸出、Module1の){ // モジュールコード })。
3.3、Common.Js:ファイルをロードする同期方法を使用して、唯一のサーバ(NodeJsプラットフォーム)に適用されます
デモ:model.js
VaRの名= "アレイ" 機能のprintName(){ にconsole.log(名); } 関数printFullName(firstNameの){ にconsole.log(firstNameの + 名) } module.exportsは = { のprintName:のprintName、 printFullName:printFullName } VARの nameModule =必要とする( "./ model.js" ) nameModule.printName() // "アレイ」 nameModule.printFullName( 『ボブ』) // 『ボブ・アレイ』
実行します。
注意:
-
別のファイルには、各モジュールは、グローバルオブジェクトのプロパティとして定義されない限り、モジュール内の別個の範囲に定義された変数は、他のモジュールによって読み取ることができないモジュールであります
-
出力モジュール:モジュールは唯一つの出口、module.exportsはオブジェクトであり、我々は、オブジェクトモジュールの出力にコンテンツを配置する必要があり
-
ロード・モジュール:ロード・モジュールは、ファイルを読み込み、実行方法の使用、ファイルは、要求されたモジュールを返すことができない場合は、内部module.exportsはオブジェクトを返し、その後、あなたがエラーをスローしなければならない「必要」が必要
第四に、モジュールの機能
4.1独立。機能コードモジュールは、独立して、各モジュールとモジュールの機能に書き込まれます
VARモジュール4.2で使用される変数を定義するローカル変数です
4.3モジュールは、モジュールID(モジュール名)、Esportsも(輸出対象)を含むモジュールのオブジェクトを持っています
4.4モジュールは、外部の方法または使用の性質に露出する必要がある場合、上記の目的の実現は、輸出に添加されます。
4.5モジュールが必要(「モジュールID」)を使用して、メソッドは、オブジェクトモジュールは、オブジェクトをエクスポートし返します。
第五に、カスタムモジュール
私たちは、モジュールがJSファイルで、モジュールの定義から知っているので、モジュールの定義は、我々はちょうどJSのようなファイルを作成します
ファイルa.js
機能Tellmeの(){ にconsole.log(「これはa.jsです」)。 }
(a.jsファイルにおいて、我々は、単に我々が現在のモジュールで使用できるモジュールの独立性に基づいて(内部変数および関数は、このモジュールのみを使用することができる)メソッドを定義するので、我々は、モジュール輸出内のオブジェクトを使用することができ外用出力モジュールの機能の派生オブジェクト)。
機能sayHi(){ ;はconsole.log( "こんにちは") } // (外用)の非常に重要な、関数導出モジュール exports.tellMe = Tellmeのと、
モジュール定義が完了すると、次のように使用される、我々はファイルb.js a.jsモジュールを使用します
b.js
VaRの AA =が必要です( "./ a.js"); // 導入モジュール aa.tellMe(); // 使用する機能モジュール
注意:内部のファイル内のモジュールの導入を、あなたはそれ以外の場合はエラーになり、相対パス/、/省略することはできませんを追加する必要があります。あなたは接尾辞を省略することができます。
ラン