如何让Jade模板自动压缩内联javascript?

moc*_*kee 5 node.js pug

当我检查html页面源时,HTML标签和文本内容被压缩而没有空白和行,但是内联javascript.

小智 5

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

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

    include name-of-javascript-file.uglify
    
    Run Code Online (Sandbox Code Playgroud)

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


mck*_*mck 4

我不确定,也没有测试过,但您可以添加一个过滤器并利用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);
}
Run Code Online (Sandbox Code Playgroud)

老实说,我不知道该把它放在玉石的哪里,所以它被当作一个过滤器。现在您应该可以将其粘贴在https://github.com/visionmedia/jade/blob/master/lib/filters.js

那么在玉石中的用法是:

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

我又没有测试过。但我认为它应该有效。今天晚些时候我会测试一下。