初心者がNode.jsの概要について解説する話
Node.jsとは?
- 公式サイト https://nodejs.org/en/
- バックエンド(サーバー側で動作する)Javascript
- Javascriptが大量のHTTPリクエストを処理できるようにしたプラットフォームともいえる
- ノンブロッキング(非同期)な処理を行えるのが特徴
- javascriptの基本的な動作について知っておかないと初学者にはしんどい
- 同期・非同期処理について
- コールバック関数とか
- イベントとか
- httpについての知識も少しあったほうがいいかも
- telnetでhttpリクエストを投げられるぐらいだったらOK!
Node.jsのインストール
[@guestos ~]$ sudo yum epel-release ~略~ [@guestos ~]$ sudo yum install nodejs ~略~ [nknsh@guestos ~]$ node -v v0.10.42
Node.jsでHello!world!をする
- nodeでnode.jsを起動し、対話的に行う
[@guestos nodejs]$ node > console.log('hello!node!'); hello!node! undefined > .exit
- .jsファイルを実行することも可能
[@guestos nodejs]$ cat hellonode.js console.log('hello!node!'); [@guestos nodejs]$ node hellonode.js hello!node!
HTTPリクエストを処理する
- 以下のようにjsファイルを作成し、実行する
[@guestos nodejs]$ vim index.js [@guestos nodejs]$ cat index.js var http = require('http'); var server = http.createServer(); server.on('request', function(req, res){ res.writeHead(200, {'Contetnt-Type': 'text/plain'}); res.write('hello!node!'); res.end(); }); server.listen(3000, '192.168.100.200'); console.log('server listening, port 3000'); [@guestos nodejs]$ node index.js server listening, port 3000
- httpモジュールにリクエスト処理などのHTTP周りの処理が書いてある
- .createServer()メソッド でサーバーの役割を担うオブジェクトが生成できる
- .on('イベント', コールバック関数) でオブジェクトに対してイベントを付与できる
- 今回はサーバーhttpリクエストが来た場合のイベントを作成する
- res.writeHead('ステータスコード', HTTPレスポンスヘッダ) でリクエストに対するレスポンスヘッダの記述が可能
- res.write('コンテンツ') でリクエストに対しどのようなコンテンツを返すかの記述が可能
- レスポンスの最後は res.end() で終わりましょう
- server.listen(ポート番号, 'IPアドレス') でhttpリクエストを処理するサーバー起動
- 結果
エラーが出てサーバーが起動しなかった場合
- 以下のエラーが出た場合の対処
events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRNOTAVAIL at errnoException (net.js:905:11) at Server._listen2 (net.js:1024:19) at listen (net.js:1065:10) at net.js:1147:9 at dns.js:72:18 at process._tickCallback (node.js:448:13) at Function.Module.runMain (module.js:499:11) at startup (node.js:119:16) at node.js:935:3
まとめ
- node.jsのHello world!までについてを記しました
- javascriptについて知識がある人なら理解は容易かもしれません
- おすすめの参考書
- 筆者はこの本を使って勉強しています
- 割と丁寧だと思うのでお勧めです