Expressで自動生成されたapp.jsを軽くみてみる
2011年2月12日
/**
* 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番。
あとで、もう少しマニュアル読んでみよ。。