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 相关文章推荐
Jvascript学习实践案例(开发常用)
Jun 25 Javascript
jQuery简单tab切换效果实现方法
Apr 08 Javascript
js图片跟随鼠标移动代码
Nov 26 Javascript
jquery zTree异步加载简单实例讲解
Feb 25 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
Jul 07 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
python爬取安居客二手房网站数据(实例讲解)
Oct 19 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
Promise.all中对于reject的处理方法
Aug 01 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
Jan 31 Javascript
vue.js多页面开发环境搭建过程
Apr 24 Javascript
关于vue的列表图片选中打钩操作
Sep 09 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 信息采集程序代码
2009/03/17 PHP
PHP memcache扩展的三种安装方法
2009/04/26 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
angular之ng-template模板加载
2017/11/09 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
通过python顺序修改文件名字的方法
2018/07/11 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python列表推导式操作解析
2019/11/26 Python
python getopt模块使用实例解析
2019/12/18 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
平面设计岗位职责
2013/12/14 职场文书
历史系自荐信范文
2013/12/24 职场文书
监察建议书范文
2014/03/12 职场文书
公司授权委托书
2014/04/04 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
师德师风学习材料
2014/12/19 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
建议书范文
2015/02/05 职场文书
婚宴父母致辞
2015/07/27 职场文书
开学典礼致辞
2015/07/29 职场文书
旷工检讨书大全
2015/08/15 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
python编程实现清理微信重复缓存文件
2021/11/01 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis