问题 缩小如何工作并影响角度嵌套对象?


缩小如何处理 $scope.obj.subObj = { key: val ...};

从我所理解的最后使用变量保持不变,

但如果我有html元素

<div>{{obj.subObj.key}}</div>

minify的结果会将代码缩短为a.b.c.key吗? 请原谅我以业余时尚的方式询问,但我正在努力了解javascript缩小的工作原理。


12136
2018-06-24 17:13


起源

一个体面的minifier不会缩短其他地方使用的公共财产。你在用哪一个? - Bergi
你用哪种工具进行缩小?有些工具会压缩接口,有些则不会。例如,YUI Compressor不会更改全局变量的名称及其内容 - 只会缩小函数参数和局部变量名称。你可以安全地使用它。 - Egor Nepomnyaschih


答案:


从: http://en.wikipedia.org/wiki/Minification_(programming)

计算机编程语言(尤其是JavaScript)中的缩小(也是最小化或最小化)是从源代码中移除所有不必要的字符而不改变其功能的过程。

因此,如果minifier能够检测到它可以安全地重写 $scope.obj.subObj 至 a.b.c 它会。

但是,作为一个经验法则,任何来自全局范围的变量,如 documentwindow 要么 jQuery 不会缩小,因为其他代码(在此文件范围之外)可能依赖于它。

缩小的下一步是使用a 压缩机 比如Google Closure Compiler或Yahoo的YUI Compressor。这些程序通常是更强大的缩放器。例如,它们可以通过内联函数替换函数调用,或者通过更短或更快的方法更改某个方法。这需要大量关于JavaScript和性能优化的知识。

您可以通过降低某些兼容性要求来提高压缩率,但我发现生成的代码非常不稳定,所以我认为我们还没有相应的:)


9
2018-06-24 17:19