如何使Jade模板自动压缩内联JavaScript?
当我检查HTML页面的源代码时,HTML标签和文本内容被压缩而没有空白和行,但内联的JavaScript。
刚刚在Jade v0.30.0中发现了一些适合我的东西:
- 用.uglify扩展名重命名.js文件
-
在你的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 () { … })();