本文概述
- 1.使用Minify压缩Javascript和CSS
- 2.使用Squeeze压缩Javascript
- 3.使用JShrink压缩Javascript
与往常一样, 在服务器中实现minifier的意图是什么, 我们建议你不要重新发明轮子(不要使用PHP构建自己的minifier)并使用库。如果你想了解为什么要使用库的更多原因, 建议你阅读这篇精彩的文章。
在本文中, 你将学习如何使用3个不同的库来最小化CSS和JS代码。
1.使用Minify压缩Javascript和CSS如果你正在寻找一个同时压缩Javascript和CSS的类, 则可以使用MatthiasMullie编写的Minify包。 Minify包可与Composer和普通的PHP类一起使用。
用作曲家安装
使用以下命令将Minify包作为依赖项添加到你的项目中:
composer require matthiasmullie/minify
或编辑你的composer.json, 将以下行添加到你的需求中, 然后执行composer安装:
{"require": {"matthiasmullie/minify": "^1.3"}}
然后, 你将可以使用Minify。
没有作曲家的安装
如果你不使用作曲家, 那么安装过程可能会花费一些时间。首先, 从此处的存储库以.zip文件的形式下载存储库, 或仅使用Git克隆它:
git clone https://github.com/matthiasmullie/minify.git
该软件包依赖于Path Converter, 因此你也需要克隆此存储库(或下载存储库的.zip):
git clone https://github.com/matthiasmullie/path-converter.git
注意确保Minify和Path Converter的目录结构保持完整(data / js中的文件应相对于src / JS.php保留在同一位置)。
现在, 如果你不使用composer, 则可能有一个用于第三方库的文件夹, 你将在该文件夹内粘贴(分别:minify / src和path-converter / src)每个目录的/ src文件夹的内容。具有库名称的文件夹中的库。
最后, 使用require_once在要使用它的代码中包含库的必需文件:
<
?php// make sure to update the path to where you cloned the projects too$path = '/path/to/third-party-libraries';
require_once $path . '/minify/src/Minify.php';
require_once $path . '/minify/src/CSS.php';
require_once $path . '/minify/src/JS.php';
require_once $path . '/minify/src/Exception.php';
require_once $path . '/minify/src/Exceptions/BasicException.php';
require_once $path . '/minify/src/Exceptions/FileImportException.php';
require_once $path . '/minify/src/Exceptions/IOException.php';
require_once $path . '/path-converter/src/ConverterInterface.php';
require_once $path . '/path-converter/src/Converter.php';
【如何使用PHP最小化Javascript和CSS】你已经准备在代码中使用Minify。
用法
为了知道如何使用此库最小化Javascript, 可以签出以下示例:
use MatthiasMullie\Minify;
$sourcePath = '/path/to/source/css/file.js';
$minifier = new Minify\JS($sourcePath);
// we can even add another file, they'll then be// joined in 1 output file$sourcePath2 = '/path/to/second/source/css/file.js';
$minifier->
add($sourcePath2);
// or we can just add plain js$js = 'var test = 1';
$minifier->
add($js);
// save minified file to disk$minifiedPath = '/path/to/minified/js/file.js';
$minifier->
minify($minifiedPath);
// or just output the contentecho $minifier->
minify();
为了缩小CSS(使用CSS类, 压缩CSS的方式相同), 请使用以下代码:
use MatthiasMullie\Minify;
$sourcePath = '/path/to/source/css/file.css';
$minifier = new Minify\CSS($sourcePath);
// we can even add another file, they'll then be// joined in 1 output file$sourcePath2 = '/path/to/second/source/css/file.css';
$minifier->
add($sourcePath2);
// or we can just add plain CSS$css = 'body { color: #000000;
}';
$minifier->
add($css);
// save minified file to disk$minifiedPath = '/path/to/minified/css/file.css';
$minifier->
minify($minifiedPath);
// or just output the contentecho $minifier->
minify();
我们建议你访问存储库以获取有关此处方法的更多信息。
2.使用Squeeze压缩Javascript要压缩Javascript代码, 我们建议你使用Squeeze。压缩可收缩, 压缩, 最小化和处理Javascript代码。自2003年以来, 这是一个单一的PHP类, 已在主要的JavaScript框架(例如jQuery)上进行了开发, 维护和全面测试。即使缺少分号, JSqueeze仍可对任何解析无错误的JavaScript代码进行操作。在压缩率方面, 它与YUI Compressor和UglifyJS相比。
我们建议你挤压, 因为它:
- 删除注释和空格。
- 重命名每个本地变量, 通常重命名为单个字符。
- 保留Microsoft的条件注释。
- 为了最大化以后的HTTP压缩(deflate, gzip), 要考虑闭包, 变量的频率和字符的频率来选择新的变量名称。
- 可以重命名全局变量, 方法和属性, 但前提是它们被某些命名约定标记为特殊。使用JSqueeze :: SPECIAL_VAR_PACKER重命名名称以一个或多个$或单个_开头的var。
- 重命名字符串中的本地/全局变量, 但前提是它们被标记为特殊。
- 如果与/ eval一起使用, 请小心。
- 用!1 /!0代替false / true
- 用[] / {}#替换新的数组/对象
- 用逗号合并连续的var声明
- 合并连续的串联字符串
- 可以用换行符替换可选的分号, 从而简化输出调试。
- 保留标有/ *的重要评论!
- 对待三个分号; ; ; 如单行注释。
- 修复跨浏览器的特殊捕获范围
- 解决IE < = 8中命名函数表达式的错误处理
与作曲家
要在你的项目中安装Squeeze, 请执行以下命令:
composer require patchwork/jsqueeze
或修改composer.json文件, 在require中添加以下行, 然后执行composer install:
{"require": {"patchwork/jsqueeze": "~2.0"}}
安装后, 你将可以使用Squeeze缩小代码。
没有作曲家
如果你不使用作曲家, 则可以通过复制JSQueeze.php类并使用require_once将其包含在项目中来轻松使用Squeeze:
require_once 'JSqueeze.php';
用法
Squeeze的用法非常简单, 仅使用一种方法即可实现。这种方法被挤压:
<
?phpuse Patchwork\JSqueeze;
$jz = new JSqueeze();
// Retrieve the content of a JS file$fatJs = file_get_contents('myJavascript.js');
$minifiedJs = $jz->
squeeze($fatJs, true, // $singleLinetrue, // $keepImportantCommentsfalse// $specialVarRx);
作为函数的第一个参数, 提供需要缩小的Javascript代码。
第二个参数$ singleLine允许你确定是否在找到分号的情况下保留换行符。通常, 我们希望此值始终设置为true。
第三个参数$ keepImportantComments允许你决定是否要/ *!要删除的评论。
第四个参数$ specialVarRx为全局变量, 方法, 属性定义特殊变量名称的正则表达式, 并在字符串替换中将其设置为false(如果不需要)。
3.使用JShrink压缩JavascriptJShrink是用PHP编写的JavaScript压缩程序。它可以处理大型javascript文件并删除多余的部分, 从而使下载速度更快。与其他库相比, JShrink具有一些优势。由于它是用本机php编写的, 而不是移植的, 因此它具有更好的性能。它具有一些额外的功能, 例如在缩小其他内容后保留许可数据的功能。
与作曲家
要在项目中使用JShrink, 请执行以下命令:
composer require tedivm/jshrink
或编辑你的composer.json文件并添加以下require行, 然后执行composer install:
{"require": {"tedivm/jshrink": "~1.0"}}
没有作曲家
如果要在没有作曲家的情况下使用JShrink, 只需使用require_once包含库的Minifier.php类:
require_once 'Minifier.php';
用法
JShrink的用法非常简单, clas Minifier提供了对静态方法minify的访问。此方法期望将Javascript字符串最小化为第一个参数, 并将带选项的数组作为第二个参数(实际上, 只有一个选项flaggedComments):
<
?php$js = file_get_contents("my-javascript-file.js");
// Basic (default) usage$minifiedCode = \JShrink\Minifier::minify($js);
// Disable YUI style comment preservation.$minifiedCode = \JShrink\Minifier::minify($js, array('flaggedComments' =>
false));
编码愉快!
推荐阅读
- 如何在Windows中使用Open ALPR(自动车牌识别)从图像中识别车辆牌照
- 如何更改NetBeans 8.2代码模板的默认@author值
- 如何在Composer中要求PEAR软件包
- 如何在Plesk中使用composer(使用其他版本的PHP运行Composer)
- 如何解决Cygwin终端错误(无法派生子进程:没有可用的终端(-1))
- 如何在Symfony 3中使用FOSUserBundle创建自定义注销事件(onLogout)监听器
- 如何在Doctrine和Symfony 3中启用加密哈希函数(MD5,SHA1和SHA2)
- 如何在Windows中使用Visual Studio编译PHP扩展名(DLL文件)
- 如何解决Composer安装/更新错误(VirtualAlloc()失败:[0x00000008])