Что я должен использовать для автоматического объединения файлов CSS / JS?

14

Мне известны звездочки для объединения файлов javascript, но я не пробовал. Какие есть другие варианты и как они складываются?

Cebjyre
источник
2
Кроме того, хотя это и не реальный ответ, вас могут заинтересовать пакеты ресурсов: limi.net/articles/resource-packages К сожалению, я не думаю, что кто-то еще реализовал это.
luiscubal

Ответы:

4

Я написал обработчик для Asp.Net, который использует YUI для сжатия, объединения и кэширования вывода.

Вот источник: http://gist.github.com/130913

Трэвис
источник
2

Я уже обратился к этой проблеме в другом вопросе

Оглядываясь назад, я должен был спросить об этом на веб-мастерах, а не на сайте программистов.

У вас есть 3 варианта:

  1. Позвольте вашей структуре обрабатывать это автоматически
  2. Пусть ваш веб-сервер обрабатывает это автоматически
  3. Накатить свой вариант сделать это вручную

Вариант 1 (с использованием расширения CakePHP):

Загрузите и установите AssetPacker на свой сайт (для этого также необходимы jsmin и CSSTidy). Измените несколько строк исходного кода, которые содержат файлы js. Моечные> Rinse-> Повторить. Вуаля, все остальное делается автоматически для вас.

Если вы используете какой-то другой фреймворк, скорее всего, есть инструмент, который сделает это за вас. Это довольно распространенное требование в мире webdev.

Вариант 2 (используя мод Apache):

Взгляните на мод Google Pagespeed для Apache . Он делает все, что вы описываете, и многое другое.

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

Вариант 3:

Если вы действительно хотите, вы можете создать некоторую магию PHP, которая объединяет файловый сервер JS и объединяет все ссылки в один, но ... Это именно то, что обе стратегии уже делают в любом случае.

Лично я настоятельно рекомендую против этого варианта.


Насколько я знаю, Sprockets объединяет файлы JS так же, как AssetPacker, он просто реализован как Ruby Gem. Чего он не делает, так это минимизирует код js. Так что, если вы используете его, вероятно, будет хорошей идеей взять гем jsmin. Для получения информации о том, как использовать Sprockets + JSMin в CakePHP, проверьте это .

Я знаю, что я делаю акцент на CakePHP, но ... я предполагаю, что, если плагин может быть адаптирован к CakePHP, его тоже должно быть тривиально адаптировать к другой среде.

Эван Плейс
источник
1

Вы уверены, что хотите объединить их? Если вы используете общую библиотеку, вы можете использовать CDN для доставки своих javascript. Затем вы можете воспользоваться преимуществами кэширования в браузере (при условии, что другие сайты используют тот же CDN) и распределенной доставкой. У Microsoft и Google есть свои решения (я тоже честно не использовал, но я определенно собираюсь начать), и могут быть другие.

Ларри Смитмиер
источник
1

Для проектов ASP.NET я включил его в процесс сборки на основе инструкций Карла Сегуина .

Карл лучше всего описывает это в своем блоге, но короткая версия заключается в том, чтобы настроить консольное приложение, упаковывающее YUICompressor. Затем вы можете настроить задачу после сборки, чтобы вызывать это консольное приложение в зависимости от расположения файлов JS на вашем сайте.

Роли Бакнер
источник
1

Если ваше веб-приложение написано на PHP, вы должны использовать minify :

Он объединяет несколько файлов CSS или Javascript, удаляет ненужные пробелы и комментарии и предоставляет им кодировку gzip и оптимальные заголовки кэша на стороне клиента.

Том
источник
1

Для этого знания Python может быть полезен. Вы можете выучить Python довольно быстро. Я начал около 2 недель назад, и мое первое приложение (которое еще не закончено) будет делать то же самое, что вы хотите. Как и компилятор DotLess, он будет иметь функцию наблюдения, которая будет проверять файлы или каталоги и, если они изменятся, создаст новый файл.

Python также отлично подходит для других задач обслуживания, и я читал много системных администраторов, которым нравится его использовать.

Pickels
источник
Я сам скорее Perl, и я мог бы взломать что-нибудь вместе, но я бы предпочел использовать какой-то уже существующий инструмент (возможно, с лучшим тестированием и большим количеством функций, чем было бы в моих быстрых и грязных усилиях).
Cebjyre
Ужасная самореклама, но @Pickels, вы были бы заинтересованы в помощи этому проекту? code.google.com/p/lesscss-python
Metalshark
0

Я создал Minifpy : инструмент, написанный в Python3 (совместимый с Mac OS, Windows и Linux) для объединения и минимизации файлов JS и CSS с использованием Python.

Minifpy использует очень простой файл конфигурации JSON, чтобы определить, какие файлы должны объединяться, минимизироваться или нет:

{
    "js": {
        "minify_files": [
            {"from": "static/file.js", "to":"static/file.min.js"},
        ],
        "merge_files": [
            {"from" : ["static/file1.js", "static/file2.js"], "to":"static/public.js", "to_min": "static/public.min.js"}
        ]
    },
    "css" : {
        "minify_files": [
            {"from": "static/file.css", "to":"static/file.min.css"},
        ],
        "merge_files": [
            {"from" : ["static/file1.css", "static/file2.css"], "to":"static/public.css", "to_min": "static/public.min.css"}
        ]
    }
}

Вы также можете использовать этот инструмент в CLI.

Minifpy обнаруживает любые изменения в файлах JS / CSS и автоматически объединяет / минимизирует их (полезно для разработки).

Сэмюэль Даузон
источник