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 圆角div的实现代码
Oct 15 Javascript
JQuery datepicker 使用方法
May 20 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
May 15 Javascript
解析JavaScript中的标签语句
Jun 19 Javascript
简单的Jquery全选功能
Nov 07 Javascript
js打开新窗口方法整理
Feb 17 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
Sep 23 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
js和jquery判断数据类型的4种方法总结
Aug 28 jQuery
vant 中van-list的用法说明
Nov 11 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图片验证码代码
2008/03/27 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Django实现学员管理系统
2019/02/26 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
如何基于Python实现自动扫雷
2020/01/06 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
员工自我鉴定范文
2013/10/06 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
给校长的建议书300字
2014/05/16 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
经费申请报告范文
2015/05/18 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
Pygame Rect区域位置的使用(图文)
2021/11/17 Python