放弃繁琐的配置!直接使用UglifyJS批量压缩目录下所有JS文件
JS代码压缩是一种十分常见的前端优化的手段,对于大量使用JS的Web应用,代码压缩可以是极大的减少代码的大小,加快传输效率,提高浏览的体验。
而在所有的JS压缩工具中,UglifyJS在不改变JS语义前提下可以提供最好的压缩率,其优异的性能而广为称颂,而与它性能相对应的是复杂的运行环境,你需要安装nodejs、然后使用npm安装UglifyJS类库,最后还要编写js...My God,我只是想压缩一下代码而已。
如果你和我一样既希望享受UglifyJS高效率,又苦恼于复杂繁琐的配置,你可以尝试如下方法。在网上有很多在线压缩JS代码的站点,支持UglifyJS也不少,但是只能手动操作,无法批量处理,实用性实在不怎么高。但是如果有站点提供REST API给程序调用,那结果就不同了。
对于UglifyJS在http://marijnhaverbeke.nl/uglifyjs中就有一个可供程序调用的HTTP API:
<?phpset_time_limit(0);$fromdir="E:\\wamp\\www\\wopop20\\script";$todir="D:\\cscript";compressDir($fromdir,$todir);echo "success";function compressDir($fromdir,$todir){if ($handle = opendir($fromdir)) {if(!is_dir($todir)) mkdir($todir, 0777, true);while (false !== ($file = readdir($handle))) {if ($file != "." && $file != "..") {$absolutefilename=$fromdir."\\".$file;if(is_file($absolutefilename)&&preg_match('/\.js$/',$file)){//echo $absolutefilename,'<br>';$str=compressJS($absolutefilename);file_put_contents($todir."\\".$file, $str);}elseif(is_dir($absolutefilename)){compressDir($absolutefilename,$todir."\\".$file);}}}closedir($handle);}}function compressJS($filename){$url="http://marijnhaverbeke.nl/uglifyjs";$filecontent=file_get_contents($filename);static $ch;//echo $filecontent;if(empty($ch)){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTPGET, false);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);}$data=array('js_code'=>$filecontent,'utf8'=>'1');curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));$compresstext=curl_exec($ch);//curl_close($ch);if(!empty($compresstext)){return $compresstext;}echo "compress {$filename} failed";return false;}?>