Jaki jest najlepszy dostępny kompresor JavaScript? Szukam narzędzia, które:
- jest łatwy w użyciu
- ma wysoki współczynnik kompresji
- Osiągaj wiarygodne wyniki końcowe (nie psuje kodu)
javascript
compression
Ron Harlev
źródło
źródło
Odpowiedzi:
Niedawno wypuściłem UglifyJS , kompresor JavaScript, który jest napisany w JavaScript (działa na platformie NodeJS Node.js , ale można go łatwo zmodyfikować, aby działał na dowolnym silniku JavaScript, ponieważ nie potrzebuje żadnych elementów
Node.js
wewnętrznych). Jest dużo szybszy niż zarówno YUI Compressor, jak i Google Closure , kompresuje lepiej niż YUI we wszystkich skryptach, na których go testowałem, i jest bezpieczniejszy niż Closure (wie, jak radzić sobie z „eval” lub „with”).Oprócz usuwania białych znaków UglifyJS wykonuje również następujące czynności:
foo["bar"]
sięfoo.bar
tam, gdzie to możliwePS: Och, to też może „upiększać”. ;-)
źródło
Wrócenie do tego pytania kilka lat później, UglifyJS , wydaje się obecnie najlepszą opcją.
Jak podano poniżej, działa na platformie NodeJS, ale można go łatwo zmodyfikować, aby działał na dowolnym silniku JavaScript.
--- Stara odpowiedź poniżej ---
Google wypuścił Closure Compiler, który wydaje się generować najmniejsze pliki, jak dotąd tutaj i tutaj
Wcześniej różne opcje były następujące
Zasadniczo Packer radzi sobie lepiej przy początkowej kompresji, ale jeśli zamierzasz spakować pliki przed wysłaniem ich (co powinieneś zrobić), YUI Compressor uzyska najmniejszy ostateczny rozmiar.
Testy zostały wykonane na kodzie jQuery btw.
@ daniel james wspomina w komentarzu kompresorrater, który pokazuje Packerowi na czele tabeli w najlepszej kompresji, więc myślę, że ymmv
źródło
\uxxxx
domyślnie konwertuje znaki inne niż ASCII w łańcuchach na literały .. użyj np.--charset UTF-8
(jeśli jesteś pewien, że jakoś o tym poinformujesz przeglądarkę)YUI Compressor to droga do zrobienia. Ma świetny współczynnik kompresji, jest dobrze przetestowany i jest używany w wielu najpopularniejszych witrynach, a także osobiście polecany przeze mnie.
Używałem go w moich projektach bez ani jednego błędu JavaScript lub czkawki. I ma ładną dokumentację.
Nigdy nie korzystałem z jego możliwości kompresji CSS, ale one też istnieją.Kompresja CSS działa równie dobrze.Uwaga: Chociaż / packer / Dean Edwardsa osiąga lepszy współczynnik kompresji niż YUI Compressor, napotkałem kilka błędów JavaScript podczas korzystania z niego.
źródło
npm install packer
. (= DUżywam ShrinkSafe z projektu Dojo - jest to wyjątkowe, ponieważ faktycznie używa interpretera JavaScript ( Rhino ) do wyszukiwania symboli w kodzie i zrozumienia ich zakresu itp., Co pomaga zapewnić, że kod będzie działał, gdy wyjdzie z drugiej strony, w przeciwieństwie do wielu narzędzi do kompresji, które używają wyrażeń regularnych do tego samego (co nie jest tak niezawodne).
Właściwie mam zadanie MSBuild w projekcie wdrażania sieci Web w moim obecnym rozwiązaniu Visual Studio, które uruchamia skrypt, który z kolei uruchamia wszystkie pliki JS rozwiązania przez ShrinkSafe przed wdrożeniem i działa całkiem dobrze.
EDYCJA: Nawiasem mówiąc, „najlepszy” jest przedmiotem dyskusji, ponieważ kryteria „najlepszego” będą się różnić w zależności od potrzeb projektu. Osobiście uważam, że ShrinkSafe to dobra równowaga; dla niektórych osób, które uważają, że najmniejszy rozmiar == najlepszy, będzie niewystarczający.
EDYCJA: Warto zauważyć, że kompresor YUI również używa Rhino.
źródło
Wypróbuj JSMin , masz C #, Javę, C i inne porty, a także łatwo dostępne.
źródło
Jeśli używasz programu Packer, po prostu wybierz opcję „zmniejsz zmienne” i spakuj wynikowy kod za pomocą programu gzip. Opcja base62 jest używana tylko wtedy, gdy twój serwer nie może wysyłać plików spakowanych gzipem. Packer z 'shrink vars' osiąga lepszą kompresję YUI, ale może wprowadzić błędy, jeśli pominiesz gdzieś średnik.
base62 jest w zasadzie gzipem dla biednych ludzi, dlatego zgzowanie kodu base62-ed daje większe pliki niż gzipowanie kodu shrink-var-ed.
źródło
JSMin to kolejny.
źródło
źródło
Oto kod źródłowy HttpHandler, który to robi, może ci pomoże
źródło
Oto skrypt kompresora YUI ( Byuic ), który znajduje wszystkie js i css w ścieżce i kompresuje / (opcjonalnie) zaciemnia je. Miło zintegrować się z procesem kompilacji.
źródło
bananascript.com dawał mi najlepsze wyniki.
źródło
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
źródło
Js Crush to dobry kompresor do użycia po zminimalizowaniu.
źródło