如何在Express中输出漂亮的html?
我注意到,虽然使用Express的Node.js,它输出的HTML代码没有任何换行符或制表符。 虽然在技术上可以更有效地下载,但并不是很漂亮。
我怎么能得到它打印不错的格式化的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
因为在production
“丑陋”会让你更高效。 确保在NODE_ENV=production
环境中部署环境variablesNODE_ENV=production
production。 这可以通过在package.json
的'script'字段中使用sh
脚本来完成,然后执行该脚本来启动。
Express 3 改变了这个,因为:
app.locals是与res.render()合并的局部variables,所以[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>
我似乎不是非常复杂,但对于我后来的 – 实际上debugging我的观点产生的HTML的能力 – 这就好了。
在express 4.x中,添加到你的app.js中:
if (app.get('env') === 'development') { app.locals.pretty = true; }
如果你正在使用控制台编译,那么你可以使用这样的东西:
$ jade views/ --out html --pretty
你真的需要格式良好的HTML吗? 即使你试图在一个编辑器中输出看起来不错的东西,在另一个编辑器中也可能看起来很奇怪。 当然,我不知道你需要的HTML,但我会尝试使用铬开发工具或Firefox的萤火虫。 这些工具可以让您更好地了解DOM而不是HTML。
如果你确实需要很好的格式化HTML,那就试试用EJS代替玉。 这意味着你不得不格式化自己的HTML虽然。
你可以使用整洁
拿这个玉文件为例:
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
现在你可以用节点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); });
会给你。 喜欢:
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来整理它将导致:
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>
以oliver的build议为基础,inheritance人查看美化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
打开命令只适用于mac。 希望有所帮助!
在express 4.x中,添加到你的app.js中:
app.locals.pretty = app.get('env') === 'development';