本文概述
缩小文件可能会在你的项目中产生实际的性能差异, 这与浏览器中代码的性能无关, 而与用户收到文件的速度以及需要为文件提供大量服务时服务器的负载有关同时连接。
与往常一样, 在服务器中实现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';
你已经准备在代码中使用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 content
echo $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 content
echo $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的安装进行操作:
与作曲家
要在你的项目中安装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的用法非常简单, 仅使用一种方法即可实现。这种方法被挤压:
<?php
use Patchwork\JSqueeze;
$jz = new JSqueeze();
// Retrieve the content of a JS file
$fatJs = file_get_contents('myJavascript.js');
$minifiedJs = $jz->squeeze(
$fatJs, true, // $singleLine
true, // $keepImportantComments
false // $specialVarRx
);
作为函数的第一个参数, 提供需要缩小的Javascript代码。
第二个参数$ singleLine允许你确定是否在找到分号的情况下保留换行符。通常, 我们希望此值始终设置为true。
第三个参数$ keepImportantComments允许你决定是否要/ *!要删除的评论。
第四个参数$ specialVarRx为全局变量, 方法, 属性定义特殊变量名称的正则表达式, 并在字符串替换中将其设置为false(如果不需要)。
3.使用JShrink压缩Javascript
JShrink是用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
));
编码愉快!
评论前必须登录!
注册