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

时间:2011-08-11 09:47:04

标签: node.js pug

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

3 个答案:

答案 0 :(得分:5)

在Jade v0.30.0中发现了一些对我有用的东西:

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

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

答案 1 :(得分: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);
}

说实话,我不知道在玉器中放哪个,所以它被视为过滤器。现在你应该可以把它贴在https://github.com/visionmedia/jade/blob/master/lib/filters.js

玉器中的用法将是:

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

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

答案 2 :(得分:2)

根据the docs,您可以使用任何JSTransformer作为玉过滤器。所以,你通常会这样做来内联JS:

['h2', 'h3', 'h1']

你应该这样做:

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