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番。
あとで、もう少しマニュアル読んでみよ。。