龙空技术网

前端静态资源处理之js压缩

i云静 330

前言:

今天你们对“phpjs压缩”大致比较关注,我们都想要了解一些“phpjs压缩”的相关资讯。那么小编在网络上收集了一些关于“phpjs压缩””的相关文章,希望同学们能喜欢,同学们快快来了解一下吧!

由于前段时间发布的云静Admin-通用后台框架,涉及的功能模块大部分是由js实现的,所以小编想统一将这些文件进行压缩处理,以减少加载静态资源造成的网络延迟,提高页面打开的响应速度。

云静Admin-通用后台预览:

开发文档:

鉴于该框架构建于ThinkPHP上,所以决定使用php结合uglify来实现js文件的批量压缩。

实现前提:需安装php和nodejs运行环境,及uglify-es(因为js涉及es6语法,方法:npm i uglify-es -g

压缩效果及部分脚本源码截图如下:

创建脚本文件uglifyjs.php(源码放在文章末尾)

使用方法:可在控制台直接执行php uglifyjs.php来压缩所有指定的js文件,亦或指定压缩js文件数组中的某些文件,如压缩form.js使用:php uglifyjs.php form.js即可

脚本文件uglifyjs.php完整源码如下:

<?php// 文件处理function fileHandle($filename){    $newFilename=str_replace('.js','.min.js',$filename);    exec("uglifyjs {$filename} -m -o {$newFilename}");    echo $filename."\n";}// js文件数组$path='public/static/yunj/js/';$arr1=glob("{$path}*.js");$arr2=glob("{$path}/modules/*.js");$arr3=glob("{$path}/modules/cols/templet/*.js");$arr4=glob("{$path}/modules/field/*.js");$arr5=glob("{$path}/modules/templet/*.js");$filenameArr=array_merge($arr1,$arr2,$arr3,$arr4,$arr5);// 指定修改的文件名,如:php uglifyjs.php form.jsunset($argv[0]);$updateFilenameArr=$argv;foreach ($filenameArr as $filename) {    // 判断是否压缩文件    if(strstr($filename,'.min.js')) continue;    // 判断是否置顶修改文件名    if($updateFilenameArr){        $isUpdateFilename=false;        foreach ($updateFilenameArr as $updateFilename){            if(!strstr($filename,$updateFilename)) continue;            $isUpdateFilename=true;            break;        }        if(!$isUpdateFilename) continue;    }    fileHandle($filename);}

标签: #phpjs压缩