Expressで自動生成されたapp.jsを軽くみてみる

/**
* Module dependencies.
*/
var express = require('express');

requireがモジュールの読み込みですかね。

// サーバー作成
var app = module.exports = express.createServer();

これでサーバーができたので、app経由で色々できるぽい。

// Configuration
app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.use(express.bodyDecoder());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.staticProvider(__dirname + '/public'));
});

__dirnameは、app.jsが実行されているディレクトリ。
他にも、__filenameってのがあって、これは実行してるapp.jsの絶対pathが入る模様。view engineの指定は、-t ejsで作成したので、ejsが入ってます。

指定しない場合はデフォルトで、jadeが使われる。

bodyDecoder()は、ポストでパラメータを受け取る時に必要らしい。

methodOverride()は、HTTPで受け取る時に必要??

app.routerはルートをマウントするってマニュアルに書いてありましたが・・どういう事ですかね。get,put,del.postがappで呼べる?

staticProviderは、静的ファイルのディレクトリを指定してるみたいです。

app.configure('development', function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
    app.use(express.errorHandler());
});

エラー処理は、developmentとproductionが用意されてますね。

デフォルトは、development。

$ NODE_ENV=production node app.js

って感じで、起動した場合は、productionモードで起動できる。

// Routes
app.get('/', function(req, res){
    res.render('index', {
        locals: {
            title: 'Express'
        }
    });
});

getでアクセスされる’/’での処理ですかね。
app.get(‘/hoge’)に書き換えると、http://****.com/hogeでのアクセス時の処理になります。

‘index’って書くだけで、views/index.ejsが呼ばれてますね。

localsは、ejsに送るパラメータをjsonで指定。

index.ejsで、

<%= title %>

てな感じで、呼べる。

<%= %>:htmlエスケープ

<%- %>:htmlエスケープなし

<% %>:javascript

// Only listen on $ node app.js
if (!module.parent) {
    app.listen(3000);
    console.log("Express server listening on port %d",
        app.address().port);
}

listenするポートの指定は、デフォルト3000番。

あとで、もう少しマニュアル読んでみよ。。