Объединение и сжатие нескольких файлов JavaScript в php

Я работаю над приложением PHP, которое требует восемь файлов JavaScript (привет web2.0).

Мне интересно, как лучше всего объединить и сжать все файлы динамически. Я правильно сформулировал вопрос?

Конечным результатом является то, что я включил бы один файл.js в заголовок, и этот файл.js включил бы файлы.js в мой каталог "includes/js".

Благодарю.

5 ответов

Решение

Вы можете использовать jsmin-php

Их пример кода:

require 'jsmin-1.1.1.php';

// Output a minified version of example.js.
echo JSMin::minify(file_get_contents('example.js'));

Вы можете легко объединить несколько файлов js, выполнив что-то вроде:

require 'jsmin-1.1.1.php';

// Output a minified version of example.js.
echo JSMin::minify(file_get_contents('example.js') . file_get_contents('example2.js'));

Я использовал Minify с моими jQuery/PHP проектами с большим успехом. Он также включает в себя кеширование, поэтому не нужно много накладных расходов.

Я закончил тем, что изменил вещи и использовал.htaccess для маршрутизации всех запросов к моей папке javascript в сценарий minify, например, так:

<script type="text/javascript" src="/js/jquery.js,js/jquery-levitip.js,js/jquery-facebox.js,js/datepicker.js,js/ga.js"></script>

с моим внешним HTML-маршрутом в мой скрипт minify, и он возвращает все эти скрипты как один, сжатый и свернутый. Таким образом, я могу нормально определить, что включает, и все происходит за кулисами.

Но в любом случае проверьте руководство пользователя на их сайте, оно очень хорошо задокументировано, и вы также сможете справиться со своими задачами. Ох, и это работает для CSS тоже.

Возможно, вы могли бы использовать Yahoo JavaScript Compressor, который является инструментом командной строки, который вы можете запустить из своего PHP-скрипта.

Вы можете попробовать PHP Speedy. Он объединит и сожмет ваши JS-файлы для вас в один файл. Это также сожмет ваш HTML и CSS, и ваша страница будет загружаться намного быстрее.

 function compress($buffer) {
        /* remove comments */
        $buffer = preg_replace("/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/", "", $buffer);
        /* remove tabs, spaces, newlines, etc. */
        $buffer = str_replace(array("\r\n","\r","\t","\n",'  ','    ','     '), '', $buffer);
        /* remove other spaces before/after ) */
        $buffer = preg_replace(array('(( )+\))','(\)( )+)'), ')', $buffer);
        return $buffer;
    }

Источник: http://castlesblog.com/2010/august/14/php-javascript-css-minification

Другие вопросы по тегам