簡単にnodejsサーバーを作成する(8): ノンブロッキングの実現方法_node.js
このセクションでは、nodejs がノンブロッキング操作を実装する方法を見ていきます。
まず開始ハンドラーを変更しましょう:
var exec = require("child_process").exec;
関数 start() {
console.log("リクエストハンドラー「start」が呼び出されました。");
var content = "空";
exec("ls -lah", function (error, stdout, stderr) {
content = stdout;
});
コンテンツを返す;
}
関数アップロード() {
console.log("リクエストハンドラー「アップロード」が呼び出されました。");
"こんにちはアップロード" を返します;
}
exports.start = 開始;
exports.upload = アップロード;
このコードは、新しい変数 content (初期値は「空」) を作成し、「ls -lah」コマンドを実行し、結果を content に代入し、最後に content を返します。
新しい Node.js モジュール child_process を導入しました。これは、シンプルで実用的なノンブロッキング操作 exec() の実装に使用されます。
では、exec() は何をするのでしょうか?
Node.jsからシェルコマンドを実行します。上記の例では、現在のディレクトリ (「ls -lah」) にあるすべてのファイルを取得し、/startURL が要求されたときにファイル情報をブラウザに出力するために使用しています。
サーバーを起動して「http://localhost:8888/start」にアクセスすると、ページの出力コンテンツが空であることがわかります。
exec() を使用すると、アプリケーションを強制的に停止して操作を待機させることなく、非常に時間のかかるシェル操作を実行できます。
それでも、ページによって出力されるコンテンツは私たちが望む結果ではないようです。
その理由を分析してみましょう:
コードは同期的に実行されます。つまり、exec() を呼び出した後、Node.js は返されたコンテンツをすぐに実行します。
この時点では、exec() に渡されたコールバック関数がまだ実行されていないため、コンテンツはまだ「空」です。これは、exec() の操作が非同期であるためです。
この問題を解決する方法を次のセクションで紹介します。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

MySQL データベースに接続するには、次の手順に従う必要があります。 mysql2 ドライバーをインストールします。 mysql2.createConnection() を使用して、ホスト アドレス、ポート、ユーザー名、パスワード、データベース名を含む接続オブジェクトを作成します。 connection.query() を使用してクエリを実行します。最後に connection.end() を使用して接続を終了します。

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

はい、Node.js はフロントエンド開発に使用でき、主な利点には、高性能、豊富なエコシステム、クロスプラットフォーム互換性が含まれます。考慮すべき点は、学習曲線、ツールのサポート、コミュニティの規模の小ささです。

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

Web 開発において Node.js と Java にはそれぞれ長所と短所があり、どちらを選択するかはプロジェクトの要件によって異なります。 Node.js はリアルタイム アプリケーション、迅速な開発、マイクロサービス アーキテクチャに優れており、Java はエンタープライズ グレードのサポート、パフォーマンス、セキュリティに優れています。
