发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser


Posted in Javascript onNovember 30, 2007

发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
先发一段脚本压缩示例,展示一下JSA语法压缩和优化功能。

try {     
    //xxxx();     
}     catch (e) {     
    yyyy();     
    function f1() {     
    }     
}     
finally {     
    zzzz();     
}     
function f2(var1) {     
    var var2 = 2;     
    var var3 = 3;     
    var withObject = {var2:-2}     
    with(withObject){     
        alert(var2);     
    }     
}   

压缩结果(经过格式化,便于查阅):  

zzzz();     
function f2(A) {     
    var var2 = 2;     
    var B = 3;     
    var C = {var2:-2};     
    with (C) {     
        alert(var2);     
    }     
}    
  

JSA的压缩过程分两步 

第一步是语法压缩,类似于Dojo ShrinkSafe,但比他安全,且更加有效。

第二步是文本压缩,目前采用的是
JavaScript Compressor的压缩算法。
(http://dean.edwards.name/packer/ ) 

这些都可以在设置窗口设置。
默认情况先用语法压缩,当文件大于1000byte且采用文本压缩仍然可以压缩到原来大小90%时才在原来基础上采用文本压缩。

与其他压缩工具压缩率比较: 

1. JavaScript Compressor(http:// dean.edwards.name/packer/) 
    与他自己的压缩工具代码为例(v2.02) packer压缩后大小为 7,428 字节(去除注释)。 
    而我们的压缩工具可以压缩至7,256  字节 
    7256 / 7428 = 0.9768443726440496 
2.Dojo ShrinkSafe (粗糙的东西,既低效又危险,建议原有用户赶紧换掉) 
    与他自己的框架源代码为例(v0.4.1): 
    他自己压缩大小为149,518 字节,而我们压缩后可以缩小至81,261 字节 
    81261 / 149518 = 0.5434864029748927 

安全性说明:
1.JavaScript Compressor 
      基于文本的压缩,我没有细看其中逻辑,但是这种压缩出问题的可能性很低,我们的压缩工具也使用到他的压缩算法,在JSI 1.1 a8 及 
其集成的第三方类库的测试中,未见异常。而且还有知名框架JQuery使用,相信不会有问题。 

补充(2007-03-12):今天发现,这个东西在分析JavaScript多行字符串语法时,有bug。不过这个问题在经过JSA语法压缩之后,将不复存在。

2.Dojo ShrinkSafe 危险!!!!! 
   使用较短的名字替换掉长的局部变量名,这是一个极其不安全的压缩工具,举例说明: 

javascript 代码
function(){   
  var withObject = {variable1:1}   
  var variable1 = 2;   
  with(withObject){   
    alert(variable1);   
  }   
}  

将压缩成 :
function(){   
var _1={variable1:1};   
var _2=2;   
with(_1){   
alert(_2);   
}   
}  

这明显是错误的,这个垃圾没有注意javascript某些特殊语法,和动态性。 
对eval函数,catch操作,with语句,都未作任何处理。 

相比之下JSA的是当前我知道的最安全最有效的压缩工具。 
JSA 不仅提供代码压缩功能,还可以做格式化,脚本分析。 

脚本分析功能可以用于查看脚本信息,以及查找脚本中的潜在问题。 
比如查看脚本中申明了那些函数,变量。 
使用了那些外部变量。等等。。。 

 
下载地址:
http://sourceforge.net/project/showfiles.php?group_id=175776
或者
http://forum.xidea.org  文件列表

Javascript 相关文章推荐
javascript 面向对象编程基础:继承
Aug 21 Javascript
jQuery 行级解析读取XML文件(附源码)
Oct 12 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
js中typeof的用法汇总
Dec 12 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
javascript进行数组追加方法小结
Jun 16 Javascript
JavaScript中的分号插入机制详细介绍
Feb 11 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
JavaScript必看小技巧(必看)
Jun 07 Javascript
javascript简单实现等比例缩小图片的方法
Jul 27 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 Javascript
详解基于vue-cli3快速发布一个fullpage组件
Mar 08 Javascript
jquery 指南/入门基础
Nov 30 #Javascript
Prototype1.6 JS 官方下载地址
Nov 30 #Javascript
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
Nov 30 #Javascript
jQuery 研究心得 取得属性的值
Nov 30 #Javascript
XRegExp 0.2: Now With Named Capture
Nov 30 #Javascript
javascript数组组合成字符串的脚本
Jan 06 #Javascript
比较简单的一个符合web标准的JS调用flash方法
Nov 29 #Javascript
You might like
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
php画图实例
2014/11/05 PHP
隐性调用php程序的方法
2015/06/13 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
Python数据结构之单链表详解
2017/09/12 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
想学画画?python满足你!
2020/12/24 Python
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
医药大学生求职简历的自我评价
2013/10/17 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
化妆品活动策划方案
2014/05/23 职场文书
授权委托书怎么写
2014/09/25 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
贷款收入证明格式
2015/06/24 职场文书
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技