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下有关dom以及xml节点访问兼容问题
Nov 26 Javascript
js 操作select与option(示例讲解)
Dec 20 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
基于javascript的Form表单验证
Dec 29 Javascript
javascript滚轮事件基础实例讲解(37)
Feb 14 Javascript
BootstrapTable refresh 方法使用实例简单介绍
Feb 20 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
node vue项目开发之前后端分离实战记录
Dec 13 Javascript
Angularjs实现页面模板清除的方法
Jul 20 Javascript
jQuery UI实现动画效果代码分享
Aug 19 jQuery
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
Jul 10 Javascript
详解如何解决使用JSON.stringify时遇到的循环引用问题
Mar 23 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
Smarty变量调节器失效的解决办法
2014/08/20 PHP
smarty简单分页的实现方法
2014/10/27 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
Python numpy数组转置与轴变换
2019/11/15 Python
Python笔记之工厂模式
2019/11/20 Python
django框架cookie和session用法实例详解
2019/12/10 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
网上书店创业计划书
2014/01/12 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书