#contents

** 概要 [#kc0016ed]

- サーバーサイドJavaScript
- 用途:大量のリクエストを高速にさばくメッセージングやAPIなど
- 公式サイト:https://nodejs.org/
-- APIドキュメント:https://nodejs.org/api/
-- Stability:APIの安定/不安定の指標

** 前提知識 [#ha139716]
- HTML/JavaScript
- MongoDB
- Unixコマンド

** 環境 [#d6526524]
- OS X 10.11 El Capitan
- Vagrant 1.8.1
- VirtualBox 5.0.20
- CentOS 7.2.1511
- Node.js 0.10.24
- MongoDB 3.2.6

** Node.jsのインストール(yum) [#h5bab21d]

 $ sudo yum install nodejs

 $ node -v
 v0.10.42

** MongoDBのインストール(yum) [#o0db4fac]

- /etc/yum.repos.d/配下にMongoDBリポジトリファイルを作成

 # vi mongodb-org-3.2.repo

 [mongodb-org-2.6]
 name=MongoDB 2.6 Repository
 baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
 gpgcheck=0
 enabled=1

 $ sudo yum install -y mongodb-org

 $ mongo --version
 MongoDB shell version: 3.2.6

** スレッドモデルとイベントループ [#uc6e1ba2]

- スレッドモデル:Apacheなど
-- 1つのリクエストに対して1つのスレッド
-- 大量のリクエストが来るとメモリが枯渇してスレッドが作成できないためリクエストの待ち状態が発生

- イベントループモデル:Node.js
-- 全てのリクエストは一度キューに溜まり随時バックエンドで処理。
-- 処理の順番は保証しない。
-- ノンブロッキングなコードの記述をする必要あり。
-- setTimeout等のタイマー処理を含む処理は次の処理をブロックしないようにコールバック関数として実装する。

** Hello World [#m6096a7a]

- 対話モード

 $ node
 > console.log("hello world");
 hello world
 undefined

-- コマンド一覧表示

 $ .help

- hello.js作成

 console.log("hello world");

- 実行

 $ node hello.js
 hello world

** ノンブロッキング処理とブロッキング処理 [#q1138ffd]

 // non blocking
 setTimeout (function () {
 	console.log("hello");
 }, 1000);
 console.log("world");

 $ node hello.js
 world
 hello

 // blocking
 var start = new Date().getTime();
 console.log("hello");
 while (new Date().getTime() < start + 1000);
 console.log("world");

 $ node hello.js
 hello
 world

** Webサーバーを作成 [#a0ea7aae]

- server.js作成

 var http = require('http');
 var server = http.createServer();
 server.on('request', function(req, res) {
 	res.writeHead(200, {'Content-TYpe': 'text/plain'});
 	res.write('hello world');
 	res.end();
 });
 server.listen(1337, '192.168.33.10');
 console.log('server listening ...');

 $ node server.js
 server listening ...

- ブラウザで http://192.168.33.10:1337/ へアクセスし"hello world"が表示されることを確認


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS