JavaScript分析、压缩工具JavaScript Analyser


Posted in Javascript onDecember 31, 2014

JSA的压缩过程分两步

第一步是语法压缩,类似于Dojo ShrinkSafe,但比他安全,且更加有效。

第二步是文本压缩,目前采用的是
JavaScript Compressor的压缩算法。
(http://dean.edwards.name/packer/ )

这些都可以在设置窗口设置。
默认情况先用语法压缩,当文件大于1000byte且采用文本压缩仍然可以压缩到原来大小90%时才在原来基础上采用文本压缩。

下面来一段脚本压缩示例,展示一下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); 

} 

}

与其他压缩工具压缩率比较:

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 危险!!!!!

使用较短的名字替换掉长的局部变量名,这是一个极其不安全的压缩工具,举例说明:

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 不仅提供代码压缩功能,还可以做格式化,脚本分析。

脚本分析功能可以用于查看脚本信息,以及查找脚本中的潜在问题。
比如查看脚本中申明了那些函数,变量。
使用了那些外部变量。等等。。。

Javascript 相关文章推荐
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
javascript parseInt与Number函数的区别
Jan 21 Javascript
jquery 常用操作方法
Jan 28 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
jquery实现多级下拉菜单的实例代码
Oct 02 Javascript
调用innerHTML之后onclick失效问题的解决方法
Jan 28 Javascript
再探JavaScript作用域
Sep 24 Javascript
node.js require() 源码解读
Dec 13 Javascript
javascript事件的传播基础实例讲解(35)
Feb 14 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
May 09 Javascript
MvcPager分页控件 适用于Bootstrap
Jun 03 Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 Javascript
jQuery中:last-child选择器用法实例
Dec 31 #Javascript
jQuery中:nth-child选择器用法实例
Dec 31 #Javascript
jQuery中:first-child选择器用法实例
Dec 31 #Javascript
jQuery中复合属性选择器用法实例
Dec 31 #Javascript
javascript实现左右控制无缝滚动
Dec 31 #Javascript
javascript比较两个日期的先后示例代码
Dec 31 #Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 #Javascript
You might like
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
PHP如何将XML转成数组
2016/04/04 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
浅谈JavaScript之事件绑定
2013/07/08 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
理解 JavaScript Scoping & Hoisting(二)
2015/11/18 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
python回调函数的使用方法
2014/01/23 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
python常见排序算法基础教程
2017/04/13 Python
Python函数和模块的使用总结
2019/05/20 Python
python django中8000端口被占用的解决
2019/12/17 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
社区安全检查制度
2014/02/03 职场文书
业务员的岗位职责
2014/03/15 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书