Мне нравятся простые библиотеки, не перегруженные функционалом на все случаи жизни, но которые четко и быстро решают часто встречающиеся задачи. К таким библиотекам я отнес бы минификатор 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.