JavaScript(JS) 壓縮 / 混淆 / 格式化 批處理工具
昨天分享了 http://jscompress.sinaapp.com/ 這個(gè)小工具后,發(fā)現(xiàn)大家還是很喜愛(ài)的。
因此今天我把它json化了.用json傳輸數(shù)據(jù),也開(kāi)放了api
本工具所有的功能實(shí)現(xiàn)都是由 http://jscompress.sinaapp.com/api 處理.(包括現(xiàn)在可以使用的這個(gè)在線壓縮)
所有的數(shù)據(jù)交換均由 HTTP POST 輸入處理后由 json 作為數(shù)據(jù)輸出格式.
get={type},{type} 為可選的 compress (壓縮) format (格式化) shuffle(混淆)
code=(code),(code) 為必要的源代碼. JavaScript的源代碼
type={compress},{compress} 注意該參數(shù)只有壓縮的時(shí)候生效,可選 1(默認(rèn)壓縮) 2(YUI壓縮) 3(GC壓縮)
例:使用 CURL... POST
如果執(zhí)行成功則返回結(jié)果:
{"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%"}
然后我寫(xiě)了一個(gè)php文件,可以調(diào)用這個(gè)網(wǎng)站的api,把整個(gè)目錄所有的js文件壓縮或者混淆,格式化后保存到一個(gè)新目錄。
這樣就對(duì)那些懶上傳文件的同學(xué)們基于方便了~~
直接下載地址: jstools.rar
高亮顯示
<?php
/*
/## js 合并和壓縮PHP腳本...可用于本地或者服務(wù)器.
/## 本工具只能處理utf-8編碼的 *.js 文件.否則會(huì)接收不到結(jié)果
@ 風(fēng)吟 (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, // 是否需要把全部文件合并再進(jìn)行處理 (壓縮,格式化,混淆)
'engine' =>'1'//此項(xiàng)只對(duì) type 為 compress 時(shí)有效,1(默認(rèn)) 2 (yui) 3(Closure Compiler)
/*
yui 和 Google Closure Compiler 壓縮是不可逆的,一般情況下使用默認(rèn)即可
不推薦使用混淆.
*/
)){
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();
?>
- 巧用批處理解決IE不支持JavaScript等問(wèn)題
- javascript 格式化時(shí)間日期函數(shù)代碼腳本之家修正版
- JavaScript性能優(yōu)化 創(chuàng)建文檔碎片(document.createDocumentFragment)
- 自己整理的一個(gè)javascript日期處理函數(shù)
- 高性能Javascript筆記 數(shù)據(jù)的存儲(chǔ)與訪問(wèn)性能優(yōu)化
- javascript強(qiáng)大的日期函數(shù)代碼分享
- JavaScript中的無(wú)阻塞加載性能優(yōu)化方案
- javascript中日期函數(shù)new Date()的瀏覽器兼容性問(wèn)題
- javascript日期處理函數(shù),性能優(yōu)化批處理
相關(guān)文章
JS簡(jiǎn)單實(shí)現(xiàn)浮動(dòng)窗口效果示例
這篇文章主要介紹了JS簡(jiǎn)單實(shí)現(xiàn)浮動(dòng)窗口效果,涉及javascript操作浮動(dòng)窗口的創(chuàng)建、打開(kāi)、關(guān)閉等相關(guān)操作技巧,需要的朋友可以參考下2016-09-09
javascritp添加url參數(shù)將參數(shù)加入到url中
javascritp添加url參數(shù)方法,將參數(shù)加入到url中,如果原來(lái)url中有則覆蓋,下面是示例代碼,感興趣的朋友可以參考下2014-09-09
javascript實(shí)現(xiàn)C語(yǔ)言經(jīng)典程序題
這篇文章主要介紹了javascript實(shí)現(xiàn)C語(yǔ)言經(jīng)典程序題的解題思路,感興趣的小伙伴們可以參考一下2015-11-11
uniApp實(shí)現(xiàn)熱更新的思路與詳細(xì)過(guò)程
經(jīng)常在做app的時(shí)候,會(huì)有做熱更新的需求,這也是常用的更新app的一種手段,下面這篇文章主要給大家介紹了關(guān)于uniApp實(shí)現(xiàn)熱更新的思路與詳細(xì)過(guò)程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
ExtJs的Ext.Ajax.request實(shí)現(xiàn)waitMsg等待提示效果
這篇文章主要介紹了ExtJs的Ext.Ajax.request實(shí)現(xiàn)waitMsg等待提示效果,需要的朋友可以參考下2017-06-06
text-align:justify實(shí)現(xiàn)文本兩端對(duì)齊 兼容IE
對(duì)于text-align 我們?cè)偈煜げ贿^(guò)了,可是它有個(gè)justify屬性,平時(shí)很少用到,就鮮為人知了。justify是一種文本靠?jī)蛇叢季址绞?,一般?yīng)用于書(shū)刊雜志排版;合理運(yùn)用text-align:justify 有時(shí)會(huì)省去很多開(kāi)發(fā)的時(shí)間,通過(guò)本文介紹text-align:justify實(shí)現(xiàn)文本兩端對(duì)齊 兼容IE2015-08-08
JS控件ASP.NET的treeview控件全選或者取消(示例代碼)
本篇文章主要是對(duì)JS控件ASP.NET的treeview控件全選或者取消的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12

