【发布时间】:2012-11-09 17:13:27
【问题描述】:
我最近决定开始在一个项目中使用 Django Compressor 来自动连接和缩小 js 和 css,并在它们更改时刷新缓存。
我遇到的问题是,有些脚本在未压缩时可以工作,但在通过压缩器运行后它们会中断。我已经能够将可能性缩小到字符串连接。特别是 HTML 字符串连接。
例如:
boldTerm = '<b>' + terms[i] + '</b>';
term = new RegExp(term, 'g');
data = data.replace(term, boldTerm);
压缩时中断。我收到语法错误:
语法错误:缺失;声明之前
但这有效:
boldTerm = 'TEST';
term = new RegExp(term, 'g');
data = data.replace(term, boldTerm);
谁能解释一下:
- 为什么会坏?
- 我应该如何编写它以便在压缩时工作?
谢谢
编辑: 以下是引发错误的压缩代码部分:
(jQuery);';term=new RegExp(term,'g');data=data.replace(term,boldTerm);}}
它被扔在 RegExp(term, g) 中的“g”上
我发现这是可行的:
boldTerm = '<' + 'b' + '>' + terms[i] + '<' + '/b' + '>';
term = new RegExp(term, 'g');
data = data.replace(term, boldTerm);
这样就解决了我让它工作的部分问题。但“为什么”的问题仍然存在。
正在发生的事情:
- jQuery
- 小胡子
- Django 压缩器 (JSmin)
【问题讨论】:
-
1.为什么要覆盖“术语”变量? 2.这部分代码压缩后是什么样子的?
-
在什么位置抛出错误?
-
1.我没有特别的理由这样做。既然你问了,我想我不应该那样做。 2. 压缩代码生成错误的sn-p见上面的编辑。
-
如果您不需要原始字符串类型的术语,您可以覆盖术语。为什么在(jQuery)之后有一个';?这可能是你的问题。 so 的语法高亮显示为红色,javaScript 真正看到的代码(字符串为红色)...
-
@NickHagianis 从上面最小化代码中突出显示的语法可以看出,
(jQuery);';部分导致了问题。另外,最小化代码中的第一条语句在哪里?
标签: javascript compression minify string-concatenation django-compressor