我知道一个类似的问题 ,但它是从我问什么我在这里一点点了,所以请不要flag
为重复。
当你看到的jQuery的量产版 ,为什么会出现一段时间后换行? 我下载了一个副本,并删除所有的换行符(除了许可证),它仍然工作。 (我跑了整个单元测试套件对我的Mozilla Firefox浏览器,谷歌Chrome和Opera的变化。)
我知道3个换行符(不包括许可证)不会慢下来很多,不过,并没有每一个微小的一点帮助?
我已经指派我自己小的挑战,挤压性能一点一滴出我的JavaScript代码。
我知道一个类似的问题 ,但它是从我问什么我在这里一点点了,所以请不要flag
为重复。
当你看到的jQuery的量产版 ,为什么会出现一段时间后换行? 我下载了一个副本,并删除所有的换行符(除了许可证),它仍然工作。 (我跑了整个单元测试套件对我的Mozilla Firefox浏览器,谷歌Chrome和Opera的变化。)
我知道3个换行符(不包括许可证)不会慢下来很多,不过,并没有每一个微小的一点帮助?
我已经指派我自己小的挑战,挤压性能一点一滴出我的JavaScript代码。
jQuery的目前使用 UglifyJS来缩小他们的源代码。 在他们的构建脚本 ,他们专门设置了max_line_length
指令是32 * 1024
:
该用于UglifyJS文件中有这样一段对说, max-line-len
指令;
--max-line-len
(默认32K字符) -后围绕32K字符添加一个换行符。 我见过两个FF和Chrome发牢骚当所有的代码是在大约670K一行。 通过-max线-LEN 0则代表停用此安全功能。
再举关闭编译器常见问题 :
在关闭编译特意增加了线上的每500个字左右的休息。 防火墙和代理有时损坏或忽略与很长的行大JavaScript文件。 添加换行符每500个字符可以防止这个问题。 卸下换行对脚本的语义没有影响。 对代码量的影响较小,从而使代码大小刑罚是当文件被gzip压缩的更小的编译器优化换行符的位置。
这涉及到在一般任何微小的程序。
线(不包括许可)都在长度30K左右字符。 这可能是为了避免错误,其中一些JavaScript解析器死在非常长的线。 这可能不会发生在今天的浏览器,但也许一些老的或更模糊的人有这样的限制。
(老回答以下,这也可能是适用的,只是没有在这种情况下)
这可能是因为JSMin ,一个流行的JavaScript minifier将保留线在一定条件下的输出源。 这是因为,在Javascript中,如果你离开了分号,例如换行符显著。 该文件说:
它是在忽略换行较为保守,因为换行有时为分号处理。 如果它先于非ASCII字符或一个ASCII字母或数字,或这些字符中的一个不省略换行:
\ $ _ { [ ( + -
并且如果它遵循一个非ASCII字符或一个ASCII字母或数字,或这些字符中的一个:
\ $ _ } ] ) + - " '
其他minifiers可能有类似的规则。
因此,这主要是针对意外删除换行,可能是必要的,语法明智的预防措施。 你想的最后一件事是,由于minifier破坏其语义的缩小的JS将不再工作。
关于»我知道3个换行符(不包括许可证)不会慢下来很多,不过,并没有每一个微小的一点帮助«:当你的服务器使用gzip压缩的差异将很可能无论如何没有实际意义。