如何让 Express 和 Jade 不压缩 HTML?

14

我使用express和jade,但在调试时不希望jade压缩我的html,有没有办法全局传递一个选项给jade,并使其不压缩html。


你的意思是希望在查看页面源代码时,Jade模板也能显示出来吗? - Chris Biscardi
他的意思是他想在jade中间件的编译过程中关闭压缩。我认为,至少这是我想要的。 - light24bulbs
5个回答

28

如果您使用Express 3.x,您可以通过app.locals.pretty控制压缩。我通常在开发时启用它:

app.configure('development', function () {
    app.locals.pretty = true;
});

14
自从这个答案写出来以后,已经添加了一个选项来控制这种行为。
app.locals.pretty = true;

目前还没有这个功能。关于此已在此处进行讨论:

https://github.com/visionmedia/jade/pull/205

不过,默认情况下,HTML并不会被压缩或缩小。只是格式不好看。我发现最简单的方法是使用Chrome开发工具,它可以给你一个漂亮可折叠的源代码表示方式,使其易于阅读。


17
我问了TJ。使用app.set('view options', {pretty: true}); - guilin 桂林
@guilin桂林 这不应该是被接受的答案。得票最多的答案才是正确的。 - light24bulbs
谢谢,@light24bulbs。答案是错误的。我已经更新了它,使其更加正确。 - davidbanham

1
哦,我对nodejs还很陌生,可能有些东西没注意到;但是在app.js中添加app.set('view options', {pretty: true});没有效果(使用express 3.0.3)。
看起来不支持?找到了一个解决方法,例如在每个路由的基础上:
exports.index = function(req, res){
  res.render('index', {
    [... other stuff ...]
    pretty: true
  });
};

如果你看一下Andy的回答,它基本上是一样的。(res.render('index', { /* view.locals */ }))。如果你将它设置在app.locals上,它会扩展到所有的res.render()调用中。有关app/view locals如何工作的一些文档。 - AlbertEngelB

1

您可以使用Jade注释来为在浏览器中查看的代码添加注释。

//h1
h1 Some Title
//p
p some content

将输出

<!--h1-->
<h1>Some Title</h1>
<!--p-->
<p>some content</p>

模板一旦离开服务器就已经编译完成,因此如果您想在浏览器中查看模板,则需要编写一个插件将HTML反编译为Jade,然后显示反编译版本。


2
这些HTML注释不应该是<!-- -->吗? - Zikes
据我所知,Jade会输出“//”的HTML注释,并完全忽略“///”注释。 - pronebird

0

如果您正在使用pug-cli,您需要在cmd(终端)中添加--pretty。像下面这样:

pug --pretty -w -o dist/html/ assets/pug/index.pug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接