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使用prototype定义对象类型
Feb 07 Javascript
javascript编程起步(第五课)
Feb 27 Javascript
javascript jQuery插件练习
Dec 24 Javascript
JS打印gridview实现原理及代码
Feb 05 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
vue嵌套路由与404重定向实现方法分析
May 04 Javascript
使用vue-cli webpack 快速搭建项目的代码
Nov 21 Javascript
12个提高JavaScript技能的概念(小结)
May 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
德劲1103的维修打理经验
2021/03/02 无线电
谈谈新手如何学习PHP
2006/12/14 PHP
php 分页类 扩展代码
2009/06/11 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
彻底理解Python list切片原理
2017/10/27 Python
使用Python读取大文件的方法
2018/02/11 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
python如何输出反斜杠
2020/06/18 Python
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
人力资源管理求职信
2014/08/07 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
合作意向协议书
2015/01/29 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
高三生物教学反思
2016/02/22 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js