Node.jsとは?
- 「Javascriptで動作するサーバー環境」
- WebサーバーというとApacheやIISなどのHTTPサーバー上でPHPやASPなどを動作させる環境を思い浮かべるが、Node.jsはそれとは異なる
- Node.jsではサーバーを作るところから実装が始まる
特徴
- 非同期I/O、ノンブロッキングI/Oモデルを採用している
- シングルスレッド
- Googleの「V8」という優秀なJavascriptエンジンで動作する
Hello Worldする
(Node.jsがインストールされていることを前提としています)
とりあえずコードを写経する
hello.js
var http = require('http'); // ①
var server = http.createSever(function(req, res) { // ②
res.writeHead(200, {'Content-Type': 'text/plain'}); // ③
res.write('Hello World');
res.end();
});
server.listen(3000); // ④
console.log('サーバーを起動しました。');
コンソールで以下のコードを実行する
$ node hello.js
解説
① requireという関数でhttpオブジェクトを生成している
② httpオブジェクトのcreateServerメソッドでサーバーオブジェクトを作成する
- createServerメソッドは引数に、サーバーリクエストを受けたときに動作させるコールバック関数を指定する(コールバック関数は、第一引数にリクエストオブジェクト、第二引数にレスポンスオブジェクトを受け取る)
③サーバーリクエストが発生した際の動作を定義する
- writeHeadメソッドでhttpヘッダを書き出す(第一引数:ステータスコード、第二引数:ヘッダ情報の連想配列)
- writeメソッドでhtmlコンテンツを書き出す
- endメソッドでhttpコンテンツを出力する
④作成したサーバーオブジェクトをlistenメソッドで受け待ち状態にする
引数には使用するポート番号を指定する
メモ
- writeHeadメソッドはデフォルト値が「200, {'Content-Type': 'text/plain'}」
- endメソッドは引数にコンテンツ出力内容を受け取ることもできるため以下の用にも記述できる
var http = require('http);
var server = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World');
});
##終わり
Javascriptが好きなので個人的にNode.jsは結構楽しいです。