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 相关文章推荐
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
May 21 Javascript
基于JQuery的抓取博客园首页RSS的代码
Dec 01 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
Aug 01 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
浅谈JavaScript Math和Number对象
Jan 26 Javascript
js判断登陆用户名及密码是否为空的简单实例
May 16 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
javascript 中关于array的常用方法详解
May 05 Javascript
关于foreach循环中遇到的问题小结
May 08 Javascript
layui时间控件选择时间范围的实现方法
Sep 28 Javascript
vue实现简单加法计算器
Oct 22 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 手机归属地查询 api
2010/02/08 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python中暂存上传图片的方法
2015/02/18 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
浅析Python数据处理
2018/05/02 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python collections模块使用方法详解
2019/08/28 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Python中无限循环需要什么条件
2020/05/27 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
单位委托书
2014/10/15 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
小学语文复习计划
2015/01/19 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android