像
这样的东西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>"
有没有办法明智地实现这一目标并且坚不可摧?
答案 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>