Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

app.route(path)でパスの関係を見やすくする

expressアプリを作っていくと、そのうち構造が地獄めいてきます。
そうなると、どこ弄っているか分からなくなる事、結構ありますよね。
あるいは、単純なルートのタイポでエラー吐いて、解析に30分かかったりとか。
こういう時は、app.route(path)でパスの関係を見やすくする事ができます。

実際のところ

前回の記事では/user/:id/:pageの挙動がバラバラでした。
routeを使うと、一つのネストにまとめこむ事ができます。

var express = require('express');
var app     = express();

app.use('/data', express.static('data'));
app.set('view engine', 'jade');

// 中略

app.route('/user/:id/:page')
    .get(function (req, res, next) {
	console.log('req.path  ', req.path); //(4)
	next();
    })
    .get(function (req, res) {
	console.log('Coming the render section.'); //(5)
	var responseText = 'Your page name: ' + req.params.page + " !"; 
	res.render('index', { title: 'Our Apps!', message: responseText});
	res.end();
    });

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

大分可視性が上がりましたね。
これの使用はコーディング規約にしておいた方が良さそうです。