Що я повинен використовувати для автоматичного поєднання файлів css / js?


14

Я знаю зірочки для комбінування файлів javascript, але не пробували. Які ще є варіанти та як їх складати?


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

Відповіді:



2

Я вже розглядав це питання в іншому питанні

Заднім числом я мав би запитати це у веб-майстрів замість сайту програмістів.

У вас є 3 варіанти:

  1. Нехай ваша структура обробляє це автоматично
  2. Нехай ваш веб-сервер обробляє це автоматично
  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, він повинен бути тривіальним і для адаптації його до іншого фреймворку.



1

Ви впевнені, що хочете поєднати їх? Якщо ви використовуєте загальну бібліотеку, ви можете використовувати CDN для доставки ваших Java-скриптів. Потім ви можете скористатися кешуванням браузера (якщо інші сайти використовують той самий CDN) та розподіленою доставкою. Майкрософт та Google мають рішення (я їх чесно не використовував, але я, звичайно, почну), і можуть бути інші.


1

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

Карл найкраще описує це у своєму блозі, але коротка версія - це налаштувати консольний додаток, що обгортає YUICompressor. Тоді ви можете налаштувати завдання після складання, щоб викликати цю консольну програму щодо розташування файлів JS на вашому сайті.


1

Якщо ваш веб-переглядач знаходиться в PHP, вам слід розглянути можливість використання minify :

Він поєднує в собі декілька файлів CSS або Javascript, видаляє зайві пробіли та коментарі та подає їх з кодуваннями gzip та оптимальними заголовками кешу на стороні клієнта.


1

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

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


Я сам більше хлопець 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 та автоматично зливає / мінімізує їх (корисно для розробки).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.