jrhenderson1988 / miniphy
A HTML/PHP 模板压缩器。包括对 Laravel Blade 编译器的支持。
Requires (Dev)
- php: >=5.4.0
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2024-09-28 20:14:47 UTC
README
一个基于 PHP 的简单 HTML 压缩器。它内置了对 Laravel 5 的支持,提供服务提供者和外观。此外,它可以配置为在编译时压缩 blade 模板文件。
安装
您可以使用 composer 安装 Miniphy。只需运行以下命令获取最新版本:
$ composer require jrhenderson1988/miniphy
或者,您可以将它手动添加到您的 composer.json
文件中,然后运行 composer update
。
{
"require": {
"jrhenderson1988/miniphy": "^1.0"
}
}
如果您使用 Laravel,不要忘记将 MiniphyServiceProvider
添加到您的 config/app.php
。
// ...
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
/**
* Package Service Providers...
*/
Miniphy\MiniphyServiceProvider::class,
// ...
如果您想使用外观,请确保将它添加到您的 config/app.php
中的 aliases
。
// ...
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'Miniphy' => Miniphy\Facades\Miniphy::class,
],
用法
使用 Miniphy 非常简单,实际上只需要创建一个 Miniphy
实例,并调用 html
方法来创建一个用于压缩 HTML 的 HTML 驱动器。然后,您可以在生成的驱动器上调用 minify
方法,并返回压缩后的内容。
use Miniphy\Miniphy;
$content = '<html> <body> <p> Your HTML content </p> </body> </html>';
$miniphy = new Miniphy();
$minifiedContent = $miniphy->html()->minify($content);
为了方便,您也可以将您的 HTML 内容传递给 html
方法,然后返回压缩后的内容。在底层,这将创建一个 HTML 驱动器并调用它的 minify
方法。
use Miniphy\Miniphy;
$content = '<html> <body> <p> Your HTML content </p> </body> </html>';
$minifiedContent = (new Miniphy())->html($content);
模式
Miniphy 的 HTML 压缩支持三种不同的模式:软、中、硬。
- 软(默认):此模式在删除空白时会保留 HTML 元素之间一个空格。这是最安全的使用模式,最不可能引起问题。
- 中:此模式会删除块级和未显示元素周围的空白,但保留内联元素(如
span
、a
等)周围的空白。请注意,通过 CSS 可以使通常的内联元素表现得像块元素,因此如果这样做,此模式可能会产生不期望的副作用。 - 硬:这是最激进的模式,将删除所有元素周围的空白。
您可以通过在 Miniphy
实例上调用链式 setHtmlMode
方法轻松设置模式。还有一个 htmlMode
方法可以用来获取或设置 HTML 模式,如果提供了参数,则此方法将返回 Miniphy
实例以进行链式调用。如果没有参数,则此方法将返回一个表示模式的整数值。
use Miniphy\Miniphy;
$miniphy = new Miniphy();
// Soft mode
$miniphy->setHtmlMode(Miniphy::HTML_MODE_SOFT);
// Set medium mode and minify the provided HTML content
$miniphy->setHtmlMode(Miniphy::HTML_MODE_MEDIUM)->html(' HTML CONTENT ');
// Set hard mode and minify the content using the htmlMode method
$miniphy->htmlMode(Miniphy::HTML_MODE_HARD)->html(' HTML CONTENT ');
Laravel
当您在 Laravel 中正确设置该包时,您可以非常容易地使用 Miniphy,无论是通过使用外观、依赖注入还是从 IoC 容器获取 Miniphy
实例。或者,您可以通过设置来启用编译时 Blade 优化,以自动在生成时压缩 blade 模板。
外观
$minified = Miniphy::html(' Your HTML content ');
依赖注入
<?php
namespace App\Http\Controllers;
use Miniphy\Miniphy;
class MyController extends Controller
{
public function myMethod(Miniphy $miniphy)
{
return $miniphy->html(' Your HTML content ');
}
}
IoC 容器
$miniphy = app('miniphy');
$minified = $miniphy->html(' Your HTML content ');
编译时 Blade 优化
如果您想使 blade 模板在编译时被压缩,您可以通过设置来启用编译时 blade 优化。
在 config/miniphy.php
<?php
return [
// ...
'blade' => true,
// ...
];
重要提示: Laravel 在编译后缓存 Blade 模板。如果您在启用了 blade 优化后发现视图没有被压缩,您可能需要运行
php artisan view:clear
。这将清除视图缓存,并重新编译模板。同样,如果您想禁用 blade 优化,您将需要运行此命令来删除缓存的、压缩的视图。
待办事项
- 当保留 PHP 标签时,允许使用短开标签
- 在保留PHP标签时,请考虑使用短echo风格标签
<?= $value ?>
- 增加对内联CSS压缩的支持。
- 增加对内联JavaScript压缩的支持。