Express を試してみる

Webアプリケーションフレームワークである Express を試してみた。

Sinatra inspired web development framework for node

https://github.com/visionmedia/express

と書かれている通り、Sinatra に近い。

環境

% node -v
v0.5.0-pre
% express -v
1.0.7

サンプル

ひな形作成

express を引数なしで起動すると、ひな形を作成してくれる。

% express
   create : .
   create : ./app.js
   create : ./public/images
   create : ./pids
   create : ./logs
   create : ./public/stylesheets
   create : ./public/stylesheets/style.css
   create : ./public/javascripts
   create : ./test
   create : ./test/app.test.js
   create : ./views/partials
   create : ./views/layout.jade
   create : ./views/index.jade
   - make sure you have installed jade: $ npm install jade

ん、jade はインストールしてあるのに...

起動
% node app.js 
Express server listening on port 3000

localhost:3000 にアクセスすると "Welcome to Express" と表示される。

リロード

開発中、ソースを更新したらサーバを再起動させないと更新分が反映されない。それは非常に面倒くさい。
node-dev を使うと、自動的に再起動してくれる。

インストール
% npm install node-dev
実行

エラーだ。

% node-dev app.js 
zsh: /home/yamamucho/.npm/bin/node-dev: bad interpreter: /usr/local/bin/node: そのようなファイルやディレクトリはありません

原因は node-dev に書かれている node コマンドのパスが、実行環境での node コマンドのパスと違うこと。

% head -n1 ~/.npm/bin/node-dev 
#!/usr/local/bin/node
% which node
/home/yamamucho/local/node/bin/node

あまり開発環境やパッケージでインストールしたソースに影響を与えたくないので、node コマンドで node-dev を引数に与える方法で進めてみようと思う。

% alias node-dev='node ~/.npm/bin/node-dev'
% node-dev app.js
27 Feb 11:29:01 - [INFO] Started
27 Feb 11:29:07 - [INFO] Restarting

うん、再起動されてる。
再起動するタイミングは、HTTPリクエストが到着した時ではなく、ファイルの更新が保存された時。どうやってるんだろ、後でソース見よ。JavaScript は詳しくないから想像が付かない。