前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yui compressor php,通过yuicompressor-2.4.7压缩css或js的php应用文件

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

作者头像
全栈程序员站长
发布2022-09-09 11:36:31
2.8K0
发布2022-09-09 11:36:31
举报
文章被收录于专栏:全栈程序员必看

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

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

如果看到

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’])?

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=>

cmd = “java -jar E:/compressor/yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar –type {ext} –charset utf-8 -o {

” {$val[0]}”;

exec(cmd, output,

// 执行成功

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,

if ( is_dir( $tmpdir)){

rs = getFileList( tmpdir);

if ( !empty($rs)){

filelist = array_merge(filelist,

}

}else {

filename = getName(file);

ext = getExt(file);

file = getPathFile(dir,

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

filelist[] = array(file,

}

}

closedir($handle);

return $filelist;

}else{

return false;

}

}

?>

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

css文件

压缩前: 压缩后:

js 文件

压缩前: 压缩后:

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • css文件目录
  • js文件目录
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档