A HTML/PHP 模板压缩器。包括对 Laravel Blade 编译器的支持。

v1.0 2017-03-23 19:43 UTC

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 元素之间一个空格。这是最安全的使用模式,最不可能引起问题。
  • 中:此模式会删除块级和未显示元素周围的空白,但保留内联元素(如 spana 等)周围的空白。请注意,通过 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压缩的支持。