1。インストール
まず、http://nodejs.orgにアクセスしてダウンロードしてインストールします。私がダウンしているバージョンは0.8.14です。インストールは非常にシンプルで、次のステップが次です。次に、パスにインストールディレクトリを構成すると、MSIは一緒にNPM(ノードパッケージマネージャー)をインストールします。
私のインストールディレクトリはC:/プログラムファイル(x86)/nodejsです。この時点で、CMDコマンドウィンドウnode -vおよびnpm -vコマンドを使用して、NPM -Vコマンドの下にインストールされたバージョンを表示します
1.1。こんにちは世界
node.jsプロジェクトディレクトリに新しいファイルhello.jsを作成し、その中のコードの行を入力します
console.log( 'hello、nodejs。');
コマンドラインコンソールを入力し、node.jsプロジェクトディレクトリを入力し、ノードhello.jsを入力します
コンソールは「こんにちは、nodejs」出力を出力します。
1.2。 HelloworldのWebバージョン
node.jsプロジェクトディレクトリに新しいhttp.jsを作成すると、コードは次のとおりです
var http = require( "http"); http.createServer(function(request、response){respons.writehead(200、{"content-type": "text/html"}); respons.write( "hello world!"); respons.end();})。コマンドラインでサービスを開始し、ノードhttp.jsをクリックします
次に、ブラウザアドレスバーを開き、http:// localhost:8000/を入力し、Hello Worldをご覧ください!ページに出力され、成功します。
node.jsのバージョンはAPIと同期する必要があります
node.jsのバージョン番号は通常であり、バージョンでも安定したバージョン、奇数バージョンは安定していないバージョンです
2 Helloworldコード分析
OK、これからHelloWorldのラインを分析し始めてください。
モジュールを紹介します
var http = require( "http");
要求方法はモジュールを導入するために使用され、パラメーターはモジュールの名前です。たとえば、ファイルシステムモジュールは次のように紹介できます。
var fs = require( "fs");
require()メソッドをグローバルメソッドとして使用できますが、実際には特定のモジュールに属するローカルメソッドのようなものです。そのドキュメントは、https://nodejs.org/api/globals.htmlにあります。
要求方法は、require( "http")がHTTPインスタンスを返すなど、特定のモジュールのインスタンスを返します。 HTTPインスタンスの参照ドキュメントは、https://nodejs.org/api/http.htmlにあります。
HTTPモジュールには、2番目のコード行が含まれるメソッドCreateServer()があることがわかります。
サーバーを作成します
HTTPモジュールのcreateServer()メソッドは、メソッドをパラメーターとして受け入れ、プロトタイプは次のとおりです。
http.createServer([requestListener])
RequestListenerは、http.serverクラスのリクエストイベントに関連付けられるメソッドです。このようにして、クライアント要求が到着すると、requestListenerが呼び出されます。
RequestListenerには2つのパラメーターがあり、関数プロトタイプは次のとおりです。
関数(リクエスト、応答){}最初のパラメーター要求のタイプはhttp.IncomingMessageで、 Readable Streamインターフェイスを実装します。
2番目のパラメーターのタイプはhttp.ServerResponseで、 Writeable Streamインターフェイスを実装します。
ストリームAPIはこちら:https://nodejs.org/api/stream.htmlです。同時に、リクエストと応答はイベントミッターであり、特定のイベントを放出できます。
EventeMitter APIは、https://nodejs.org/api/events.html#events_class_events_eventemitterにあります。後で、EventeMitterを使用してイベントを起動および処理する方法について説明します。
サーバーを作成したコードを確認しましょう。
http.createserver(function(request、response){response.writehead(200、{"content-type": "text/plain"}); respons.write( "Hello World!"); Response.End();})。聞き(8000);http.createServer http.serverインスタンスを返します。 http.serverのリスニング方法では、この例では8000の特定のポートでサーバーを聞くことができます。
ご覧のとおり、CreateServerメソッドに匿名関数を提供します。この方法では、「Hello World!」を書き留めます。応答パラメーターを介してクライアントへのメッセージ。
クライアントのリクエストを分析します
以前にhttp.createserverメソッドを分析しました。そのパラメーターは、2つのパラメーターを備えた方法です。 1つはクライアントから送信されたリクエストを表し、もう1つはクライアントに書き戻すための応答を表します。リクエストパラメーターを見てみましょう。
リクエストは、 http.IncomingMessageのインスタンスです。このインスタンスを通じて、HTTPメソッド、HTTPバージョン、URL、ヘッダーなどのリクエストパラメーターを取得できます。特定のAPIはhttps://nodejs.org/api/http.html#http_http_incomingmessageです。
Helloworld.jsを変更して見てみましょう(Helloworld2.jsとして保存)。コードは次のとおりです。
// httpモジュールvar http = require( "http"); //サーバーを作成し、クライアント要求を処理する関数http.createserver(function(request、response){console.log( "method-" + request.method); console.log( "バージョン - " + request.httpversion); console.log( "url-" + request.url); response.writehead.writehead( " + request.url); 「テキスト/プレーン」}); console.log( "Hello World Start Riess on Port 8000");ご覧のとおり、コンソールオブジェクトを使用して、いくつかのデバッグ情報を出力し、HTTPメソッド、バージョン、URL、その他の情報を印刷しました。ノードHelloWorld2.jsを実行できます。ブラウザはhttp:// localhost:8000にアクセスしてから、コマンドラインまで実行して、どの情報が出力されるかを確認します。私はこのようなものです:
私たちの単純なHelloworldは、すでにクライアントに応答データを送信することができ、「Hello World!」という言葉を見ることができます。ブラウザで。この応答は、 http.ServerResponseのインスタンスresponseを介してクライアントに送信されます。
http.ServerResponseもStreamまたはEventeMitterです。それを通して、HTTPステータスコード、データ、HTTPヘッダー、その他の情報をクライアントに返します。
HTTPモジュール
node.jsのhttpモジュールでは、ステータス行は、http.serverresponseのwriteheadメソッドを介してクライアントに書き込まれます。 Writeheadメソッドのプロトタイプは次のとおりです。
Response.WriteHead(StatusCode [、statusMessage] [、ヘッダー])
このメソッドの最初のパラメーターは、200や403などの数値であるステータスコードです。残りのパラメーターはオプションです。最後のパラメーターはヘッダーで、jsonオブジェクト表記{“Content-Type”:”text/plain”,”Content-Length”:11}使用して、次のようなHTTPヘッダーを作成できます。最初のオプションのパラメーターStatusMessageを使用して、記入することができないステータス説明メッセージを指定します。
HTTPヘッダー
ヘッダーはいくつかのキー価値のペアです。たとえば、Helloworldで表示される「コンテンツタイプ」は、テキストファイル、写真、ビデオ、バイナリなどに対応するデータ型を示すために使用されるヘッダータグです。同様に、「コンテンツレングス」はデータの長さを指定するために使用されます。 「日付」、「接続」など、さらに多くのリンクを参照してください。
HTTP.ServerResponseのresponse.setHeader(name, value)メソッドを使用して、ヘッダーを個別に設定することもでき、1つのHTTPヘッダーを一度に設定できます。
データ
ヘッダーの後、データがあります。 200などの一部のステータスコードには、将来データがあります。また、301、404、403、500などの一部は、それらのほとんどにデータがありません。
データは、http.serverresponseの書き込み方法を介してクライアントに書き戻されます。
Response.setheader( "content-type"、 "text/html");
ここでは、2つの一般的なHTTPデータ送信メソッドがあることに言及する必要があります。
コンテンツレングスを設定し、固定長データを転送し、転送エンコードヘッダーをチャンクに設定し、チャンクでデータを転送します
現在のHelloworldの例と同様に、コンテンツレングスヘッダーを設定せずに、node.jsのHTTPモジュールはデフォルトでエンコードがチャンクされます。
Chromeブラウザーの開発者ツールを使用して、ネットワークデータを表示します。下の図に示すように:
HTTP応答
私がマークした3つのポイントは、すべてHelloworldの例でブラウザに渡されたすべてのHTTPヘッダー情報です。
http.serverresponseの書き込み方法を使用して、クライアントにデータを書き込みます。すべてのデータを一度に記述することも、データを個別に複数回記述することもできます。転送されるデータの量が大きい場合、何度も書くことはより合理的なアプローチです。たとえば、クライアントに大きなファイルを送信する場合、複数回書き込むのに適しています。 node.jsの非同期機能を使用して、優れたパフォーマンスを得ることもできます。