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 相关文章推荐
监控 url fragment变化的js代码
Apr 19 Javascript
获取内联和链接中的样式(js代码)
Apr 11 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
table行随鼠标移动变色示例
May 07 Javascript
JavaScript中继承用法实例分析
May 16 Javascript
BootStrap select2 动态改变值的方法
Feb 10 Javascript
layui实现动态和静态分页
Apr 28 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
你可能不知道的CORS跨域资源共享
Mar 13 Javascript
js实现点击选项置顶动画效果
Aug 25 Javascript
使用js和canvas实现时钟效果
Sep 08 Javascript
JS + HTML 罗盘式时钟的实现
May 21 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的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
JavaScript的Function详细
2006/11/14 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
Python基于PycURL实现POST的方法
2015/07/25 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
Django-migrate报错问题解决方案
2020/04/21 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
经典的班主任推荐信
2013/10/28 职场文书
自荐信要包含哪些内容
2013/11/06 职场文书
实习生自荐信范文
2013/11/13 职场文书
平面设计专业求职信
2014/08/09 职场文书
基层党支部整改方案
2014/10/25 职场文书
企业战略合作意向书
2015/05/08 职场文书
开学第一天的感想
2015/08/10 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
python基础之错误和异常处理
2021/10/24 Python