在使用 Express for Node.js 时,我注意到它输出的 HTML 代码没有任何换行符或制表符。虽然下载起来可能更有效率,但在开发过程中它的可读性不是很好。
如何让 Express 输出格式良好的 HTML?
在使用 Express for Node.js 时,我注意到它输出的 HTML 代码没有任何换行符或制表符。虽然下载起来可能更有效率,但在开发过程中它的可读性不是很好。
如何让 Express 输出格式良好的 HTML?
在你的主要app.js
或它的位置:
快递 4.x
if (app.get('env') === 'development') {
app.locals.pretty = true;
}
快递 3.x
app.configure('development', function(){
app.use(express.errorHandler());
app.locals.pretty = true;
});
快递 2.x
app.configure('development', function(){
app.use(express.errorHandler());
app.set('view options', { pretty: true });
});
我把漂亮的印刷品放进去是development
因为你会想要在production
. 确保NODE_ENV=production
在生产中部署时设置环境变量。这可以通过sh
您在“脚本”字段中使用package.json
并执行启动的脚本来完成。
Express 3改变了这一点,因为:
不再需要“视图选项”设置,app.locals 是与 res.render() 合并的局部变量,因此 [app.locals.pretty = true 与传递 res.render(view, { pretty : 真的 })。
在 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
您真的需要格式良好的 html 吗?即使您尝试输出在一个编辑器中看起来不错的内容,在另一个编辑器中也会显得很奇怪。当然,我不知道您需要 html 来做什么,但我会尝试使用 chrome 开发工具或用于 Firefox 的 firebug。这些工具可以让您更好地了解 DOM 而不是 html。
如果您真的需要格式良好的 html,请尝试使用 EJS 而不是玉。这意味着您必须自己格式化html。
你可以使用整洁
以这个玉文件为例:
富玉
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);
});
会给你…… 像:
输出.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 运行它会导致:
输出.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>
根据 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';