eXcaleで始めるNode.js 2

app.jsの中身

app.jsの中身

作成されたapp.jsの中身を見ていきます。大まかに言うと、上から順に各種モジュールのロード、アプリケーション設定、ルーティング、サーバ作成となっています。

まず、expressモジュールをロードし、続いてroutes/index.js、routes/user.jsをロードしています。jsという拡張子およびindexは省略可能なので、前者は簡単にroutesとだけ記述されています。

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');

続いてexpress()メソッド実行後、appに対して各種設定が行われています。portに3000を指定し、viewのファイルはviews以下、静的ファイルがpublic以下に置かれるという設定とともに、利用するミドルウェアが指定されています。

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

その後のルーティングでは、HTTPメソッドと同様のメソッドであるget, post, put, delメソッドを用いて、リクエストを受け付けるURLと実際の処理を紐付けていきます。

第1引数にリクエストを受け付けるパス、第2引数でイベントハンドラを紐付けます。今回の例では"/"と"/users"へのGETリクエストをroutes/以下にあるファイルで定義された各イベントハンドラにそれぞれ紐付けています。

app.get('/', routes.index);
app.get('/users', user.list);

routes以下にあるファイルでは実際のイベントハンドラが記述されています。試しに/usersにリクエストした際に指定されているuser.listを見ていきます。

app.jsの最初にモジュールをロードしている箇所でuserとしてrequire('./routes/user')をロードしているので、user.listはrequire('./routes/user').listと同義です。require('./routes/user')では./routes/user.jsが読み込まれます。以下はUser.jsの内容です。

exports.list = function(req, res){
  res.send("respond with a resource");
};

このようにuser.js内部で実際の処理を定義した関数をlistという名前でexportsしています。従って、user.listはuser.js内でlistとしてexportsされている関数となります。

app.jsの最後ではHTTPサーバオブジェクトを作成して、先にセットしたポート番号でListenを開始しています。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る