nodejs学習日誌3--モジュール


nodejs導入モジュール用require:
var express = require('express')
exportオブジェクトは、現在のモジュールの方法と変数を導出するために使用され、一つのファイルはモジュールであり、方法をexportオブジェクトにマウントして属性定義としてエクスポートする方法、例えば:
//test.js
exports.test1 = function(){
  return 'ok';
}
もう一つのファイルでは、require()方法でモジュールを導入すると、その方法と属性を呼び出すことができます.
//test2.js
var test = require('test');
exports.tt = function(){
    return test.test1();
}
nodeにモジュールを導入するには三つのステップが必要です.
  • パス解析.
  • ファイル位置決め
  • コンパイル実行
  • パス解析:    require()方法は、パラメータとして識別子を受け取り、モジュール識別子は、次のように分類される.
  • コアモジュール、http、fs、pathなど、ロード優先度はキャッシュ
  • に次ぐものである.
  • .または.開始する相対パスファイルモジュール
  • /開始のアブソリュートファイルモジュールでは、上記2つのファイルモジュールrequire()方法は、経路を真の経路に変換し、真の経路をインデックスとしてコンパイル実行後の結果をキャッシュする.明確な経路が指定されているので、検索は大量の時間を節約できます.ロード速度はコアモジュールより遅いです.
  • 非パス形式のファイルモジュール、特殊なファイルモジュールは、ファイルまたはパケットの形式であり、最も遅い時間がかかります.nodeのモジュールパス生成規則によれば、ロード中に:1(現在のファイルディレクトリのnodemodulesディレクトリを探して)、2(親ディレクトリのnodemodulesディレクトリ)、3(親ディレクトリの親ディレクトリのnodemodules)、4(経路に沿って、ディレクトリのnodemodulesまで段階的に上に戻ります.)
  • ファイルの位置:
  • require()は、識別子がファイル拡張子を含んでいない場合、nodeは.js,node,jsonの順に拡張子を補足し、順次試します.
  • ファイルが見つかりませんでしたが、ディレクトリが見つかったら、ディレクトリをパッケージとして処理します.
  • モジュールコンパイル:
  • jsファイルをfsモジュールで同期してファイルを読み込み、コンパイルして
  • を実行します.
  • nodeファイルは、c/c++で作成した拡張ファイル(c/c+モジュールを作成してコンパイルして生成したので、ここではローディングと実行のみ)を介して、最後にコンパイルしたファイル
  • をdleopen()でロードします.
  • jsonファイルは、fsモジュールで同期して読み、JSON.parse()で解析して返します.
  • 他の拡張子はすべて無視されます.jsファイルは
  • にロードされます.
    nodeの中のモジュールはコアモジュールと自分で編纂したモジュール(ファイルモジュール)に分けられています.コアモジュールはnodeソースコードのコンパイル中にバイナリ実行ファイルをコンパイルしました.プロセスが起動する時、一部のコアモジュールは直接メモリにロードしました.ロード速度は一番速いです.ファイルモジュールは動作時に動的にロードします.123ステップが必要です.ロード速度はコアモジュールより遅いです.nodeは導入したモジュールをキャッシュします.キャッシュはコンパイルと実行後のオブジェクトです.require()メソッドは優先的にキャッシュロードされ、コアモジュールのキャッシュチェックはファイルモジュールのチェックより優先される.