发布一个高效的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 03 Javascript
JavaScript OOP类与继承
Nov 15 Javascript
JavaScript 小型打飞机游戏实现原理说明
Oct 28 Javascript
js 固定悬浮效果实现思路代码
Aug 02 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
May 30 Javascript
jQuery解决$符号命名冲突
Jun 18 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
Aug 29 Javascript
AngularJS指令中的绑定策略实例分析
Dec 14 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
Nov 12 Javascript
js 执行上下文和作用域的相关总结
Feb 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
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
python装饰器实例大详解
2017/10/25 Python
Python判断两个对象相等的原理
2017/12/12 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Python字符串及文本模式方法详解
2020/09/10 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
外语系毕业生自荐信范文
2013/12/16 职场文书
如何撰写岗位职责
2014/02/01 职场文书
简历的自我评价范文
2014/02/04 职场文书
生日主持词
2014/03/20 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
加班费申请报告
2015/05/15 职场文书
在校生证明
2015/06/17 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
初中班主任工作随笔
2015/08/15 职场文书