node.jsのテンプレートエンジンExpressのroutesの書き方が一瞬わからなかったのでまとめたよ


しかだよ。
Expressのroutes配下の書き方がわからないので調べてみました。
expressのルーティング - hokaccha.hamalog v2
2012-07-14 - ZeBeVogue別館
なんかしっくりこない・・・。
なんとかなるんじゃないかなと思って、色々試してみた。それっぽいまとめ方ができたので報告。

routes配下の作り方

最初のテンプレートはこんなかんじ。
web.js

routes = require("./routes");

routes/index.js

exports.index = function(req, res) {
  return res.render("index", {
    title: "Shikajiro dayo"
  });
};

機能を増やす

index以外にaddとか追加するにはこんな感じでできた。
routes/index.js

exports.index = function(req, res) {
  return res.render("index", {
    title: "Shikajiro dayo"
  });
};
//add処理の追加
exports.add = function(req, res) {
};

階層を増やす

index、addだけでは限界がある。exports.user.index, exports.user.addとか、階層を表現できるようにしたい。
routes/index.js

exports.index = function(req, res) {
  return res.render("index", {
    title: "Shikajiro dayo"
  });
};
//【これは動かない】
exports.user.add = function(req, res) {
};

だめだった・・・。

userディレクトリを作ってその中にファイルを作る。んで、親階層のindex.jsでそれをrequireする手法をやってみる。
routes/index.js

//ちゃんと動く
exports.index = function(req, res) {
  return res.render("index", {
    title: "Shikajiro dayo"
  });
};
//子階層を指定する
exports.user = require('./user');

routes/user/index.js

exports.add = function(req, res) {
}

呼び出しはこんな感じ。
web.js

var routes = require("./routes");
app.get '/', routes.index
app.post '/user/', routes.user.add

routes/index.jsで子階層を指定するのがちょびっと冗長だけど、許せる範囲!

補足

最初間違えた事書いてたので記事消しました。この記事は訂正版になります。