Node.jsの特徴はなにか。イマイチ、よくわからんー。
わからないままやるより、ちょっと立ち止まって、アタマを整理したほうがたぶんいいと思う。
Node.jsはライアン・ダールというひとが開発したらしく、
さいわい、本人によるプレゼンテーションがYiutubeにアップされている。
こんなことを言っているみたいだ。
Node.jsは、グーグルの開発したChromeにもつかわれているV8というJavaScriptエンジンの上に構築されている。
V8にたくさんのライブラリをのせたのがNodeで(そしてたくさんのライブラリを管理するのがnpmで..鶴巻)、ネットワークの処理を効率よくおこなうことに焦点をあてている。
では、Node.jsとphpをくらべてみよう。
まずNode.jsネ。
SetTimeout(function(){
console.log(“world”);
},2000)
console.log(“hello”)
SetTimeoutはコールバック関数をとっていて、worldは2000ミリ秒後に表示されるようになっている。したがってhelloの方が早く表示され、結果的に、hello worldというふうになる。
一方のPHP。
echo(“hello”)
sleep(2)
echo(“world”)
setTimeout(function(){
console.log(“world”)
}),2000)
console.log(“world”)
こちらも、同様にhello worldという出力がなされる。
では、両者のちがいは、なにか。
phpはsleepし、Node.jseの方はTimeoutしている。
前者は文字どおり眠ってしまう(止まってしまう)が、後者のNode.jsは(使えるのに、何もしていない)アイドルの状態になっている。
つまりNode.jsがなにもしていないあいだ、OSはほかの仕事ができるわけ。
これについてはサーバーサイドでも言え、Node.jsがアイドル状態のあいだ、サーバーのcpuはほかの作業を行なうことができる。
JavaScriptの非同期の作業をサーバーでも実現できるというみたいな(鶴巻)。
Etherium(イーサリアム)にPHPでhなく、Node.jsが選ばれているのは、この点にありそう(鶴巻)。