发布一个高效的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 tools 系列 scrollable学习
Sep 06 Javascript
jquery 简单导航实现代码
Sep 11 Javascript
jQuery的三种$()
Dec 30 Javascript
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
Javascript数组Array方法解读
Mar 13 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
Oct 28 Javascript
原生js实现无缝轮播图效果
Jan 11 Javascript
深入理解JavaScript中的尾调用(Tail Call)
Feb 07 Javascript
Angularjs实现控制器之间通信方式实例总结
Mar 27 Javascript
Vue 技巧之控制父类的 slot
Feb 24 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 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调用三种数据库的方法(2)
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
将python图片转为二进制文本的实例
2019/01/24 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
预备党员入党思想汇报
2014/01/04 职场文书
质量整改报告范文
2014/11/08 职场文书
同意落户证明
2015/06/19 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
MySQL里面的子查询的基本使用
2021/08/02 MySQL