1. モジュールの仕組み
commonJS モジュール メカニズムの目的は、Web サーバー、デスクトップ プログラム、ブラウザーなどでエコシステムを形成する js を構築することです。 Node js はこの仕様の実装であり、require を使用して他のファイルを導入します。同様に、npm も commonJS で定義されたパッケージ仕様に従い、完全なエコシステムを形成します。
モジュールの定義とエクスポート
たとえば、circle.js という名前の次のファイルがあります
exports.getName = function(name) { return name }
モジュールの読み込み
var circle = require('/circle.js') console.log(circle.getName('WPY'))
モジュールロード戦略
ノードモジュールは主に 2 つのカテゴリに分類できます:
ネイティブ モジュールとカスタム モジュール。いわゆるネイティブ モジュールは、HTTP モジュールや fs モジュールなど、ノード自体によって定義されるモジュールです。これらのモジュールは最も高速な読み込み速度を持っています。
独自に定義したパッケージ モジュールやファイルなど、カスタム モジュールのカテゴリもあります。ネイティブ モジュールであってもカスタム モジュールであっても、初めてロードされた後にノードによってキャッシュされるため、2 回目のリクエストではオーバーヘッドが発生しません。
ネイティブモジュールの読み込み:
ファイル名を解析した後、require() メソッドは最初にモジュール キャッシュ内を検索し、次にノード
のネイティブ モジュール内を検索します。
ファイルからロード
module.path ロードされたファイル モジュールごとに、モジュール オブジェクトの作成時に paths 属性が存在します。そのパスは、インポートされたモジュールのパスを指します。
絶対パス モジュールをリクエストする場合、読み込み速度を最速にするために、node_module はトラバースされません。
非同期プログラミング
高中間関数
高レベル関数は、関数をパラメータまたは戻り値として受け取る関数です。
function foo(X) { return function() { return x } }
NODE によってもたらされる最大の機能は、日和見的なイベント駆動型のノンブロッキング IO です。
非同期プログラミング ソリューション
1. イベント発行/サブスクリプション モデル
イベント リスナー モードは、非同期プログラミングで広く使用されており、パブリッシュ/サブスクライブ モードとも呼ばれるコールバック関数の一時化です。
//订阅 emitter.on("event1", function(message){ console.log(message) }) //发布 emitter.emit("event1", "I am message")
2.お約束モード
Promise オブジェクトには、未完了状態、完了状態、失敗状態の 3 つの状態があります。
Promise オブジェクトには then メソッドが必要です。 then メソッドには次の要件があります
。
1. 完了ステータスとエラーステータスのコールバックメソッドを受け入れます。
2. 関数のみが受け入れられ、他のオブジェクトは無視されます
3. 引き続き Promise オブジェクトを返してチェーン呼び出しを実装します