发布一个高效的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 相关文章推荐
基于jquery实现的省市区级联无ajax
Sep 24 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
toggle()隐藏问题的解决方法
Feb 17 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Jun 05 Javascript
js处理php输出时间戳对不上号的解决方法
Jun 20 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
Jan 09 Javascript
vue-cli入门之项目结构分析
Apr 20 Javascript
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
JQuery常见节点操作实例分析
May 15 jQuery
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 Javascript
vue之封装多个组件调用同一接口的案例
Aug 11 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 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
极典R601SW收音机
2021/03/02 无线电
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
PHP编码转换
2012/11/05 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP异常处理浅析
2015/05/12 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
Python中的生成器和yield详细介绍
2015/01/09 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python实现的字典值比较功能示例
2018/01/08 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
如何在django中实现分页功能
2020/04/22 Python
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
应届大学生自荐信格式
2013/09/21 职场文书
社团文化节邀请函
2014/01/10 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
网站推广策划方案
2014/06/04 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
党支部四风整改方案
2014/10/25 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
办公室文员岗位职责
2015/02/04 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS