ホームページ > 記事 > ウェブフロントエンド > Nodejs の「オニオン モデル」の詳細な分析
この記事では、Nodejs の「オニオン モデル」について説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
現在、より人気のある Node.js フレームワークには、Express、KOA、Egg.js があり、次に、別の新しい TypeScript 関連フレームワークである Nest.js が続きます。 js フレームワークはミドルウェアに基づいて実装されており、ミドルウェア (クラスまたは関数モジュールとして理解できます) の実行メソッドはオニオン モデルに基づいている必要があります
推奨される学習: " nodejs チュートリアル>>
タマネギが一度に 1 層ずつ包まれていることは誰もが知っていますが、ここではその 3 次元については見ていません。玉ねぎを切る必要がありますが、写真のように切断面から見ると、
中心を通るようになっているのがわかります。玉ねぎの皮を中心点に向かって層ごとに浸透させ、中心点から外側に向かって層ごとに皮を浸透させていくのですが、ここには特徴があります。出るときは何層もの皮膚を貫通しなければなりません。最初に表皮を貫通し、次に表皮から出ることは、いわゆるスタック リスト (先入れ後出し) の原則に従います。
現在、より人気のある Node.js フレームワークには、Express、KOA、Egg.js などがあります。ミドルウェアに基づいています これを実現するには、ミドルウェア (クラスまたは関数モジュールとして理解できます) の実行メソッドがオニオン モデルに基づいている必要があります。
オニオンの皮をミドルウェアとして考えることができます:
外側から内側への処理はキーワード next();
ですが、内側から外側への処理とは各ミドルウェアが実行された後、ミドルウェアの元の上位層から最外層まで。
Express を例として、ミドルウェアの基本的な実行プロセスは次のとおりです:
、
Koa は Express をベースに同じチームによって開発された次世代ノード フレームワークです。この 2 つの主な違いは次のとおりです:
オニオン モデルの実行に関する Express と KOA の違いの紹介 :
私たちは、元の 3 つのモデルを保持します。上記のコード例ミドルウェアを追加し、2 と 3 の間に新しい非同期ミドルウェア を挿入します。コードは次のとおりです。
(1) Express
/** * 异步中间件 */ app.use(async (req, res, next) => { console.log('async'); await next(); await new Promise( (resolve) => setTimeout( () => { console.log(`wait 1000 ms end`); resolve() }, 1000 ) ); console.log('async end'); });と次のミドルウェア 1 メソッド:
/** * 中间件 1 */ app.use(async (req, res, next) => { console.log('first'); await next(); console.log('first end'); });Rerun に示すように、他のミドルウェアは next() メソッドを待つように変更されています。最終的な出力結果は次のとおりです: Out が表示されます。外側から内側に呼び出すのが正常で、レイヤーごとに呼び出しが行われます。内側から外側に行くときに、いくつかの変更が発生します。主な理由は、
非同期ミドルウェアが実行結果を出力しないことです。注文###。
(2) Koa上記のコード シーケンスを維持し、対応する Express 構文のみを koa 構文に変更します。ミドルウェア 1 および非同期ミドルウェアのコード部分は次のとおりです。 const Koa = require('koa');
const app = new Koa();
/**
* 中间件 1
*/
app.use(async (ctx, next) => {
console.log('first');
await next();
console.log('first end');
});
/**
* 异步中间件
*/
app.use(async (ctx, next) => {
console.log('async');
await next();
await new Promise(
(resolve) =>
setTimeout(
() => {
console.log(`wait 1000 ms end`);
resolve()
},
1000
)
);
console.log('async end');
});
再実行すると、最終出力は次のようになります:
KOA がオニオン モデルの実行を上から下まで厳密に従っていることがわかります。 、タマネギの内側から外側に向かって、最初、二番目、非同期、三番目を出力し、次に内側から外側に 3 番目の端、非同期端、2 番目の端、および 1 番目の端を出力します。
プログラミング関連の知識について詳しくは、
プログラミング教育以上がNodejs の「オニオン モデル」の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。