发布一个高效的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 相关文章推荐
在chrome中window.onload事件的一些问题
Mar 01 Javascript
在JS中最常看到切最容易迷惑的语法(转)
Oct 29 Javascript
js格式化时间的方法
Dec 18 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
Jan 08 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
Aug 01 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
详解使用VueJS开发项目中的兼容问题
Aug 02 Javascript
详解vue中的computed的this指向问题
Dec 05 Javascript
js设置鼠标悬停改变背景色实现详解
Jun 26 Javascript
Jquery实现获取子元素的方法分析
Aug 24 jQuery
vant 自定义 van-dropdown-item的用法
Aug 05 Javascript
四十九个javascript小知识实用技巧
Nov 20 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数组中的重复值的实现代码
2011/07/17 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
python中set常用操作汇总
2016/06/30 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
基于Python的OCR实现示例
2020/04/03 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
银行自荐信范文
2013/10/07 职场文书
公司门卫岗位职责
2014/03/15 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
培训后的感想
2015/08/07 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android