我发现uglifyJS忽略单引号字符串中的转义双引号。
'test \" + foo + \"'
结果
'test " + foo + "'
这只是一种错误的行为。
我想要缩小.js
,这些数据必须进入JSON。但是JSON API必须是这样的。
{
string: "test \" + foo + \""
}
不是
{
string: "test " + foo + ""
}
有没有办法配置uglifyJS它不要忽略\"
目前我将我的javascript更新并用占位符替换所有\"
。在此之后,我使用所有占位符替换字符串以使其正常工作。
但后来我的测试不起作用。
编辑:我的Javascript
的uglify版本必须有效JSON
且有效Javascript
。
编辑:根据要求,是实例的一部分。此代码必须被uglified,然后放入JSON。
var privacylink = '#privacyButtonURL#';
link = '<a href=\"' + privacylink + '\" target=\"_blank\" style=\"color:#4398b5; text-decoration:underline;\">hear</a>';
uglify版本将是
var a="#privacyButtonURL#", b='<a href="'+a+'" target="_blank" style="color:#4398b5; text-decoration:underline;">hear</a>'
这不起作用。
JSON.stringify('var a="#privacyButtonURL#", b='<a href="'+a+'" target="_blank" style="color:#4398b5; text-decoration:underline;">hear</a>'')
答案 0 :(得分:1)
答案 1 :(得分:0)
报价格式为github issue。
上面链接中给出的解决方案是告诉uglify保留原始报价格式:
$ echo "console.log(\"foo\",'bar');" | uglifyjs --quotes=1
console.log('foo','bar');
$ echo "console.log(\"foo\",'bar');" | uglifyjs --quotes=2
console.log("foo","bar");
$ echo "console.log(\"foo\",'bar');" | uglifyjs --quotes=3
console.log("foo",'bar');
或者使用gulp,将以下参数作为参数提供给uglify.minify()
函数:
{ output: { quote_style: 3 } }
对于您的具体问题,因为我不确定它是否会保留不必要的转义字符(在javascript中),解决方案是:
{string: JSON.stringify(code)}
如果您的javascript代码由于某种原因必须包含单引号,则可以在"
或"
的javascript代码中替换生成的html中的双引号。
请注意,我觉得var a = 'abc \" def';
之类的内容首先是有效的javascript。
另一件需要考虑的事情是你如何包含文件(它没有提到),也许还有一种更好的方法可以直接将文件加载到一个字符串中,然后你可以在其中调用{{1 }}
修改强>
如果你使用最新的javascript引擎,你也可以在代码中使用backquotes(`)并用它们替换双引号或单引号。
或,如果您的javascript代码中没有JSON.stringify()
或反引号,您只需执行以下操作:
$