CommonJSの仕様と使い方を簡単に把握


前言:CommonJs規範の出発点:バックグラウンドJSはモジュールシステムがなく、標準ライブラリが少なく、パッケージ管理ツールが不足している.JSがどこでも実行できるように、Java、C#、PHPなどのバックグラウンド言語が大規模なアプリケーションを開発する能力を備えている.実際にES 6には既にモジュール仕様が存在する、ES 6を使用するモジュール仕様はnodeを必要としない.js環境の.したがって,commonJS仕様とES 6のモジュール仕様を区別する必要がある.1.CommonJSモジュール仕様は主に3つの部分に分けられる:モジュール定義、モジュール識別、モジュール参照.a.ファイルはモジュールであり、個別の役割ドメインを有する.b.一般的に定義された変数、関数、オブジェクトはすべてこのモジュール内に属する.c.requireによってモジュールをロードする.d.exportsとmodulを介して.exportsはモジュールの内容を暴露する.
モジュール定義、モジュールID:
//      database.js   ,       ,      
 module.exports={
    'saveDatabase':saveDatabase,//      
    'saveLastSpider':saveLastSpider,//          
    'getInfoByType':getInfoByType,//        
    'getInfoByOrder':getInfoByOrder,//        
 }
//            ,         。

モジュール参照:
//     controller.js           
var database = require('./database');//    ,        database  (         )
database.saveDatabase([1,2,3,4,5]);//  database         

3、すべてのコードはモジュールの役割ドメインで実行され、グローバルの役割ドメインを汚染しない.モジュールは複数回ロードできますが、最初のロード時に1回しか実行されず、実行結果がキャッシュされ、後でロードされ、キャッシュ結果が直接読み込まれます.モジュールのロード順序は、コードの出現順序に従って同期的にロードされる.
4、__dirnameは、現在のモジュールファイルが存在するフォルダパスを表します.filenameは、現在のモジュールファイルが存在するフォルダパス+ファイル名を表します.
5、require(同期ロード)基本機能:JSファイルを読み取り、実行し、モジュールのexportsオブジェクトを返し、指定されたモジュールが見つからない場合はエラーを報告する.
6、モジュール内のexports:便宜上、nodeはモジュールごとにmoduleを指すexports変数を提供する.exportsは、モジュールのヘッダにvar exports=moduleという言葉を付けることに相当します.exportsは、対外出力時にexportsオブジェクトにメソッドを追加できます.PS:直接値を割り当てることはできません(これでexportsとmodule.exportsのつながりが切断されるからです).
7、npm root-g:npmグローバルパッケージのインストール場所を表示し、nvmディレクトリの下でnpmode_を新規作成することを提案する.modulesディレクトリを設定し、npmのグローバルパッケージのインストール場所:npm config set prefix""を設定し、このパスを環境変数に追加します.
8、npm init-y:packageを初期化する.jsonファイルは、-yを加えるとデフォルトで生成され、一歩一歩記入する必要はありません.npm docsパッケージ名:パッケージのドキュメントを表示する;npm install:packageをインストールします.jsonのdependenciesプロパティのすべての依存パッケージ
9、npmのサーバーは国外のため、もしあなたが調和のとれたツールがなければダウンロードできないならば、ここは宝を洗うNPMミラーを使うことをお勧めします:http://npm.taobao.org/公式NPMとの同期周波数は現在10分に1回である.インストールコマンド:npm install-g cnpm–registry=https://registry.npm.taobao.org、インストールパッケージ:cnpm installパッケージ名(他のコマンドはほぼ一致);
10、cnpmをダウンロードしたくない場合は、npmはミラーソース管理ツールも提供しています:npm install-g nrm、:nrmls、ミラーソースのリストを表示し、:npm useミラーソースで切り替えます.
11、NPMのモジュールロードメカニズム:
    require        ,         node_modules  ,     

  1).moduleからpaths配列(現在の実行ファイルディレクトリからディスクルートディレクトリへ)で、最初のディレクトリを検索基準として取り出します.
  2).ディレクトリから直接ファイルを検索し、存在する場合は検索を終了し、存在しない場合は次の検索を行います.
  3).追加を試みます.js、.node、.json接尾辞の後に検索し、ファイルが存在する場合は検索を終了し、存在しない場合は次の検索を行います.
  4).requireのパラメータをパッケージとして検索し、ディレクトリの下のpackageを読み出してみます.jsonファイル、Mainパラメータで指定したファイルを取得
  5).ファイルの検索を試み、存在する場合は検索を終了し、存在しない場合は3番目の検索を行います.
  6).失敗を続けるとmoduleを取り出す.paths配列の次のディレクトリを基準として検索し、1~5ステップをループします.
  7).失敗を続ける場合は、module.pathsの最後の値
  8).失敗を続けると例外が放出されます