YUI Compressor压缩JavaScript的内容

2016-02-19 23:59 6 1 收藏

下面图老师小编要向大家介绍下YUI Compressor压缩JavaScript的内容,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

YUI Compressor 压缩 JavaScript 的内容包括:

移除注释 移除额外的空格 细微优化 标识符替换(Identifier Replacement)

YUI Compressor 包括哪些细微优化呢?

object["property"] ,如果属性名是合法的 JavaScript 标识符(注:合法的 JavaScript 标识符由一个字母开头,其后选择性地加上一个或者多个字母、数字或下划线)且不是保留字,将优化为: object.property {"property":123} ,如果属性名是合法的 JavaScript 标识符且不是保留字,将优化为 {property:123} (注:在对象字面量中,如果属性名是一个合法的 JavaScript 标识符且不是保留字,并不强制要求用引号引住属性名)。 'abcd'efgh',将优化为 "abcd'efgh"。 "abcd" + "efgh",如果是字符串相连接,将优化成 "abcdefgh"(注:所有在使用 YUI Compressor 的前提下,对于脚本中的字符串连接,使用连接符 + 的效率和可维护性最高)。

对于 JavaScript 最有效的压缩优化,当属标识符替换。

比如:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

(function(){
    function add(num1, num2) {
        return num1 + num2;
    }
})();

进行属标识符替换后:

(function(){
    function A(C, B) {
        return C+ B;   
}
})();

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

再移除额外的空格,最终成了:

(function(){function A(C,B){return C+B;}})();

YUI Compressor 标识符替换仅替换函数名和变量名,那哪些不能被替代呢?

原始值:字符串、布尔值、数字、null 和 undefined。一般来说字符串占的空间最多,而非数字字面量其次(true、false,null,underfinded)。 全局变量:window、document、XMLHttpRequest等等。使用最多的就是 document、window。 属性名,比如:foo.bar。占据的空间仅次于字符串,. 操作符无法被代替,且 a.b.c 更加费空间。 关键字。经常被过度使用的关键字有:var、return。最好的优化方法:一个函数仅出现一次 var 和 return 关键字。

对于原始值、全局变量、属性名的优化处理方式大致相同:任何字面量值、全局变量或者属性名被使用超过 2 次(包括2次),都应该用局部变量存储代替。

但有部分情况下是禁止使用标识符替换的:

使用 eval() 函数。解决方法:不使用或者创建一个全局函数封装 eval()。 使用 with 语句。解决方法:方法同上。 JScript 的条件注释。唯一解决的方法:不使用。

由于 YUI Compressor 是建立在 rhino interpreter 基础上的,所以上述所有的优化都是安全的。

扩展阅读:
《Extreme JavaScript Compression With YUI Compressor》

来源:http://www.tulaoshi.com/n/20160219/1631001.html

延伸阅读
标签: Web开发
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" content="text/html; charset=gb2312" / title文档/title sty...
标签: Web开发
去年写的一个JavaScript压缩工具,用于x2blog.cn的js压缩。不过一直没有对外发布,现在拿来充个文章数吧,老不更新Blog可不好,呵呵 概述: X2JavascriptCompactor可以将多个Javascript脚本文件打包成一个文件,并删除原始文件中的注释、无用空白以及换行。不仅可以有效减少网络传输量,同时使脚本文件难以被分析和破解。软件同时支持多个文...
标签: Web开发
DOM操作 在此之前,你已经看到 JavaScript框架 使用选择器和 DOM 遍历可以很容易的获得特定的元素。但是,为了改变网页上特定元素的内容和外观,你需要操作DOM并应用改变。使用纯粹的 JavaScript 将是一件繁重的工作,但幸运的是,大多数JavaScript框架提供有用的函数,可以很容易地做到这些。 假设你有一个ID为the-box的盒子。 div id...
标签: Web开发
原文地址 文章日期:2006/9/26 新版的GIRD可以支持远程数据了。分页和远程排序的设置是通俗易懂的,另外一些常用的自定义的参数我会在这篇贴子中说明一下。新论坛的界面(在建设中)就是一个分页和远程排序的好例子,而本文的代码均来自那个例子。 新方法和属性 利用LoadableDatatModel对象(XMLDataModel和JSONDataModel的父类)实现分...

经验教程

440

收藏

77
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部