发布一个高效的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 相关文章推荐
js 全兼容可高亮二级缓冲折叠菜单
Jun 04 Javascript
页面调用单个swf文件,嵌套出多个方法。
Nov 21 Javascript
深入理解javascript的执行顺序
Apr 04 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
javascript实现base64 md5 sha1 密码加密
Sep 09 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
关于Vue.js一些问题和思考学习笔记(1)
Dec 02 Javascript
微信小程序中页面FOR循环和嵌套循环
Jun 21 Javascript
vue跨域解决方法
Oct 15 Javascript
Vue2.5通过json文件读取数据的方法
Feb 27 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
Aug 24 Javascript
vue实现数字动态翻牌的效果(开箱即用)
Dec 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教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
jQuery实现手势解锁密码特效
2017/08/14 jQuery
javascript防抖函数debounce详解
2019/06/11 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
python 常用的基础函数
2018/07/10 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
Python Web版语音合成实例详解
2019/07/16 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
python简单实现最大似然估计&scipy库的使用详解
2020/04/15 Python
Python wordcloud库安装方法总结
2020/12/31 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
物流仓储实习自我鉴定
2013/09/25 职场文书
员工入职担保书范文
2014/04/01 职场文书
车辆委托书范本
2014/10/05 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书