Node.jsでWebAppの開発に必要なN個のこと

 ※元ネタは「PerlでWebAppの開発に必要なN個のこと

 あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずNode.jsについて知っていることを書いた。

パッケージマネージャ

 ライブラリの管理には、Node.jsに同梱されているnpmを利用する。Node.js向けに公開されているパッケージのほぼすべてはnpm経由で入手が可能だ。

 npmでは通常アプリケーション個別のディレクトリにパッケージがインストールされ、システム全体でのパッケージの共有は行わないため、バージョン管理は容易である(オプションでシステム全体で共有するようにパッケージをインストールすることも可能)。

アプリケーションサーバー

 Node.jsには標準でhttpモジュール/httpsモジュールというHTTP/HTTPSサーバーが組み込まれている。別途Webサーバーを用意する必要は無い。

リクエストパラメータの処理

 自前で実装するのであれば、標準で含まれているurlモジュールやquerystringモジュールを使ってパースができる。フォームの処理を行うなら、Formidableモジュールなどを使うと簡単だ。

ルーティング

 単体のルーティングモジュールとしては、今のところNode.jsで決定的なものはない。http/httpsモジュールではリクエストを受け取るとイベントハンドラにリクエストされたパスやパラメータを含んだオブジェクトを渡すので、それらを見てif文などで自前でルーティング処理を実装してもたいした手間ではない。もちろん、npmにはいくつかのルーティング用モジュールが登録されている。

データベース

 統一的なインターフェイスはないが、主要なデータベースに対するモジュールは一通り用意されている。たとえばMySQLであればnode-mysqlなど。

ビューのレンダリング

 JavaScriptコードをHTML内に埋め込むタイプであればEJSが広く使われている。そのほか、Hogan.jsjadeなどお好みで。JSONを生成したいのであれば、JSON.stringfy()で可能。

HTTPクライアント

 Node.js標準のhttpモジュールに含まれている。

テストフレームワーク

 Vowsとかmochaとかが有名。

WAF(Web Application Framework)

 有名なのはexpress。ルーティングやリクエストのパースを容易にする機能が多数提供される。また、ルーティングを自前でやりたいというのであればexpressのベースとなっているConnectもチェックすると良い。また最近ではSails.jsというWAFが注目されているようだ。