yui compressor php,通过yuicompressor-2.4.7压缩css或js的php应用文件

yui compressor php,通过yuicompressor-2.4.7压缩css或js的php应用文件yuicompressor这是个很好的工具,通过java库编译css或js文件进行压缩。压缩css或者js文件的好处是很多的,减少数据请求量,可以更快的进行数据传输,防止其他人进行窥探或整体直接挪用等等。。。首先你要去下载一个yuicompressor现在最新版本是2.4.7下载地址:yuicompressor使用方法怎么工作在这里都有详细的说明,就不一一介绍了。最常用的yuicompre…

大家好,又见面了,我是你们的朋友全栈君。

yuicompressor这是个很好的工具,通过java库编译css或js文件进行压缩。压缩css或者js文件的好处是很多的,减少数据请求量,可以更快的进行数据传输,防止其他人进行窥探或整体直接挪用等等。。。

首先你要去下载一个yuicompressor现在最新版本是2.4.7 下载地址: yuicompressor  使用方法怎么工作在这里都有详细的说明,就不一一介绍了。

最常用的yuicompressor语法就是

[code]

java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.js –charset utf-8

[/code]

其中需要注意的地方就是 如果不在yuicompressor-x.y.z.jar这个文件目录下,需要采用绝对的路径比如 E:/compressor/yuicompressor/build/yuicompressor-x.y.z.jar 这样的。同样需压缩文件myfile.js和压缩后输出的文件myfile-min.js 也是一样的采用绝对的路径。

好了,有了yuicompressor后;就要首先有一个java环境,不知道是否已安装java环境的可以通过 运行 ->cmd 输入

java -version

如果看到

tgAAIA74dgAAIACHBsAAFCAYwMAAApwbAAAQAGODQAAKMCxAQAABTg2AACgAMcGAAAU4NgAAIACHBsAAFCAYwMAAHz+Dw5lZTzFaZyUAAAAAElFTkSuQmCC

java的版本结果就说明java的运行环境是ok的了。如果没有这个结果,不用担心可以去oracle官网去下载。如果觉得下载比较慢可以直接百度搜索java jdk下载,下载完成后下一步,下一步安装完成即可。

不出问题,你现在就可以正常的运行yuicompressor了,能够进行完成压缩文件了。

但是这样就出现了一个问题每次通过这样来执行,只能执行一个文件。我们的css和js文件通常有很多,不能一下完全执行,所以就写了一个小应用,直接输入本地的css和js目录就可以直接遍历压缩完成,这样就很省事了。

三个文件index.php ,index.tpl.html , do.php 很小

好吧,直接上码。

index.php

/**

* @author alex

* @time 2011年12月1日

* @todo php通过yuicompressor批量压缩css和js文件

* @email leiyu_ai@qq.com

*/

session_start();

require_once ‘index.tpl.html’;

?>

index.tpl.html

compressor js/css

body { font: 12px Microsoft Yahei, Verdana, Geneva, sans-serif, “宋体”; }

h1,h2,h4 { margin: 0; padding: 0; font-weight: normal;  }

input { border: 1px solid #eee; }

form span { display: inline-block; width: 80px; }

form h4 { margin-bottom: 10px; }

.go { border-color: #000; }

$_SESSION[‘rand’] = mt_rand(100,999);

?>

css文件目录

js文件目录

do.php

/*

* 示例:我的yuicompressor-2.4.7.jar是放在这个地址下的,所以在运行前请更改为你的存放地址

* $cmd = “java -jar E:/compressor/yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar –type js –charset utf-8 -o E:/tmp/js/home.min.js”.

* ” E:/tmp/js/home.js”;

*/

session_start();

header(‘Content-type:text/html; charset=utf-8’);

$rand = $_POST[‘rand’];

$srand = isset($_SESSION[‘rand’])? $_SESSION[‘rand’]: ”;

$submit = $_POST[‘go’];

if ($rand == $srand ){

if ($submit){

$jsdir = $_POST[‘jsdir’];

$cssdir = $_POST[‘cssdir’];

if ( !empty($jsdir) || !empty($cssdir)){

// 获取所有的文件集合

$jslist = getFileList($jsdir);

$csslist = getFileList($cssdir);

// 压缩js、css文件内容

$bool = doIt($jslist);

$boolc = doIt($csslist);

if ( $bool || $boolc){

echo $jsdir.’|’.$cssdir.’ 目录执行成功’;

}else{

echo $jsdir.’|’.$cssdir.’ 目录执行失败’;

}

}else {

echo ‘请输入css或js的文件目录’;

}

echo ‘  返回首页‘;

}

unset($_SESSION[‘rand’]);

}

function getExt($file){

return strrev(substr(strrev($file), 0, strpos(strrev($file),’.’)));

}

function getName ($file){

return strrev(substr(strrev($file), strpos(strrev($file),’.’)+1 ));

}

function getPathFile($dir, $file){

return $dir.DIRECTORY_SEPARATOR.$file;

}

function doIt($list){

$tfile = $list[0][0];

$ext = getExt($tfile);

foreach($list as $key=>$val){

$cmd = “java -jar E:/compressor/yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar –type {$ext} –charset utf-8 -o {$val[1]}”.

” {$val[0]}”;

exec($cmd, $output, $rv);

// 执行成功

if ( $rv == 0){

// 删除源文件

unlink($val[0]);

// 重命名新的压缩文件

rename($val[1], $val[0]);

}else {

$str .= $val[0].’,’;

}

}

if (!empty( $str)){

echo $str.’ 执行失败’;

return false;

}else {

return true;

}

}

function getFileList($dir){

$filelist = array();

if (is_dir($dir)){

$handle = opendir($dir);

while(($file = readdir($handle)) !== false){

if ( $file == ‘.’ || $file == ‘..’) continue;

$tmpdir = getPathFile($dir, $file);

if ( is_dir( $tmpdir)){

$rs = getFileList( $tmpdir);

if ( !empty($rs)){

$filelist = array_merge($filelist, $rs);

}

}else {

$filename = getName($file);

$ext = getExt($file);

$file = getPathFile($dir, $file); // 源文件完整路径

$minname = getPathFile($dir, $filename.’.min.’.$ext); // 压缩目标文件名称完整路径

$filelist[] = array($file, $minname);

}

}

closedir($handle);

return $filelist;

}else{

return false;

}

}

?>

ok完成。现在展示下我的测试结果

css文件

压缩前:                                                                            压缩后:

SeUOFgnIHeKQjqh0qFJQ7wCMdUe1QoaDcAR7piGqHCoUWAjzSEdUOFQotBHikI6odKhRaCPBIR1Q7VCi0EOCRjqh2qFBoIcAjHVHtUKH+D2SppzdROzoiAAAAAElFTkSuQmCC

GfnMDlL7whI50fOh7n2aWgdgHghI+2GlDawWxD7BIB1U7tFYQ+wCLdFC1Q2sFsQ+wSAdVO7RWaCTAIh1U7dBaoZEAi3RQtUNrhUYCLNJB1Q6tFRoJsEgHVTu0Vv8DucSi+cyDu2EAAAAASUVORK5CYII=

js 文件

压缩前:                                                                                    压缩后:

AAAAAElFTkSuQmCC

wEXv4v55oklIAAAAABJRU5ErkJggg==

效果还是很明显的~~ ^_^

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161198.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 三星刷机工具Odin图文刷机教程

    三星刷机工具Odin图文刷机教程解压完,双击安装包选择语言,语言栏选择simplifiedCinnese国家选择c朱雀网络www.zhuquewl.comROM包下载hina安装路径可选择其他驱动盘,或者直接安装亦可注意事项: 1)手机电池有个一半的电量或是更少点都没问题,反正不要刷机过程中没电就行。真是没电了,也没事,充电,重刷就行了。2)给手机做好备份。3)下载刷机包,就自己准备着下载。4)下载刷机工具,

    2022年7月21日
  • A4988步进驱动

    A4988步进驱动基本知识绕组  常用的步进电机有四根线,1A1B2A2B,1A和1B是一个绕组,2A和2B是一个绕组,用万用表测试1A和1B之间是短路的,2A和2B之间是短路的,1A和1B,2A和2B是等效的。  通常状况下,步进电机可以自由转动(用手可以拧动),1A和1B接在一起的时候,用手拧会感到明显阻力,1A和1B,2A和2B分别接在一起,则阻力更大。步距角  所谓步进电机,就是可以…

    2022年6月29日
  • matlab物理碰撞建模_opencascade 碰撞检测

    matlab物理碰撞建模_opencascade 碰撞检测碰撞检测Note本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。当试图判断两个物体之间是否有碰撞发生时,我们通常不使用物体本身的数据,因为这些物体常常会很复杂,这将导致碰撞检测变得很复杂。正因这一点,使用重叠在物体上的更简单的外形(通常有较简单明确的数学定义)来进行碰撞检测成为常用的方法。我们基于这些简单的外形来检测碰撞,…

    2022年10月27日
  • PriorityQueue(优先级队列总结)

    PriorityQueue(优先级队列总结)一,概念队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列 数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(PriorityQueue)二,PriorityQueue的特性Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlo.

    2022年5月1日
  • Ubuntu中搭建ICE服务器(Coturn)

    Ubuntu中搭建ICE服务器(Coturn)1.WebRTC的P2P穿透WebRTC的P2P穿透部分是由libjingle实现的.步骤顺序大概是这样的:尝试直连.通过STUN服务器进行穿透无法穿透则通过TURN服务器中转STUN服务器比较简单.网上也有很多公开的STUN服务器可以用于测试,例如:stun.ideasip.com在WebRTC的P2P应用中,使用公开的STUN服务器时,有时响应比较慢,这就需要自己搭一个…

    2022年6月14日
  • mysql数据库命令大全菜鸟_mysql常用命令[通俗易懂]

    mysql数据库命令大全菜鸟_mysql常用命令[通俗易懂]连接:mysql-h主机地址-u用户名-p用户密码(注:u与root可以不用加空格,其它也一样)创建授权:grantselecton数据库.*to用户名@登录主机identifiedby\”密码\”修改密码:mysqladmin-u用户名-p旧密码password新密码删除授权:revokeselect,insert,update,deleteom*.*f…

    2022年6月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号