ホームページ > ウェブフロントエンド > jsチュートリアル > 簡単にnodejsサーバーを作成する(5):event handler_node.js

簡単にnodejsサーバーを作成する(5):event handler_node.js

WBOY
リリース: 2016-05-16 16:25:49
オリジナル
1058 人が閲覧しました

さまざまなユーザーにさまざまなフィードバックを提供するために、イベント ハンドラー モジュールを導入します。

このモジュールは requestHandlers という名前です。まず、start() と Upload() という 2 つのプレースホルダー関数を追加します。

requestHandlers.js コードは次のとおりです:

コードをコピーします コードは次のとおりです:

関数 start() {
console.log("これは /star にアクセスするときに呼び出されます。");
}

関数アップロード() {
console.log("これは /upload にアクセスするときに呼び出されます。");
}

exports.start = 開始;
exports.upload = アップロード;

実際のアプリケーションでは、リクエスト ハンドラの数は増加し続けるため、新しい URL またはリクエスト ハンドラが存在するたびにルート内のリクエストを完了する必要はありません

ハンドラーにマッピングして、それを何度も投げます。

さらに、ルーティング内で if request == x then call ハンドラー y を大量に使用することは望ましくありません。これにより、コードが乱雑でプロフェッショナルに見えなくなります。

ここでは、この要件を処理するために連想配列の概念を使用します。オブジェクトを通じて一連のリクエスト ハンドラーを渡します。このオブジェクトを疎結合方法で Route() 関数に挿入する必要があります。

最初にこのオブジェクトをメインファイルのindex.jsに導入します。

コードをコピーします コードは次のとおりです:

var サーバー = require("./server");
var router = require("./router");
var requestHandlers = require("./requestHandlers");

var ハンドル = {};
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;

server.start(router.route, handle);

たとえば、/show マッピングを追加したい場合は、handle["/show"] requestHandlers.show を追加するだけです。

ははは、これでコードはより簡潔で整然としたものになったでしょうか? !

次に、ハンドル オブジェクトをサーバーに渡し、server.js を次のように変更します。

コードをコピーします コードは次のとおりです:

var http = require("http");
var url = require("url");
function start(route, handle) {
function onRequest(リクエスト, レスポンス) {
var pathname = url.parse(request.url).pathname;
Console.log("「パス名」のリクエストを受信しました。");
ルート(ハンドル、パス名);
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
応答.end();
}
http.createServer(onRequest).listen(8888);
console.log("サーバーが起動しました。");
}
exports.start = 開始;

それに応じて、route.js ファイル内の Route() 関数を変更します。

コードをコピーします コードは次のとおりです:

関数ルート(ハンドル, パス名) {
console.log("パス名に対するリクエストをルーティングしようとしています);
if (ハンドルの種類[パス名] === '関数') {
ハンドル[パス名]();
} else {
console.log("パス名に対するリクエスト ハンドラーが見つかりません);
}
}
exports.route = ルート;

ハンドル オブジェクトをパラメータとしてサーバーに渡し、それがルーターによって受信され、ルーターは現在のパスに対応するリクエスト ハンドラーが存在するかどうかを判断し、存在する場合は対応する関数を呼び出します。

連想配列から要素を取得するのと同じ方法で、渡されたオブジェクトからリクエスト処理関数を取得できるため、handle[pathname](); の形式でシンプルでスムーズな式が得られます。前述したように、「ねえ、この道を手伝ってください。」

このようにして、さまざまなリクエストを異なる方法で処理できます。

次のセクションでは、サーバーが実際のフィードバック操作を実行できるようにコードをさらに変更します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート