この記事では、Nodejs の「オニオン モデル」について説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
現在、より人気のある Node.js フレームワークには、Express、KOA、Egg.js があり、次に、別の新しい TypeScript 関連フレームワークである Nest.js が続きます。 js フレームワークはミドルウェアに基づいて実装されており、ミドルウェア (クラスまたは関数モジュールとして理解できます) の実行メソッドはオニオン モデルに基づいている必要があります
推奨される学習: " nodejs チュートリアル>>
1. タマネギ モデル
タマネギが一度に 1 層ずつ包まれていることは誰もが知っていますが、ここではその 3 次元については見ていません。玉ねぎを切る必要がありますが、写真のように切断面から見ると、
中心を通るようになっているのがわかります。玉ねぎの皮を中心点に向かって層ごとに浸透させ、中心点から外側に向かって層ごとに皮を浸透させていくのですが、ここには特徴があります。出るときは何層もの皮膚を貫通しなければなりません。最初に表皮を貫通し、次に表皮から出ることは、いわゆるスタック リスト (先入れ後出し) の原則に従います。
2. オニオン モデルと Node の関係
現在、より人気のある Node.js フレームワークには、Express、KOA、Egg.js などがあります。ミドルウェアに基づいています これを実現するには、ミドルウェア (クラスまたは関数モジュールとして理解できます) の実行メソッドがオニオン モデルに基づいている必要があります。
オニオンの皮をミドルウェアとして考えることができます:
外側から内側への処理はキーワード next();
ですが、内側から外側への処理とは各ミドルウェアが実行された後、ミドルウェアの元の上位層から最外層まで。
3. ミドルウェアの実行
Express を例として、ミドルウェアの基本的な実行プロセスは次のとおりです:
、
Koa は Express をベースに同じチームによって開発された次世代ノード フレームワークです。この 2 つの主な違いは次のとおりです:
- Express はカプセル化されており、多くの組み込みミドルウェアがあり、 Connect や Router などの機能を備えているのに対し、KOA は比較的軽量であり、開発者は独自のニーズに応じてフレームワークをカスタマイズできます。
- Express はミドルウェアを処理するコールバックに基づいており、KOA は await/async に基づいています。
- 「ミドルウェアを非同期で実行する場合、Express はオニオン モデルに厳密に従ってミドルウェアを実行しませんが、KOA は厳密にオニオン モデルに従います (ミドルウェアが非同期関数である場合、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() メソッドを待つように変更されています。最終的な出力結果は次のとおりです:
非同期ミドルウェアが実行結果を出力しないことです。注文###。
(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 サイトの他の関連記事を参照してください。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
