Мне известны звездочки для объединения файлов javascript, но я не пробовал. Какие есть другие варианты и как они складываются?
Мне известны звездочки для объединения файлов javascript, но я не пробовал. Какие есть другие варианты и как они складываются?
Ответы:
Я написал обработчик для Asp.Net, который использует YUI для сжатия, объединения и кэширования вывода.
Вот источник: http://gist.github.com/130913
Я уже обратился к этой проблеме в другом вопросе
Оглядываясь назад, я должен был спросить об этом на веб-мастерах, а не на сайте программистов.
У вас есть 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, его тоже должно быть тривиально адаптировать к другой среде.
Быстрый поиск в Google находит это, чтобы объединить файлы CSS: http://www.tothepc.com/archives/combine-merge-multiple-css-files/
Вы уверены, что хотите объединить их? Если вы используете общую библиотеку, вы можете использовать CDN для доставки своих javascript. Затем вы можете воспользоваться преимуществами кэширования в браузере (при условии, что другие сайты используют тот же CDN) и распределенной доставкой. У Microsoft и Google есть свои решения (я тоже честно не использовал, но я определенно собираюсь начать), и могут быть другие.
Для проектов ASP.NET я включил его в процесс сборки на основе инструкций Карла Сегуина .
Карл лучше всего описывает это в своем блоге, но короткая версия заключается в том, чтобы настроить консольное приложение, упаковывающее YUICompressor. Затем вы можете настроить задачу после сборки, чтобы вызывать это консольное приложение в зависимости от расположения файлов JS на вашем сайте.
Для этого знания Python может быть полезен. Вы можете выучить Python довольно быстро. Я начал около 2 недель назад, и мое первое приложение (которое еще не закончено) будет делать то же самое, что вы хотите. Как и компилятор DotLess, он будет иметь функцию наблюдения, которая будет проверять файлы или каталоги и, если они изменятся, создаст новый файл.
Python также отлично подходит для других задач обслуживания, и я читал много системных администраторов, которым нравится его использовать.
Я создал 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 и автоматически объединяет / минимизирует их (полезно для разработки).