JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具


Posted in Javascript onDecember 10, 2010

昨天分享了 http://jscompress.sinaapp.com/ 这个小工具后,发现大家还是很喜爱的。

因此今天我把它json化了.用json传输数据,也开放了api 

 

本工具所有的功能实现都是由 http://jscompress.sinaapp.com/api 处理.(包括现在可以使用的这个在线压缩) 
所有的数据交换均由 HTTP POST 输入处理后由 json 作为数据输出格式. 

API参数 : http://jscompress.sinaapp.com/api?get={type}&code=(code)&type={compress only}

get={type},{type} 为可选的 compress (压缩) format (格式化) shuffle(混淆) 
code=(code),(code) 为必要的源代码. JavaScript的源代码 
type={compress},{compress} 注意该参数只有压缩的时候生效,可选 1(默认压缩) 2(YUI压缩) 3(GC压缩)

例:使用 CURL... POST 

http://jscompress.sinaapp.com/api?get=compress&code=var a=1;var b=2;&type=2

如果执行成功则返回结果:

{"code":"var a=1,b=2;\n","original_size":"16 Byte","now_size":"13 Byte","status":"Closure Compiler \u538b\u7f29\u5b8c\u6210.","minify":"81.25%"} 

 

然后我写了一个php文件,可以调用这个网站的api,把整个目录所有的js文件压缩或者混淆,格式化后保存到一个新目录。

这样就对那些懒上传文件的同学们基于方便了~~ 

直接下载地址: jstools.rar
高亮显示

<?php 
/* 
/## js 合并和压缩PHP脚本...可用于本地或者服务器. 
/## 本工具只能处理utf-8编码的 *.js 文件.否则会接收不到结果 
@ 风吟 (fengyin.name) 
@ http://jscompress.sinaapp.com/ 
*/ 
set_time_limit(0); 
function JsTools($options = array( 
'basepath' =>'./', //需要处理的脚本路径... 
'compiled' =>'./compiled/', //处理后新文件的路径... 
'type' =>'compress', //可选 compress (压缩) format (格式化) shuffle (混淆) 
'is_merger' =>true, // 是否需要把全部文件合并再进行处理 (压缩,格式化,混淆) 
'engine' =>'1'//此项只对 type 为 compress 时有效,1(默认) 2 (yui) 3(Closure Compiler) 
/* 
yui 和 Google Closure Compiler 压缩是不可逆的,一般情况下使用默认即可 
不推荐使用混淆. 
*/ 
)){ 
if (is_dir($options['basepath'])) { 
if ($dh = opendir($options['basepath'])) { 
while (($file = readdir($dh)) !== false) { 
if (strpos($file, '.js') !== false && strpos($file, '.min.js') === false) { 
$js[] = $file; 
} 
} 
closedir($dh); 
} 
} 
if ($options['is_merger']) { 
foreach($js as $jsfile) { 
$jscode.= file_get_contents($jsfile).';'; 
} 
$jscode = json_decode(api($jscode, $options['type'], $options['engine']), true); 
file_put_contents($options['compiled'].'all.min.js', $jscode['code']); 
} else { 
foreach($js as $jsfile) { 
$jscode = json_decode(api(file_get_contents($jsfile), $options['type'], $options['engine']), true); 
file_put_contents($options['compiled'].str_replace('.js', '.min.js', $jsfile), $jscode['code']); 
} 
} 
} 
function api($code, $type, $engine) { 
$ch = curl_init('http://jscompress.sinaapp.com/api'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'get='.$type.'&code='.urlencode($code).'&type='.$engine); 
$output = curl_exec($ch); 
curl_close($ch); 
return $output; 
} 
JsTools(); 
?>
Javascript 相关文章推荐
JavaScript 常用函数
Dec 30 Javascript
JavaScript 更严格的相等 [译]
Sep 20 Javascript
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
js隐式全局变量造成的bug示例代码
Apr 22 Javascript
jquery实现的网页自动播放声音
Apr 30 Javascript
jQuery中has()方法用法实例
Jan 06 Javascript
动态JavaScript所造成一些你不知道的危害
Sep 25 Javascript
js实现倒计时及时间对象
Nov 15 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
seajs中模块依赖的加载处理实例分析
Oct 10 Javascript
AngularJS中下拉框的基本用法示例
Oct 11 Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
Dec 09 #Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 #Javascript
Javascript将string类型转换int类型
Dec 09 #Javascript
IE6下CSS图片缓存问题解决方法
Dec 09 #Javascript
web前端开发也需要日志
Dec 09 #Javascript
JS拖动技术 关于setCapture使用
Dec 09 #Javascript
一起来写段JS drag拖动代码
Dec 09 #Javascript
You might like
配置PHP使之能同时支持GIF和JPEG
2006/10/09 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python对象体系深入分析
2014/10/28 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
简单实现python聊天程序
2018/04/01 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
python简单贪吃蛇开发
2019/01/28 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
经理管理专业毕业自荐书范文
2014/02/12 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
学习经验演讲稿
2014/05/10 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
未婚证明书模板
2014/10/08 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书