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 相关文章推荐
用JS写的一个TableView控件代码
Jan 23 Javascript
jQuery实现动画效果的简单实例
Jan 27 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
Aug 07 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
Sep 27 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 Javascript
layui表格分页 记录勾选的实例
Sep 02 Javascript
在vue中使用vant TreeSelect分类选择组件操作
Nov 02 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
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
Javascript常考语句107条收集
2010/03/09 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
python中的sort方法使用详解
2014/07/25 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
python 公共方法汇总解析
2019/09/16 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
如何用SQL语句进行模糊查找
2015/09/25 面试题
农民入党思想汇报
2014/01/03 职场文书
趣味活动策划方案
2014/02/08 职场文书
总账会计岗位职责
2014/03/13 职场文书
一体化教学实施方案
2014/05/10 职场文书
出差报告怎么写
2014/11/06 职场文书
2014年安全员工作总结
2014/11/13 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js