Мне нравятся простые библиотеки, не перегруженные функционалом на все случаи жизни, но которые четко и быстро решают часто встречающиеся задачи. К таким библиотекам я отнес бы минификатор Bender - класс, выполняющий простую и полезную функцию комбинирования CSS и джаваскриптов в единые файлы (один для всех CSS и один для всех javascript) с последующей их минимизацией на лету. В результате сайт грузится быстрее засчет снижения числа HTTP-запросов, уменьшая нагрузку на сервер и трафик. Bender написан на чистом PHP и не требует каких-либо сторонних библиотек на Java или Python.

Допустим, что нам надо подключить 2 javascript'а и 2 css-файла:

<html lang="en">
    <head>
        <link href="/assets/css/bootstrap.css" rel="stylesheet" type="text/css" />
        <link href="/assets/css/bootstrap-theme.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="/assets/js/jquery-1.10.2.js"></script>
        <script type="text/javascript" src="/assets/js/bootstrap.js"></script>
    </head>
    <body>
        ...
    </body>
</html>

А теперь добавим Bender:

<html lang="en">
    <head>
        <?php
        require_once "Bender/Bender.class.php";
        $bender = new Bender();
        $bender->enqueue("assets/css/bootstrap.css");
        $bender->enqueue("assets/css/bootstrap-theme.css");
        $bender->enqueue("assets/js/jquery-1.10.2.js");
        $bender->enqueue("assets/js/bootstrap.js");
        // альтернативный вариант - $bender->enqueue(array("assets/css/bootstrap.css", "assets/css/bootstrap-theme.css", ...));
        // помещаем ссылку минифицированного/скомбинированного CSS в секцию <head>
        echo $bender->output("cache/stylesheet.css");
        ?>
    </head>
    <body>
        ...
        <?php
        // помещаем ссылку скомбинированного/минифицированного Javascript в конец секции <body>
        echo $bender->output("cache/javascript.js");
        ?>
    </body>
</html>

Поставленные в очередь файлы будут скомбинированы, минифицированы и сохранены на диск. Следует удостовериться, что директория для их вывода доступна на запись. В итоге получим HTML:

<html lang="en">
    <head>
        <link href="/assets/css/stylesheet.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        ...
        <script type="text/javascript" src="/assets/js/javascript.js"></script>
    </body>
</html>

В Bender также предусмотрен плагин для работы с шаблонизатором Smarty.

Наверх