发布一个高效的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 相关文章推荐
深入理解Javascript作用域与变量提升
Dec 09 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
js中 javascript:void(0) 用法详解
Aug 11 Javascript
javascript实现uploadify上传格式以及个数限制
Nov 23 Javascript
原生javascript实现图片无缝滚动效果
Feb 12 Javascript
DeviceOne 让你一见钟情的App快速开发平台
Feb 17 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
bootstrap模态框垂直居中效果
Dec 03 Javascript
微信头像地址失效踩坑记附带解决方案
Sep 23 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
JavaScript 装逼指南(js另类写法)
May 10 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中simplexml_load_file函数用法实例
2014/11/12 PHP
PHP递归的三种常用方式
2019/02/28 PHP
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
使用Python对MySQL数据操作
2017/04/06 Python
python写一个md5解密器示例
2018/02/23 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
python和php哪个更适合写爬虫
2020/06/22 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
IBatis持久层技术
2016/07/18 面试题
校园学雷锋活动月总结
2014/03/09 职场文书
企业承诺书格式
2014/05/21 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
2015大学生实训报告
2014/11/05 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
A22国内电台短波广播频率表
2022/05/10 无线电