Express for Node.jsを使用すると、改行文字やタブなしでHTMLコードが出力されることに気付きました。ダウンロードする方が効率的かもしれませんが、開発中は読みにくいです。
Expressで適切にフォーマットされたHTMLを出力するにはどうすればよいですか?
メインのapp.js
またはその場所にあるもの:
Express 4.x
if (app.get('env') === 'development') {
app.locals.pretty = true;
}
Express 3.x
app.configure('development', function(){
app.use(express.errorHandler());
app.locals.pretty = true;
});
Express 2.x
app.configure('development', function(){
app.use(express.errorHandler());
app.set('view options', { pretty: true });
});
development
に「ugい」を追加すると効率が向上するので、production
にプリティプリントを配置します。実稼働環境にデプロイするときは、必ず環境変数NODE_ENV=production
を設定してください。これは、package.json
の 'script'フィールドで使用するsh
スクリプトを使用して実行でき、開始するために実行されます。
Express 3 変更 これは次の理由によります:
「表示オプション」設定は不要になりました。app.localsはres.render()にマージされたローカル変数なので、[app.locals.pretty = trueはres.render(view、{pretty :true})。
Jade/ExpressでHTML出力を「きれいにフォーマット」するには:
app.set('view options', { pretty: true });
Jade自体には「きれいな」オプションがあります。
var jade = require("jade");
var jade_string = [
"!!! 5",
"html",
" body",
" #foo I am a foo div!"
].join("\n");
var fn = jade.compile(jade_string, { pretty: true });
console.log( fn() );
...これを取得します:
<!DOCTYPE html>
<html>
<body>
<div id="foo">I am a foo div!
</div>
</body>
</html>
私はあまり洗練されていないように見えますが、私が望んでいること-ビューが生成するHTMLを実際にデバッグする機能-は問題ありません。
Express 4.xでは、これをapp.jsに追加します。
if (app.get('env') === 'development') {
app.locals.pretty = true;
}
コンソールを使用してコンパイルする場合は、次のようなものを使用できます。
$ jade views/ --out html --pretty
oliverの提案に基づいて、美化されたhtmlをすばやく簡単に表示する方法を紹介します
1)ダウンロード 整頓
2)これを.bashrcに追加します
function tidyme() {
curl $1 | tidy -indent -quiet -output tidy.html ; open -a 'google chrome' tidy.html
}
3)実行
$ tidyme localhost:3000/path
openコマンドはMacでのみ機能します。それが役立つことを願っています!
Express 4.xでは、これをapp.jsに追加します。
app.locals.pretty = app.get('env') === 'development';
適切にフォーマットされたhtmlが本当に必要ですか?あるエディタで見栄えの良いものを出力しようとしても、別のエディタでは奇妙に見えることがあります。確かに、HTMLが何のために必要なのかわかりませんが、chrome開発ツールまたはFirefoxのfirebugを使用してみます。これらのツールを使用すると、htmlではなくDOMを適切に表示できます。
適切にフォーマットされたhtmlが本当に必要な場合は、jadeの代わりにEJSを使用してみてください。ただし、htmlを自分でフォーマットする必要があります。
tidy を使用できます
たとえば、このjaファイルをご覧ください。
foo.jade
h1 MyTitle
p
a(class='button', href='/users/') show users
table
thead
tr
th Name
th Email
tbody
- var items = [{name:'Foo',email:'foo@bar'}, {name:'Bar',email:'bar@bar'}]
- each item in items
tr
td= item.name
td= item.email
これで、node testjade.js foo.jade> output.htmlで処理できます:
testjade.js
var jade = require('jade');
var jadeFile = process.argv[2];
jade.renderFile(__dirname + '/' + jadeFile, options, function(err, html){
console.log(html);
});
s.thを提供します。好む:
output.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>My Title</title><link rel="stylesheet" href="/stylesheets/style.css"/><script type="text/javascript" src="../js/jquery-1.4.4.min.js"></script></head><body><div id="main"><div ><h1>MyTitle</h1><p><a href="/users/" class="button">show users</a></p><table><thead><tr><th>Name</th><th>Email</th></tr></thead><tbody><tr><td>Foo</td><td>foo@bar</td></tr><tr><td>Bar</td><td>bar@bar</td></tr></tbody></table></div></div></body></html
tidy -m output.htmlでtidyを実行すると、次の結果になります。
output.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org" />
<title>My Title</title>
<link rel="stylesheet" href="/stylesheets/style.css" type=
"text/css" />
<script type="text/javascript" src="../js/jquery-1.4.4.min.js">
</script>
</head>
<body>
<div id="main">
<div>
<h1>MyTitle</h1>
<p><a href="/users/" class="button">show users</a></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>Foo</td>
<td>foo@bar</td>
</tr>
<tr>
<td>Bar</td>
<td>bar@bar</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>