Edited at

Express + JadeでHTMLを見やすく出力する方法

More than 5 years have passed since last update.

Express+JadeでHTMLを出力すると改行無しで1行で出力されます。

<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>

res.render()の第二引数にpretty: trueを渡すと改行+インデントされます。

// routes.index.js

exports.index = function(req, res){
res.render('index', { title: 'Express', pretty: true });
};

<!DOCTYPE html>

<html>
<head>
<title>Express</title>
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<h1>Express</h1>
<p>Welcome to Express</p>
</body>
</html>

これは、res.render(view, [locals], callback)jade.rendeFile(filename, options, callback)を呼んでいるためです。この第二引数optionsは、

API Documentation : Jade - Template Engine


options

An options object (see above), also used as the locals object


と、Jadeのオプションとテンプレートに渡す変数の両方の目的で使われています。Jadeのオプションには他にも以下のものがあります。


  • filename

  • pretty

  • self

  • debug

  • compileDebug

  • compiler

  • globals

なので、例えばテンプレート変数名のつもりでうっかりdebugとか使うと、動かなくはないけどコンソールに大量にログが出力されます。