JavaScript仕様(ECMAScript)は、ほとんどのプログラムに適用できる標準ライブラリの完全なセットを定義していません。 CommonJSは、一連のJavaScript標準ライブラリ仕様を提供します。ノードはCommonJS仕様を実装します。
モジュールの基本
ノードでは、モジュールとファイルが1つずつ対応します。モジュールを定義します。
コードコピーは次のとおりです。
// circle.js
var pi = math.pi;
//関数領域をエクスポートします
exports.area = function(r){
pi * r * rを返します。
}
//関数回路をエクスポートします
exports.circumference = function(r){
2 * pi * rを返します。
};
ここでは、エクスポートする必要がある関数がエクスポートオブジェクトに追加されます。モジュールのローカル変数は、外部からアクセスできません(たとえば、上記の例のPI変数)。モジュールcircle.jsをロードするために必要な呼び出し:
コードコピーは次のとおりです。
var circle = require( './ circle.js');
console.log( '半径4の円の領域は'です '
+ circle.area(4));
前述のように、モジュールには、モジュール自体を表すモジュールオブジェクトがあり、エクスポートはモジュールの属性です。
モジュールの読み込み
ノードはロードされたモジュールをバッファリングして、リロードのオーバーヘッドを回避します。
コードコピーは次のとおりです。
// test.js
console.log( "I'm Here");
モジュールtest.jsを複数回読み込みます
コードコピーは次のとおりです。
//一度出力「I'm Here」のみです
要求( './ test');
要求( './ test');
読み込みファイルに接尾辞がない場合、ノードは接尾辞とロードを追加しようとします。
1..JS(JavaScriptソースファイル)
2..Node(C/C ++拡張モジュール)
3..JSON(JSONファイル)
モジュールにはいくつかの主なタイプがあります。
1。コアモジュール。コアモジュールはノードにコンパイルされており、これらのコアモジュールをそのソースコードのLIBディレクトリに見つけることができます。 Common Coreモジュール:Net、HTTP、FSモジュールなど。
2。ファイルモジュール。ファイルモジュールは、上記で見たcircle.jsなど、相対パスまたは絶対パスにロードされます。
3.モジュールをカスタマイズします。カスタムモジュールは、node_modulesディレクトリにあります。 NPMまでにインストールしたさまざまなモジュールは、node_modulesディレクトリに配置されます。
コアモジュールは常に最初にロードされます。カスタムモジュールHTTPがある場合、ロード時にカスタムモジュールHTTPの代わりにコアモジュールHTTPがまだロードされます。カスタムモジュールをロードするときは、最初に現在のディレクトリのnode_modulesディレクトリを探してから、親ディレクトリのnode_modulesディレクトリを探します。
ロードされたモジュールがファイルではなく、ディレクトリである場合、そのようなディレクトリはパッケージと呼ばれる場合が必要です。たとえば、パッケージにはpackage.json(パッケージ説明ファイル)という名前のファイルがあります。
コードコピーは次のとおりです。
{"name": "some-library"、
"main": "./lib/some-library.js"}
メインは、ロードする必要があるモジュールを示します。 package.jsonがpackageまたはpackage.jsonがメインモジュールを指定しない場合、Nodeはindex.js、index.node、index.jsonをロードしようとします。
JavaScriptモジュールをロードすると、ロードされたモジュールが関数に包まれています。
コードコピーは次のとおりです。
関数(モジュール、エクスポート、__FILENAME、__DIRNAME、...){
JavaScriptモジュール
}
各JavaScriptモジュールがアクセスするモジュール、エクスポート、__FILENAME、__DIRNAMEなどは、実際に関数パラメーターを介して渡されます。この種のパッケージのため、モジュールのローカル変数は外部からアクセスできません。しかし、時には理解するのが難しい問題があります。
test1.js
コードコピーは次のとおりです。
エクスポート= {
名前: 'name5566'、
}
test2.js
コードコピーは次のとおりです。
module.exports = {
名前: 'name5566'、
}
これらの2つのモジュールをロードします。
コードコピーは次のとおりです。
var test1 = require( './ test1.js');
console.log(test1.name); // 未定義
var test2 = require( './ test2.js');
console.log(test2.name); // name5566
エクスポートは、モジュールへのパラメーターとして渡されます。 exports.xを介して属性(またはメソッド)をエクスポートオブジェクトに自然に追加できますが、エクスポートに値を直接割り当てる(たとえば、エクスポート= x)は、実際のパラメーターではなく正式なパラメーターの値を変更するだけです。
1.エクスポートにプロパティを追加するときは、エクスポートを使用します
2。エクスポートに値を割り当てるときは、module.exportsを使用します
バッグ
CommonJSの仕様によると、完全なパッケージには以下を含める必要があります。
1.package.jsonパッケージの説明ファイル
2.ビンバイナリファイルディレクトリ
3.Lib JavaScriptコードディレクトリ
4.DOCドキュメントディレクトリ
5.テストテストコードディレクトリ
NPMは、ノード用のパッケージ管理ツールです。一般的な使用法:
コマンドのドキュメントを表示します:
コードコピーは次のとおりです。
NPMヘルプインストール
コマンドインストールのドキュメントを表示します。
パッケージのインストール:
コードコピーは次のとおりです。
NPMインストールredis
Redisパッケージをインストールします。インストールコマンドは、現在のディレクトリのnode_modulesディレクトリにパッケージをインストールします。
パッケージを削除します:
コードコピーは次のとおりです。
npm redisを削除します
Redisパッケージを削除します。削除コマンドは、現在のディレクトリのパッケージを削除します。