Czego powinienem użyć do automatycznego łączenia plików css / js?

14

Znam koła zębate do łączenia plików javascript, ale nie próbowałem tego. Jakie są inne opcje i jak się zestawiają?

Cebjyre
źródło
2
Ponadto, choć nie jest to prawdziwa odpowiedź, możesz zainteresować się pakietami zasobów: limi.net/articles/resource-packages Niestety, nie sądzę, aby ktokolwiek jeszcze go zaimplementował.
luiscubal

Odpowiedzi:

2

Omówiłem już ten problem w innym pytaniu

Z perspektywy czasu powinienem był zadawać to pytanie webmasterom zamiast witryny programistów.

Masz 3 opcje:

  1. Pozwól, aby Twój program obsługiwał go automatycznie
  2. Pozwól swojemu serwerowi obsłużyć to automatycznie
  3. Rzuć własną opcję, aby zrobić to ręcznie

Opcja 1 (przy użyciu rozszerzenia CakePHP):

Pobierz i zainstaluj AssetPacker na swojej stronie (która wymaga również jsmin i CSSTidy). Zmodyfikuj kilka wierszy źródła, które zawierają pliki js. Umyć-> Płukanie-> Powtórzyć. Voila, reszta zrobiona jest automatycznie dla ciebie.

Jeśli użyjesz innego frameworka, są szanse, że istnieje narzędzie, które spełni to za Ciebie. Jest to dość powszechny wymóg w świecie webdev.

Opcja 2 (przy użyciu modu Apache):

Spójrz na mod Google Pagespeed dla Apache . Robi wszystko, co opisujesz i wiele więcej.

Pamiętaj jednak o monitorowaniu zasobów serwera produkcyjnego. Niektóre osoby mają problemy z nieprawidłowym zwiększeniem obciążenia serwera. Nie jestem przekonany, ale skuteczna opcja może wymagać wystarczającej strategii dotyczącej zawartości statycznej.

Opcja 3:

Jeśli naprawdę chcesz, możesz stworzyć magię PHP, która połączy serwer plików JS i połączy wszystkie odnośniki w jeden, ale ... Dokładnie to właśnie robią obie strategie.

Osobiście zdecydowanie odradzam tę opcję.


O ile wiem Sprockets łączy pliki JS tak samo jak AssetPacker, jest on po prostu zaimplementowany jako Ruby Gem. To, czego nie robi, to zminimalizowanie kodu js. Więc jeśli go użyjesz, prawdopodobnie dobrym pomysłem jest również złapanie klejnotu jsmin. Aby uzyskać informacje na temat używania Sprockets + JSMin w CakePHP, sprawdź to .

Wiem, że kładę nacisk na CakePHP, ale ... Zakładam, że jeśli wtyczkę można dostosować do CakePHP, dostosowanie jej do innych ram powinno być trywialne.

Evan Plaice
źródło
1

Czy na pewno chcesz je połączyć? Jeśli korzystasz ze wspólnej biblioteki, możesz wykorzystać CDN do dostarczenia skryptów javascript. Następnie możesz skorzystać z buforowania przeglądarki (zakładając, że inne strony używają tego samego CDN) i dostarczania rozproszonego. Zarówno Microsoft, jak i Google mają rozwiązania (ja też nie korzystałem uczciwie, ale na pewno zacznę) i mogą być też inne.

Larry Smithmier
źródło
1

W przypadku projektów ASP.NET uczyniłem to częścią mojego procesu kompilacji opartego na instrukcji Karla Seguina .

Karl najlepiej to opisuje na swoim blogu, ale krótka wersja polega na skonfigurowaniu aplikacji konsolowej do pakowania YUICompressor. Następnie możesz skonfigurować zadanie po kompilacji, aby wywoływać tę aplikację konsoli z lokalizacją plików JS w Twojej witrynie.

Raleigh Buckner
źródło
1

Jeśli twoja aplikacja jest w PHP, powinieneś rozważyć użycie minify :

Łączy wiele plików CSS lub Javascript, usuwa niepotrzebne białe znaki i komentarze oraz obsługuje je z kodowaniem gzip i optymalnymi nagłówkami pamięci podręcznej po stronie klienta.

Tomek
źródło
1

Do tego wiedza Python może być naprawdę przydatna. Możesz nauczyć się języka Python dość szybko. Zacząłem około 2 tygodnie temu i moja pierwsza aplikacja (która wciąż nie jest ukończona) zrobi dokładnie to samo, co chcesz. Podobnie jak kompilator DotLess, będzie on miał funkcję zegarka, która będzie przeglądać pliki lub katalogi, a jeśli się zmienią, wygeneruje nowy plik.

Python jest również świetny do innych zadań konserwacyjnych i czytam wielu administratorów systemu, którzy lubią go używać.

Pikle
źródło
Sam jestem bardziej facetem od Perla i prawdopodobnie mógłbym coś zhakować razem, ale wolałbym użyć wcześniej istniejącego narzędzia (z, prawdopodobnie, lepszymi testami i większą liczbą funkcji, niż miałbym szybki i brudny wysiłek).
Cebjyre,
Ohydna autopromocja, ale @Pickels, czy byłbyś zainteresowany pomocą w tym projekcie? code.google.com/p/lesscss-python
Metalshark
0

Stworzyłem Minifpy : narzędzie napisane w Python3 (kompatybilne z Mac OS, Windows i Linux) do łączenia i minimalizowania plików JS i CSS za pomocą Pythona.

Minifpy używa bardzo łatwego pliku konfiguracyjnego JSON, aby określić, które pliki muszą zostać scalone, zminimalizowane lub nie:

{
    "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"}
        ]
    }
}

Możesz także użyć tego narzędzia w interfejsie CLI.

Minifpy wykrywa wszelkie modyfikacje plików JS / CSS i automatycznie je łączy / minimalizuje (przydatne w programowaniu).

Samuel Dauzon
źródło