一种缩小或丑化ES6模板字符串的方法

时间:2015-08-19 14:16:56

标签: javascript ecmascript-6 template-strings

这样的东西
var tpl = `
<div> 
   template
   <span>string</span>
</div>
`

将产生:

var tpl = "\n<div> \n  template\n  <span>string</span>\n</div>\n";

我需要的是摆脱额外的空间和换行符,就像所有其他html缩小工具一样。

所以它应该类似于:

"<div>template<span>string</span></div>"

有没有办法明智地实现这一目标并且坚不可摧?

1 个答案:

答案 0 :(得分:4)

最好的方法可能是使用标记模板,例如

var tpl = minifyHTML `
<div> 
   template
   <span>string</span>
</div>
`;

你可以从

开始
function minifyHTML(parts, ...values) {
    var out = [];
    out.push(parts[0]);
    for (var i = 1; i<parts.length; i++)
        out.push(parts[i], String(arguments[i]));
    return out.join("");
}

与没有标签基本相同。

现在您可以将其扩展为动态缩小模板的parts,以便tpl成为预期的字符串。

下一步是在编译管道中将其作为静态优化引入。弄清楚如何编写与AST中标记的模板表达式匹配的规则,其中标记是标识符minifyHTML,然后评估缩小作为编译/捆绑ES6 / TypeScript源到分布式文件的一部分。 / p>