缩小的 JavaScript 中的注释会发生什么
What happens to comments in minified JavaScript?
缩小的JavaScript文件中的注释会怎样?浏览器如何知道评论的结尾是所有内容都压缩到一行的时间?举个小例子,我有这样的谷歌跟踪代码:
//Google tracking
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '123456']);
缩小版将所有内容拉到一行中
// Google tracking var _gaq = _gaq || []; _gaq.push(['_setAccount', '123456']);
还有更多的语句,但是当我在编辑器中检查JavaScript代码时,它看起来像一个巨大的注释(或多或少(。是否有一个隐藏字符告诉浏览器何时结束注释,或者此代码只是没有执行?
缩小器去除注释或插入换行符。 例如,闭包编译器的常见问题解答说:
我可以将闭包编译器与其他 JavaScript 简化器一起使用吗?
是的。闭包编译器读取任何有效的 JavaScript 并生成有效的 JavaScript,因此您可以在通过不同的缩减器运行文件之前或之后将闭包编译器应用于 JavaScript 文件。
请记住,闭包编译器和其他简化器可能对传入的代码有期望。例如,去除注释的缩小器可能会删除其他工具所需的许可证或注释信息。
有时你真的需要一个注释,在这种情况下,他们会放一个换行符。
我的源代码中必须显示版权声明或开源许可证文本。如何防止闭包编译器剥离此文本?
闭包编译器支持 JSDoc
@license
标记。将@license
标记添加到任何 JSDoc 注释,以在编译器输出中保留该注释。有关更多信息,请参阅为闭包编译器注释 JavaScript。
缩小器也倾向于偶尔换行,因为一些解释器的源代码解析器崩溃或在很长的行上执行得非常慢。
https://bugzilla.mozilla.org/show_bug.cgi?id=634444
以前,由于我们处理的是块,因此错误消息可以包含的行数是有限制的。 但是现在错误消息包含整行。 如果你有很长的行和很多错误,这是高内存使用率的秘诀,特别是因为我们在错误消息字符串上调用
js_DeflateString()
,导致它的两个副本(一个由jschar
s组成,另一个由char
s 组成(。在有问题的站点上,包含 122,895 个字符的行上发生了大量错误,导致超过 1G 的
char
秒(每char
3 个字节!
JavaScript 单行注释在到达的第一个换行符处结束。缩小器将在删除换行符之前删除注释,这样它就不会破坏您的代码。
例如,如果您粘贴
//GOOGLE TRACKING
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '123456']);
进入闭包编译器,通过简单的优化获得
var _gaq=_gaq||[];_gaq.push(["_setAccount","123456"]);
通过高级优化,您可以获得:
var a=a||[];a.push(["_setAccount","123456"]);
两者中的注释都将被删除。
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在ember/handlers中使用value和valueBinding有什么区别
- 什么'在webpack外部设置中,reactDom和reactDom不同
- 在JavaScript中拆分日期字符串的更好方法是什么
- 为什么$.brower被弃用?还有什么更好的替代方案
- dojo 1.9:declare.safeMixin添加了什么注释
- 为静态类型检查注释javascript的好解决方案是什么
- @private注释在 Google Closure JavaScript 代码中实际上做了什么
- 在 Javascript 中注释全局变量的传统方法是什么?
- Facebook JavaScript SDK 中的函数注释方法的目的是什么?
- javascript注释中全局关键字的用途是什么
- 缩小的 JavaScript 中的注释会发生什么
- 在Javascript, CSS或HTML代码中隐藏或加密注释信息的最佳方法是什么?
- JavaScript代码注释的正确方式是什么?