Friday, January 4, 2013

Node.js + express でWebアプリケーション構築

Node.js は nvm (Node Version Manager) を使ってインストールします。ホームディレクトリ ~/.nvm 以下に git リポジトリを取得します。

% git clone git://github.com/creationix/nvm.git ~/.nvm

~/.nvm/nvm.sh を読み込むことで、nvm コマンド(シェル関数)が使えるようになります。

% source ~/.nvm/nvm.sh
% nvm help
....

シェルログイン時に、nvm.sh を読み込むようにしておくと便利です。

% vim ~/.bash_profile
...
[[ -s $HOME/.nvm/nvm.sh ]] && source $HOME/.nvm/nvm.sh
....

本記事執筆時点の最新安定版 Node.js v0.8.16 をインストールします。

% nvm install v0.8.16
....
% node --version
v0.8.16

npm (Node Package Manager) を使って Node.js のパッケージをインストールすることができます。npmnode.js に同梱されています。

% which npm
~/.nvm/v0.8.16/bin/npm

npm で Webフレームワークの express をインストールします。-g オプションをつけてグローバルインストールしておきます。

% npm install -g express@3.0.6
% ls ~/.nvm/v0.8.16/lib/node_modules
express npm
% which express
~/.nvm/v0.8.16/bin/express
% express --version
3.0.6

express コマンドで、アプリケーションの雛形を生成します。以下の例では -tejs オプションでテンプレートエンジンに ejs を指定しています。

% cd /path/to/node/project
% express -tejs sandbox

   create : sandbox
   ....

   install dependencies:
     $ cd sandbox && npm install

   run the app:
     $ node app

作成したアプリケーションディレクトリ以下に移動し、npm install で依存パッケージをローカルインストールします。

% cd sandbox
% npm install
# ローカルインストールでは ./node_modules にインストールされます
% ls ./node_modules
ejs express

node app で、http://(HTTP_HOST):3000 でサーバが起動します。CTRL-C で停止します。

% node app
Express server listening on port 3000

app.js routes/*.js あたりを見ると、express は Sinatra ライクなシンプルなフレームワークであることがわかります。

% vim app.js
....
app.get('/', routes.index);
....

% vim routes/index.js
....
exports.index = function(req, res) {
  res.render('index', { title: 'Express' });
};
....