Znam koła zębate do łączenia plików javascript, ale nie próbowałem tego. Jakie są inne opcje i jak się zestawiają?
Znam koła zębate do łączenia plików javascript, ale nie próbowałem tego. Jakie są inne opcje i jak się zestawiają?
Odpowiedzi:
Napisałem moduł obsługi dla Asp.Net, który używa YUI do kompresji, konkatenacji i buforowania danych wyjściowych.
Oto źródło: http://gist.github.com/130913
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:
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.
Szybkie wyszukiwanie w Google pozwala znaleźć pliki CSS: http://www.tothepc.com/archives/combine-merge-multiple-css-files/
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.
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.
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ć.
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).