最近写了一个jQuery插件,最后优化完发现压缩文件比较大,就想了想那些可以修改优化的,发现压缩原理还有很大的学习空间。
最近写了一个jQuery插件,最后优化完的时候发现压缩文件比较大,就想了想那些可以修改优化的,发现压缩原理还有很大的学习空间。通过这次经历,我对YUI压缩器对JavaScript的压缩有了深刻的理解,能压缩的,尤其是不能压缩的,需要明确,这样写出来的插件才能让文件更小,代码更精致,在优化的过程中会发现需要改进的代码。我刚刚在网上找到一篇文章作为我的记录。
YUI Compressor 压缩 JavaScript 的内容包括:删除注释,删除多余的空格,优化标识符替换
YUI Compressor包括哪些细微优化呢?对象['property'],如果属性名是合法的JavaScript标识符(注意:合法的JavaScript标识符3354以一个字母开头,后面跟着一个或多个字母、数字或下划线)并且不是保留字,则它将被优化为:object . property { ' property ':123 },如果属性名是合法的JavaScript标识符而不是保留字,则它将被优化为{property:123}(注意:在对象的文字量中,如果abcd'efgh ',将优化为' ABCD ' efgh '。Abcd''efgh ',如果是字符串连接,会优化为' abcdefgh '(注:在使用YUI压缩器的前提下,对于脚本中的字符串连接,使用连接器' '是最高效、最易维护的)。JavaScript最有效的压缩优化是标识符替换。比如复制代码如下:(function () {function add (num1,num 2){ return num 1 num 2;} })();替换类标识符后:复制代码如下:(function () {function a (c,b){ return c b;} })();去掉多余的空格,最后就变成了:复制代码如下:(function () {function a (c,b){ return c b;}})();YUI Compressor 标识符替换仅替换函数名和变量名,那哪些不能被替代呢?原始值:字符串、布尔值、数字、空值和未定义值。一般来说,字符串占用的空间最大,而不是文字数字(true、false、null、underfinded)。全局变量:窗口、文档、XMLHttpRequest等。最常用的是文档和窗口。属性名,比如:foo.bar占用的空间仅次于字符串,“”操作员无法替换,a.b.c占用空间更大。关键词。经常被滥用的关键词有:var,return。最好的优化方法是:var和return关键字在一个函数中只出现一次。原始值、全局变量和属性名的优化方式相同:任何使用两次以上(含两次)的文字值、全局变量或属性名都要用局部变量存储代替。然而,在某些情况下,标识符替换是被禁止的:使用eval()函数。解决方案:不要使用或创建全局函数来封装eval()。使用with语句。解决方法:方法同上。JScript的条件注释。唯一的解决办法:不要用。由于YUI压缩机是基于犀牛解释器,所有上述优化是安全的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。