JQuery ma dwie wersje do pobrania, jedna to Production (19 KB, Minified i Gzipped) , a druga to Development ( 120 KB, Uncompressed Code) .
Teraz kompaktowa wersja 19kb, jeśli ją pobierzesz, zobaczysz, że nadal jest to wykonywalny kod javascript. Jak to zagęszczali? I jak mogę „zminimalizować” mój kod w ten sposób?
javascript
gzip
KalEl
źródło
źródło
Odpowiedzi:
Minifikacja DIY
Żaden minifier nie może poprawnie skompresować złego kodu.
W tym przykładzie chcę tylko pokazać, ile robi minifier.
Co powinieneś zrobić, zanim zminimalizujesz
A jeśli chodzi o jQuery ... nie używam jQuery.jQuery jest dla starych przeglądarek, zostało stworzone ze względu na kompatybilność ... sprawdź caniuse.com, prawie wszystko działa na każdej przeglądarce (również ie10 jest teraz znormalizowane), myślę, że teraz jest tylko tutaj, aby spowolnić swoją aplikację internetową ... jeśli chcesz
$()
, powinieneś stworzyć własną prostą funkcję. I po co zawracać sobie głowę kompresją kodu, jeśli Twoi klienci muszą za każdym razem pobierać skrypt jquery o rozmiarze 100 kb? jak duży jest twój nieskompresowany kod? 5-6kb ..? Nie wspominając o mnóstwie wtyczek, które dodajesz, aby to ułatwić.Oryginalny kod
Kiedy piszesz funkcję, masz pomysł, zacznij pisać, a czasami kończy się coś w rodzaju następującego kodu. Kod działa.Teraz większość ludzi przestaje myśleć i dodaje to do minifier i publikuje.
Oto zminimalizowany kod (dodałem nowe linie)
Zminimalizowano za pomocą ( http://javascript-minifier.com/ )
Ale czy te wszystkie zmienne, jeśli, pętle i definicje są konieczne?
Przez większość czasu NIE !
OPCJONALNIE (zwiększa wydajność i krótszy kod)
Math
)while
,for
... nieforEach
)"{}","()",";",spaces,newlines
Jeśli minifier może skompresować kod, robisz to źle.
Żaden minifier nie może poprawnie skompresować złego kodu.
majsterkowanie
Robi dokładnie to samo, co powyższe kody.
Występ
http://jsperf.com/diyminify
Zawsze musisz pomyśleć, czego potrzebujesz:
Zanim powiesz „Nikt nie napisałby kodu takiego jak ten poniżej”, przejdź tutaj i sprawdź pierwsze 10 pytań ...
Oto kilka typowych przykładów, które widzę co dziesięć minut.
Chcesz mieć stan wielokrotnego użytku
Alert tak, tylko jeśli istnieje
Alert tak lub nie
Zamień liczbę na ciąg lub odwrotnie
Zaokrąglij liczbę
Piętro numer
Sprawa przełącznik
próbuj złapać
więcej, jeśli
ale
indexOf
wolno czytać to https://stackoverflow.com/a/30335438/2450730liczby
Kilka fajnych artykułów / stron, które znalazłem na temat bitwise / shorthand:
http://mudcu.be/journal/2011/11/bitwise-gems-and-other-optimizations/
http://www.140byt.es/
http://www.jquery4u.com/javascript/shorthand-javascript-techniques/
Istnieje również wiele witryn jsperf pokazujących wydajność shorthand & bitwsie, jeśli szukasz przy użyciu swojej ulubionej wyszukiwarki.
Mógłbym chodzić godzinami ... ale myślę, że na razie wystarczy.
jeśli masz jakieś pytania, po prostu zadaj.
I pamiętaj
Żaden minifier nie może poprawnie skompresować złego kodu.
źródło
(10.4899845 +.5)|0
Możesz użyć jednego z wielu dostępnych minifikatorów javascript.
źródło
Google właśnie udostępnił kompilator javascript, który może zminimalizować twój kod, wyeliminować martwe gałęzie kodu i więcej optymalizacji.
kompilator google javascript
Pozdrawiam
K.
źródło
Wraz z minifikacją możesz również zakodować base64. To sprawia, że plik jest znacznie bardziej skompresowany. Jestem pewien, że widziałeś pliki js, które są opakowane w funkcję eval () z przekazanymi parametrami (p, a, c, k, e, r). Przeczytałem w tym artykule Jak zminimalizować plik JavaScript?
źródło
Napisałem mały skrypt, który wywołuje interfejs API w celu zminimalizowania skryptu, sprawdź to:
Stosowanie:
źródło
Niedawno musiałem wykonać to samo zadanie. Podczas gdy kompresory wymienione w JavaScript CompressorRater wykonują świetną robotę, a narzędzie jest bardzo przydatne, kompresory nie działały dobrze z niektórymi kodami jQuery, których używam (kontrole $ .getScript i jQuery.fn). Nawet Google Closure Compressor zakrztusił się na tych samych liniach. Chociaż mogłem w końcu pozbyć się załamań, ciągłe mrużenie oczu było daleko za dużo.
Tym, który w końcu zadziałał bez problemu, był UglifyJS (dzięki @ Aries51 ), a kompresja była tylko nieznacznie mniejsza niż wszystkie inne. I podobnie jak Google ma interfejs API HTTP. Packer jest również fajny i ma implementację językową w Perlu, PHP i .NET.
źródło
Obecnie istnieją dwa sposoby zmniejszania kodu:
http://yui.github.io/yuicompressor/
Wiele takich narzędzi jest dostępnych również dla Node i npm - dobrą praktyką jest automatyzacja obsługi JavaScript za pomocą Grunt.
http://www.modify-anything.com/
źródło
Możesz użyć minifier javascript ubercompute.com, aby zminimalizować swój kod. Zminimalizuje to kod javascript do 75% jego oryginalnej wersji.
źródło
Jeśli używasz edytora VSCode, dostępnych jest wiele wtyczek / rozszerzeń.
Na
MinifyAll
przykład jest bardzo dobry - kompatybilny z wieloma rozszerzeniami.Zainstaluj go i ponownie załaduj VSCode. Następnie kliknij plik, otwórz paletę poleceń (
Ctrl+Shift+p
), wpisz minify ten dokument (Ctrl+alt+m
) inne dostępne opcje, takie jak zachowaj oryginalny dokument i tak dalej! Łatwo!źródło