Я знаю зірочки для комбінування файлів javascript, але не пробували. Які ще є варіанти та як їх складати?
Я знаю зірочки для комбінування файлів javascript, але не пробували. Які ще є варіанти та як їх складати?
Відповіді:
Я написав обробник для Asp.Net, який використовує YUI для стискання, об'єднання та кешування результатів.
Ось джерело: http://gist.github.com/130913
Я вже розглядав це питання в іншому питанні
Заднім числом я мав би запитати це у веб-майстрів замість сайту програмістів.
У вас є 3 варіанти:
Варіант 1 (з використанням розширення CakePHP):
Завантажте та встановіть на свій сайт AssetPacker (що також вимагає jsmin та CSSTidy). Змініть кілька рядків джерела, які містять файли js. Прати-> Промити-> Повторити. Вуаля, решта робиться автоматично.
Якщо ви використовуєте якусь іншу рамку, швидше за все, є інструмент, який здійснить це для вас. Це досить поширена вимога у світі webdev.
Варіант 2 (використовуючи мод Apache):
Погляньте на мод Google Pagespeed для Apache . Це робить усе, що ви описуєте, і ще багато іншого.
Не забудьте стежити за ресурсами вашого виробничого сервера. Деякі люди бачили проблеми, коли це погано збільшує навантаження на їх сервер. Я не позитивний, але для ефективного варіанту може знадобитися достатня статична контент-стратегія.
Варіант 3:
Якщо ви дійсно хочете, ви можете створити якусь магію PHP, яка об'єднує сторону сервера файлів JS і поєднує всі відносні посилання в одну, але ... Саме так обидві стратегії вже роблять.
Особисто я настійно не рекомендую проти цього варіанту.
Наскільки я знаю, Sprockets об'єднує файли JS так само, як і AssetPacker, він просто реалізований як Ruby Gem. Що він не робить - це мінімізувати js-код. Тож, якщо ви його використовуєте, можливо, добре захопити також дорогоцінний камінь jsmin. Щоб дізнатися, як використовувати зубці + JSMin у CakePHP, ознайомтесь із цим .
Я знаю, що я робив акцент на CakePHP, але ... я припускаю, що, якщо плагін може бути адаптований до CakePHP, він повинен бути тривіальним і для адаптації його до іншого фреймворку.
Швидкий пошук Google виявляє це для комбінування файлів CSS: http://www.tothepc.com/archives/combine-merge-multiple-css-files/
Ви впевнені, що хочете поєднати їх? Якщо ви використовуєте загальну бібліотеку, ви можете використовувати CDN для доставки ваших Java-скриптів. Потім ви можете скористатися кешуванням браузера (якщо інші сайти використовують той самий CDN) та розподіленою доставкою. Майкрософт та 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 та автоматично зливає / мінімізує їх (корисно для розробки).