Node.jsの研究ノート(c)は、モジュールの基礎

コードを管理し整理するノード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を?、工場)を定義
    IDの最初のパラメータは、ストリングタイプ識別子は、モジュールを示すオプションです。ローダに要求されたスクリプトを識別するために定義されたデフォルトの識別モジュールがなければならない場合。ある場合には、モジュールの識別は、トップレベルまたは絶対同一でなければなりません。
    2番目のパラメータ依存性は、識別モジュールリテラルアレイモジュールが定義されている、現在の依存モジュールです。
    三番目のパラメータ、工場、インスタンス化された関数やオブジェクトの必要性。

アルファ作成モジュールは、必要と輸出に依存し、モジュールを識別し、モジュールはベータ版として識別されます  

定義( "アルファ" [ "必要"、 "エクスポート"、 "ベータ"]、関数(必要、輸出、ベータ){ 
    export.verb = 関数(){
         戻りbeta.verb();
         // または:
        リターンが必要( "ベータ" ).verb(); 
    } 
})。

定義と同様の方法CommonJS

定義(関数(){
 VARの輸出= {}; 
exports.say = 関数(){ 
アラート( 'こんにちは' ); 
}; 
戻り輸出; 
});

 

3.2、CMD:(共通モジュール定義)、seajs尊敬されている規範、国内の仕事の大きなニウYubo。

私たちはリロードする必要がある主な制御JSファイルの読み込みタイミング、

(工場)を定義します。
 (ID ?, DEPS ?,工場)を定義します。
グローバル関数は、定義モジュールのために、定義します。
文字列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(); // 使用する機能モジュール

注意:内部のファイル内のモジュールの導入を、あなたはそれ以外の場合はエラーになり、相対パス/、/省略することはできませんを追加する必要があります。あなたは接尾辞を省略することができます。

ラン

 

おすすめ

転載: www.cnblogs.com/smile-xin/p/11609382.html