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 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
js对数字的格式化使用说明
Jan 12 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
js数组转json并在后台对其解析具体实现
Nov 20 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
Aug 24 Javascript
分享一道关于闭包、bind和this的面试题
Feb 20 Javascript
Easyui在treegrid添加控件的实现方法
Jun 23 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
Angular实现表单验证功能
Nov 13 Javascript
解决低版本的浏览器不支持es6的import问题
Mar 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
ThinkPHP实现附件上传功能
2017/04/27 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
React中的render何时执行过程
2018/04/13 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
vuex的使用步骤
2021/01/06 Vue.js
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
python使用cookielib库示例分享
2014/03/03 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
如何用python免费看美剧
2020/08/11 Python
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
师德培训心得体会2016
2016/01/09 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers