JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具_javascript技巧

昨天分享了 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();
?>

时间: 2024-09-19 09:00:03

JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具_javascript技巧的相关文章

js时间日期格式化封装函数_javascript技巧

js虽然提供了各种获取时间Date对象的不同属性方法,如:getDate 方法 | getDay 方法 | getFullYear 方法 | getHours 方法 ... ... 等等,但是却没有像java那样提供一个方法来供用户来根据自身提供的模板(pattern),来格式化指定时间对象,所以自己就封装了一个小方法,只供大家闲来调侃-.-,有好的建议还望慷慨指荐哦. 用到知识点: arguments:该对象代表正在执行的函数和调用它的函数的参数.不可显式创建,虽然有length属性,且能像数

javascript 数组去重复(在线去重工具)_javascript技巧

在线文本去重复工具 第一种方法: <textarea id="list" class="toolarea"> www.jb51.net www.baidu.com www.jb51.net shouce.jb51.net www.jb51.net tools.jb51.net www.baidu.com shouce.jb51.net tools.jb51.net www.jb51.net</textarea> <input type=

javascript[js]获取url参数的代码_javascript技巧

最近做个页面,需要用javascript获取url参数,可发现网上的东西,实在是多了,错误也实在是多啊,真晕,浪费了我不少时间于是,我便总结一下,一个好用的就可以了,先声明下,用正则,是简单,但多浏览器的兼容性,和速度不敢保证了,所以我就用个多浏览器兼容的 复制代码 代码如下: <script language = javascript> function request(paras){ var url = location.href;  var paraString = url.substr

JavaScript(js)设置默认输入焦点(focus)_javascript技巧

常常会在回复和引用里使用此功能,即单击回复或引用,如让输入焦点出现在留言输入框中,如果使用锚来定位,输入焦点就不能激活了. 复制代码 代码如下: javascript:document.getElementById("id").focus(); 或javascript:document.all.id.focus(); 或javascript:document.all.name.focus(); 例子: 复制代码 代码如下: <input type="text"

一个JS的日期格式化算法示例_javascript技巧

复制代码 代码如下: function dateFormat(date, format) { var o = { "M+": date.getMonth() + 1, //month "d+": date.getDate(), //day "h+": date.getHours(), //hour "m+": date.getMinutes(), //minute "s+": date.getSeconds

几款极品的javascript压缩混淆工具_javascript技巧

个人首推MemTronic's FREEWARE HTML/JavaScript Cruncher-Compressor v1.0k压缩效果好得不一般,混淆出来的代码完全不可读,压缩率可达50%,IE 5+ / NS 7.0 / Mozilla / Opera 7.0 中均可使用 第二款,我推荐Rob Seiler的packer这款压缩混淆工具效果也不错,有三种版本,.Net,Perl,和WSH版本,Windows平台下WSH脚本比较适合,命令行操作,有详细的说明 第三款,Saltstorm出品

Package.js 现代化的JavaScript项目make工具_javascript技巧

Package.js项目地址:http://code.google.com/p/package-js/  Package.js是一个很方便的JavaScript包依赖管理及Make工具.它的设计目标是使浏览器端的JavaScript Component/App 开发更加模块化.如果您只是在开发一个小型的网站,只会混杂在HTML中写几行JS代码用于改善一下用户体验,那么Package.js也许并不适合您.如果您正在开发一个中到大型的WebApp,有几十甚至几百几千个JS文件和CSS文件.HTML模

javascript 支持页码格式的分页类_javascript技巧

Php 构造函数construct的前下划线是 PHP 读取文件内容代码(txt,js等) PHP 用数组降低程序的时间复杂度 PHP 柱状图实现代码 Ajax+PHP边学边练 之五 图片处理 PHPMyadmin 配置文件详解(配置) 又一个php 分页类实现代码 php 无限分类的树类代码 Asp.net 文本框全选的实现 php zip文件解压类代码 li>各种男女围巾围法图文 photoshop 鼠绘忧郁的少女头像 Photoshop 一只可爱的卡通小蜜蜂 Photoshop 调出美女质

JavaScript中连接操作Oracle数据库实例_javascript技巧

前言 无论是b/s还是c/s的开发中,基本上不使用javascript来对数据库进行操作.而我了印证我的一个想法,需要往数据库增加大量的新闻类信息,因此,我想从各个rss站点上获取信息并将信息导入到数据库里去.其实我也可以选择使用java,c++,或者是c#等编译语言,不过,使用javascript语言对这项工作来说是效率最高的.那我又何乐而不为呢? 环境 操作系统:winxp sp2 使用工具:cscript.exe,批处理文件 数据库:oracle 10g作为目标数据库(还可以使用其他的数据