如何使Jade模板自动压缩内联JavaScript?

当我检查HTML页面的源代码时,HTML标签和文本内容被压缩而没有空白和行,但内联的JavaScript。

刚刚在Jade v0.30.0中发现了一些适合我的东西:

  1. 用.uglify扩展名重命名.js文件
  2. 在你的Jade模板中,使用:

    include name-of-javascript-file.uglify 

为什么这么做:挖掘Jade源代码,我发现了一个名为filters.js的文件。 在那里,你会看到对transformers的依赖。 在lib/transformers.js (变换器模块)中,您将看到各种转换实用程序,包括uglify 。 显然,如果你在include声明中匹配正确的文件扩展名,Jade将会调用这些变换器中的任何一个。

我不确定,还没有testing,但你可以probalby添加一个filter,并利用UglifyJS 。 例如

 var uglyParser = require("uglify-js").parser; var uglyUgly = require("uglify-js").uglify; var uglify = function(str) { var ast = uglyParser.parse(str); ast = uglyUgly.ast_mangle(ast); ast = uglyUgly.ast_squeeze(ast); return uglyUgly.gen_code(ast); } 

说实话,我不知道把它放在哪里,所以把它当作一个filter。 现在你应该能够坚持在https://github.com/visionmedia/jade/blob/master/lib/filters.js

玉的用法是:

 script(type="text/javascript") :uglify <Your JavaScript Code> 

我再次没有testing它。 但我认为它应该工作。 我今天晚些时候再testing一下。

根据文档 ,你可以使用任何JSTransformer作为一个玉filter。 那么,你通常会这样做内联JS:

 script. (function doSomething () { … })(); 

你应该这样做:

 script :uglify-js (function doSomething () { … })();