【ドットインストール】node.jsを学ぶ1
最近ドットインストールやってます。
無料の講座でも十分遊べるので気に入ってます。
今日の講座はこちら。
以下、講座のメモ。
の前に、環境構築
CentOS7で構築しようとしたら盛大にコケたので書いておく。
以下、CentOS6(64bit)にて構築
node.js + npm
$sudo yum install -y epel-release
$yum install -y nodejs npm --enablerepo=epel $node -v v0.10.36 $npm -v 1.3.6
mongodb
以下のファイルを作成して記述
/etc/yum.repos.d/mongodb.repo
[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1
$sudo yum install -y mongodb-org
$sudo service mongod start Starting mongod:
Centos7だとこうかな?(確認してないけど)
$sudo systemctl start mongod Starting mongod:
node.jsは何が良いの?
リクエストの処理の仕方が違う。
スレッドモデル(Apache)
大量のリクエストが飛んで来るとメモリが不足するイベントループ(node.js)
メインのスレッドが1つ(シングルスレッド)、キューでリクエストを受け付けて1個ずつ処理していく
大量のリクエストが来てもダウンしにくいJavascriptでサーバサイドを記述できる(これは人による)
ノンブロッキング
javascriptが採用されている理由はこれ。
ちなみに見た目とかDOMに関する機能は使えない(当然っちゃ当然)
簡単な使い方
$node >console.log("Hello"); Hello undefined >.exit
ファイルの場合は引数にファイル名を当てるだけ
$node hello.js
Hello
ノンブロッキングって何
1 //non-blocking 2 setTimeout(function(){ 3 console.log("hello"); 4 },1000); 5 console.log("wolrd");
次の処理を邪魔しないようにコールバック関数を使って書くことを指す。
結果は以下のとおり。
$node hello.js
wolrd
hello
先にworldと出て、helloがあとから出る。
ちなみに次のように書くとブロッキングな書き方。
1 //blocking 2 3 var start = new Date().getTime(); 4 while(new Date().getTime() < start+1000);//現在時刻から1秒後までループ 5 console.log("world");
実行するとわかるが、一秒立たないとworldが表示されない。