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 相关文章推荐
使用正则替换变量
May 05 Javascript
菜鸟学习JavaScript小实验之函数引用
Nov 17 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
Feb 27 Javascript
使用js实现一个可编辑的select下拉列表
Feb 20 Javascript
jQuery 判断是否包含在数组中Array[]的方法
Aug 03 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
CodeMirror js代码加亮使用总结
Mar 25 Javascript
vue项目中使用axios上传图片等文件操作
Nov 02 Javascript
详解Webpack loader 之 file-loader
Nov 07 Javascript
刷新页面后让控制台的js代码继续执行
Sep 20 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
vue3.0 加载json的方法(非ajax)
Oct 26 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
操作Oracle的php类
2006/10/09 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
python中函数总结之装饰器闭包详解
2016/06/12 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
pytorch 模型可视化的例子
2019/08/17 Python
详解Python流程控制语句
2020/10/28 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
金融管理应届生求职信
2014/02/20 职场文书
机械专业技术员求职信
2014/06/14 职场文书
法定代表人授权委托书
2014/09/19 职场文书
欢迎词怎么写
2015/01/23 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
幸福来敲门观后感
2015/06/04 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技