読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

Node.jsを使ってみる

Node.js
話題のサーバーサイドJavaScriptである Node.js を使用してみます。 Node.jsのメリットとしては「リアルタイムweb」の構築ができる点が有名です。Facebookのメッセージとかは更新リクエストをしなくても勝手に相手のメッセージが表示されていきますよね。あれです。 Ubuntuレポジトリ登録で簡単にインストールできます。
$ sudo apt-get install python-software-properties python g++ make
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo aptitude update
$ sudo aptitude install nodejs npm
◆動作確認 Node.jsはインタプリタも内装されているので、コマンドラインからJavaScriptが実行できます。
$ node
>1 + 2
3
下記のサンプルコードを実行して実際にブラウザで表示してみましょう。
$ emacs -nw app.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
$ node app.js
http://127.0.0.1:1337/ にアクセスして「Hello World」が表示されればOKです。 ◆モジュールのインストール 有名ドコロは ・express:フレームワーク ・socket.io:ライブラリ。リアルタイムな双方向通信ができるWebSocketを使える ・Jade:テンプレートエンジン ・ejs:テンプレートエンジン ローカルインストールは
$ npm install モジュール名
グローバルインストールは
$ sudo npm install -g モジュール名
◆Expressをインストールしてみる グローバルでインストールしてみます。
$ sudo npm install -g express
サンプルの導入
$ express -e sample
$ cd sample
$ npm install
上の「npm install」はそのローカル内で依存関係のモジュールをインストールしてくれます。どのモジュール化はフォルダ内の「package.json」に書いてあります。 ◆ディレクトリ構成 node.jpg /node_modules Expressなどのモジュールが入っているディレクトリ。基本的には触れません /public 公開ディレクトリです。画像や、CSS、クライアントサイドのJavaScriptはこのフォルダ以下に置きます /views HTMLのテンプレートを置くディレクトリ /rotes HTMLテンプレートとの関連付けをするindex.jsが入っているディレクトリ。viewsにテンプレートを追加した場合は、/rotes/index.jsも更新する app.js サーバサイドのメイン部分。URLの対応付けや、アプリの処理はここに書きます。 ◆動作確認 実行して
$ node app.js
ブラウザで http://localhost:3000 にアクセス。Welcome to Express と表示されればOK ◆リアルタイムブラウザチャットを試す サンプルファイルのダウンロード。git を使用します。git ってなーに?って人は「Gitの解説、導入」を参考に。
$ git clone git://github.com/coppieee/node-chat-demo.git
$ cd node-chat-demo
$ npm install
$ node app
ではブラウザにアクセス http://localhost:3000 複数のブラウザを立ちあげて、それぞれのウィンドウで何か入力するとリアルタイムで反映されていくのが分かります。 node_chat.png とりあえず今回はNode.jsのリアルタイムwebというものの体験。 ソース: Node.jsでどんなことができる? Node.js、Socket.IO、MongoDBでリアルタイムWeb npm と Node.js 上で require を使ったモジュール読み込みの仕組みについてメモ