node.js HTTPサーバー
node.jsを使用すると、HTTPモジュールの低レベルAPIを使用してサーバーとクライアントを作成できます。最初にノードの学習を開始したとき、私たち全員が次のコードに遭遇しました。
コードコピーは次のとおりです。
var http = require( 'http');
http.createserver(function(req、res){
res.End( 'Hello World/n');
})。聞きます(3000、 "127.0.0.1");
console.log( "http://127.0.0.1:3000")でのサーバーファンミング);
このコードには、HTTPモジュールに関する情報が含まれています。
1. `node.js`のコアからHTTPモジュールをリクエストし、将来のスクリプトで使用する変数を割り当てます。
スクリプトは、 `node.js`を介してHTTPを使用するためのいくつかの方法にアクセスできます。
2。「createServer」を使用して新しいWebサーバーオブジェクトを作成します
3.スクリプトは匿名関数をサーバーに渡し、Webサーバーオブジェクトにリクエストを受信するたびに何が起こるかを伝えます
4.スクリプト行4は、Webサーバーのポートとホストを定義します。つまり、「http://127.0.0.1:3000`を使用できます。
サーバーにアクセスしてください
HTTPヘッダー
各HTTPリクエストと応答について、HTTPヘッダーが送信されます。 HTTPヘッダーは、コンテンツタイプ、サーバーが応答を送信した日付、HTTPステータスコードなどの追加情報を送信します
HTTPヘッダーには多くの情報が含まれています。以下は、私のBaiduホームページに含まれるHTTPヘッダーに関する情報です。
BaiduのホームページにさらにWebサイトを追加したため、ここのデータは読者のデータとは異なる場合があります。このことから、BaiduはWebサーバーであり、BWS/1.1であることがわかります。
以下は、上記のコードのHTTPヘッダー情報です。
node.jsのリダイレクト
ノードでは、次のガイドラインを使用して、訪問者を別のWebページにリダイレクトする簡単なサーバーを簡単に作成できます。
1.顧客に301の応答コードを送信し、リソースが別の場所に移動されたことを顧客に伝えます。
2。ロケーションヘッダーを送信して、顧客にリダイレクトを伝える。
関連するコードは次のとおりです。
コードコピーは次のとおりです。
var http = require( 'http');
http.createserver(function(req、res){
res.writehead(301、{
「場所」: 'http://example-2.com/web'
});
res.end();
})。聞きます(3000、 '127.0.0.1');
console.log( "http://127.0.0.1:3000")でのサーバーファンミング);
ブラウザを開き、http://127.0.0.1:3000ページにアクセスします。
さまざまなリクエストに応答します
node.jsは単一の応答を作成するだけでなく、複数のタイプのリクエストに対して、アプリケーションにいくつかのルートを追加する必要があります。ノードは、URLモジュールを使用してこれを簡単に作成します。 URLモジュールを使用すると、URLを読み取り、分析してから出力で何かを行うことができます。
コードコピーは次のとおりです。
var url = require( 'url');
var requesturl = "http://example.com:1234/path?query=string#hash"
これで、要求されたURLを分析し、ホスト名を取得するためにコンテンツをカットできます。入力できます。
コードコピーは次のとおりです。
url.parse(requesturl).hostname
現時点では、彼は「Example.com」に戻ります
ポート番号を取得するには、入力できます。
コードコピーは次のとおりです。
url.parse(requesturl).port
彼は「1234」に戻ります
イベントモジュール
node.jsは、並行性を達成するための最良の方法と考えられています。イベントモジュールはnode.jsのコアであり、他の多くのモジュールはそれを使用してイベントアーキテクチャ機能を囲んでいます。 node.jsは単一のスレッドで実行されるため、同期コードはブロックされます。したがって、node.jsコードを書くときは、いくつかの簡単なルールを考慮する必要があります。
1。ブロックしない - `node.js`は単一のスレッドで、コードがブロックされた場合、他のすべてが停止します
2。クイックリターン - 操作はすばやく戻るはずです。迅速に戻れない場合は、別のプロセスに移行する必要があります
イベントモジュールにより、開発者はイベント用のリスナーとプロセッサをセットアップできます。クライアントJSでは、クリックイベントのリスナーを設定してから、イベントが発生したときに何かをすることができます。
コードコピーは次のとおりです。
var tar = document.getElementById( "ターゲット");
tar.addeventlistener( "click"、function(){
アラート(「イベントが発生し、ターゲットがクリックされた」);
}、間違い);
もちろん、これはIEの互換性を考慮しない例であり、Node.jsフォーカスイベントは、次のようなネットワークイベントにより一般的です。
1。Webサーバーからの応答
2。ファイルからデータを読み取ります
3.データベースからデータを返します
イベントモジュールを使用して、まず新しいEventeMitterインスタンスを作成する必要があります。
コードコピーは次のとおりです。
var eventemitter = require( 'events')。eventemitter;
var test = new eventemitter();
上記のコンテンツがコードに追加されたら、イベントとリスナーを追加できます。次のようなイベントを次のように送信できます。
コードコピーは次のとおりです。
test.emit( 'msg'、 'nodeによって送信されるメッセージ');
最初のパラメーターは、リスナーのマッチングに使用できるようにイベントを説明する文字列です
メッセージを受信するには、リスナーを追加する必要があります。これは、イベントがトリガーされたときに処理する必要があります。
コードコピーは次のとおりです。
test.on( 'message'、function(data){
console.log(data);
});
イベントモジュールの基本的なイベントリスニングモードの実装Module addListener/on、on、removelistener、removealllisteners、emitおよびその他の基本的なイベントリスニングモード。フロントエンドDOMツリーのイベントと同じではありません。なぜなら、バブル、レイヤーごとのキャプチャなどのDOMに属するイベント動作がなく、PreventDefault()、StopPropagation()、StopimmediatePropagation()などのイベント配信を処理する方法はないため
1.Class:Events.EventeMitter:eventeMitterクラスをrequire( 'events')。
2.Emitter.on(イベント、リスナー):特定のイベントのリスナー配列のテールにリスナーを追加します。エミッタに戻り、チェーンコールを容易にします。
3.emitter.removelistener(イベント、リスナー)イベントのリスナー配列からリスナーを削除する
4.Emitter.Listeners(イベント)指定されたイベントのリスナー配列を返します
詳細については、node.js APIドキュメントを参照してください
次のコードには、5秒以内に自己破壊できる機密メッセージが表示されます。
コードコピーは次のとおりです。
var eventemitter = require( 'events')。eventemitter;
var SecretMessage = new EventeMitter();
SecretMessage.on( 'message'、function(data){
console.log(data);
});
SecretMessage.on( 'Self Destruct'、function(){
console.log( 'msgが破壊されました!');
});
SecretMessage.emit( 'message'、 'これは秘密のメッセージです。
setimeout(function(){
SecretMessage.emit( 'Self Destruct');
}、5000);
このスクリプトでは、2つのリスナーがいる2つのイベントが送信されます。スクリプトが実行されているとき、メッセージイベントが発生し、「メッセージ」プロセッサによって処理されます
EventeMitterはnode.jsのどこでも使用されるため、マスターすることが重要です。 node.jsはI/O操作を介してデータを取得し、イベントモジュールを広く使用して非同期プログラミングをサポートします
よくある質問:
Q:イベントのリスナーの最大数に制限はありますか?
A:デフォルトでは、イベントに10人のリスナーが動作している場合、警告が発生します。ただし、Emitter.setMaxListener(n)を使用して、この量を変更できます
Q:送信されたすべてのイベントを聴くことはできますか?
回答:いいえ。応答したいイベントごとにリスナーを作成する必要があります