Windows7 で express 使ってみるよ

今回も例のごとく Git Bash を使って Windows7 の環境でのお話。

Node.js でプロジェクト管理をするには express とかいうプラグインを入れるといいらしい。
f:id:runnning-programmer:20150216021015p:plain

express でプロジェクトの雛形を作るためには express-generator というプラグインを入れる必要が有るらしい。
f:id:runnning-programmer:20150216021046p:plain

とりあえずババッとインストール。
では express コマンドとやらの実力を見てみよう。
f:id:runnning-programmer:20150216114033p:plain
ファイルを置きたい場所にディレクトリを移動して、 express コマンドの後ろにプロジェクト名(フォルダ名)を入れるだけ。
f:id:runnning-programmer:20150216114130p:plain
はい、ファイルも出来ました。

それじゃ早速起動してみようと、思ったところでポート番号が分からない。
まずはファイルの中身を見る必要があるようだ。

出来たファイルをざっと眺めてみる。
プロジェクトフォルダの直下に

app.js
package.json

という二つのファイルがあった。

app.js
これは CakePHP などの PHPフレームワークでいうところの html/index.php に相当するファイルのようだ。
基本的な情報のセットをしている。

package.json
こちらはこのプロジェクト(アプリ)の説明が書いてある。
この記述の中で気になったのが、

  "scripts": {
    "start": "node ./bin/www"
  }

というところ。
アプリケーションがスタートしたときに叩かれるスクリプトと言うことだろうか?

早速そのファイルを探してみると、確かにプロジェクト直下の bin フォルダに拡張子なしの www というファイルが存在する。
怪しい。
適当なテキストエディタで開いてみると、中は案外普通の Node.js の記述だった。
バイナリデータとかでファイルぶっ壊れたらどうしようかと思っていたけど、杞憂だったようだ。

こちらも中身を見ると、なにやら基本的な設定のようなことが書かれている。
bootstrap.php 的な感じだろうか。
ただ、良く見ると

var app = require('../app');

と言う記述があるので、どうやらこちらが html/index.php 的な存在らしい。
そして探していたポート番号らしきものを発見。

var port = normalizePort(process.env.PORT || '3000');

なるほど 3000 らしい。

ここまでの流れをまとめると、

Node.js -> package.json -> bin/www -> app.js

と言う順序で起動されるらしい。

せっかくだし残りのフォルダを見てみる。

public
このフォルダの中にはさらに images, javascripts, stylesheets というフォルダがあるので、サイトに表示される画像やスタイルシートなどを置いておくためのフォルダのようだ。

routes
このフォルダの中には初期状態で index.js, users.js と言うファイルが作成されている。
PHP フレームワークで言うところのコントローラに当たるところっぽい。
そういえば app.js の 8,9行目にこんな記述と

var routes = require('./routes/index');
var users = require('./routes/users');

25,26行目にこんな記述があった。

app.use('/', routes);
app.use('/users', users);

このあたりでルーティングをしているのだろうか。
なんか面倒くさそう。
大規模になったらルーティングファイルは切り出すのだろうか…?

views
このフォルダには初期状態で error.jade, index.jade, layout.jade の3つのファイルがある。
中を見ると、独自のテンプレート記述で HTML が表現されているようだ。
ぱっと見た感じ結構簡単そうに思える。

さて、今度こそ起動してみよう。
起動はどうやるんだ?昨日までは node コマンドの後ろにファイル名を入力してたけど。
さっきプロジェクトを作成したときのログを見ると、

cd couch && npm install

って書いてあるので早速やってみる。
f:id:runnning-programmer:20150216121615p:plain
なんかインストールされましたね。
今までプロジェクトとか勝手に呼んでたものは npm のパッケージだったってことで、 PHPフレームワークというイメージではなく Apache のモジュール的な存在らしい。
なにそれ怖い。

さてインストールされたことだし早速ブラウザで確認してみよう。

http://127.0.0.1:3000

はい、ノットファウンド。
なんで?と思ったけど、さっきやったのは「インストール」だけで「起動」はしてない、ということらしい。
ならば起動してあげようではないか。

npm start

f:id:runnning-programmer:20150216122957p:plain
そしてブラウザで起動を確認。
f:id:runnning-programmer:20150216123003p:plain
きましたわー。
と、ブラウザを開いた瞬間にコンソールに記述が増えた。
f:id:runnning-programmer:20150216123030p:plain
なんかログ吐いてるっぽい。
標準出力じゃなくてどっかのフォルダとかに吐かせることは出来るのだろうか?
出来ないわけはない思うので、今度探してみよう。