Minifikace (programování) - Minification (programming)

Minification (také minimalizace nebo minimalizace ) je proces odstranění všechny nepotřebné znaky z zdrojového kódu ze interpretovaných programovacích jazyků a značkovacích jazyků aniž by se změnila jeho funkčnost. Tyto nepotřebné znaky obvykle obsahují znaky mezery , nové řádkové znaky , komentáře a někdy oddělovače bloků, které se používají k přidání čitelnosti kódu, ale nejsou nutné pro jeho spuštění. Minifikace zmenšuje velikost zdrojového kódu a zefektivňuje jeho přenos přes síť (např. Internet). V kultuře programátorů je cílem extrémně minifikovaných zdrojových kódů účel rekreačních kódových golfových soutěží.

Minifikaci lze odlišit od obecnějšího konceptu komprese dat v tom, že minifikovaný zdroj lze interpretovat okamžitě bez nutnosti nekomprimačního kroku: stejný tlumočník může pracovat jak s původním, tak se zmenšeným zdrojem.

Cíle minifikace nejsou stejné jako cíle zmatku ; první z nich je často zamýšleno obrátit pomocí hezké tiskárny nebo odminovače. Aby však minifikace dosáhla svých cílů, někdy používá techniky používané také zmatením ; například zkrácení názvů proměnných a refaktorování zdrojového kódu . Když minifikace používá takové techniky, hezká tiskárna nebo unminifier může plně zvrátit proces minifikace, pouze pokud jsou poskytnuty podrobnosti o transformacích provedených těmito technikami. Pokud tyto podrobnosti nejsou poskytnuty, bude obrácený zdrojový kód obsahovat různé názvy proměnných a tok řízení, přestože bude mít stejnou funkci jako původní zdrojový kód .

Příklad

Například kód JavaScript

// This is a comment that will be removed by the minifier
var array = [];
for (var i = 0; i < 20; i++) {
  array[i] = i;
}

je ekvivalentní, ale delší než

for(var a=[i=0];i<20;a[i]=i++);

Dějiny

V roce 2001 Douglas Crockford představil JSMin, který odstranil komentáře a prázdné znaky z kódu JavaScript. V roce 2007 jej následoval YUI Compressor. V roce 2009 Google otevřel svou sadu nástrojů pro uzavření, včetně nástroje Closure Compiler, který obsahoval funkci mapování zdroje spolu s rozšířením Firefoxu s názvem Closure Inspector. V roce 2010 představil Mihai Bazon UglifyJS, který byl v roce 2012 nahrazen UglifyJS2; přepis měl umožnit podporu zdrojové mapy. Od roku 2017 převzal Alex Lam údržbu a vývoj UglifyJS2 a nahradil jej UglifyJS3, který sjednotil CLI s API.

Mapování zdroje

Zdroj Mapa je souborový formát , který umožňuje softwarové nástroje pro JavaScript zobrazit jiný kód pro uživatele, než je kód skutečně provedený počítačem. Chcete -li například pomoci při ladění minifikovaného kódu, „namapujte“ tento kód na původní nezminifikovaný zdrojový kód .

Původní formát vytvořil Joseph Schorr v rámci projektu minifikace Closure Inspector. Verze 2 a 3 formátu výrazně zmenšila velikost mapových souborů.

Typy

Nástroje

Visual Studio Code přichází s podporou minifikace pro několik jazyků. Může snadno procházet Visual Studio Marketplace a stáhnout a nainstalovat další minifikátory.

Mezi optimalizátory JavaScriptu, které mohou minimalizovat a generovat zdrojové mapy, patří UglifyJS a Google Closure Compiler . Kromě toho některé online nástroje, jako je Microsoft Ajax Minifier, Yahoo! YUI Compressor nebo Pretty Diff mohou komprimovat soubory CSS . Pro minifikaci HTML kódu existují následující nástroje: HtmlCompressor, HTMLMinifier a WebMarkupMin. Existuje skript Power-Shell s názvem „minifyPS“, který je schopen zmenšit kód skriptu PowerShell i kód JavaScript.

Vývoj webu

Komponenty a knihovny pro webové aplikace a weby byly vyvinuty za účelem optimalizace požadavků na soubory a zkrácení doby načítání stránky zmenšením velikosti různých souborů.

Prostředky JavaScript a Cascading Style Sheet (CSS) mohou být minimalizovány, aby se zachovalo jejich chování a výrazně se zmenšila velikost jejich souboru. Knihovny dostupné online mohou v různé míře minimalizovat a optimalizovat. Některé knihovny také sloučí více souborů skriptů do jednoho souboru pro stažení klienta. Díky zdrojovým mapám JavaScriptu lze kód číst a ladit i poté, co byl zkombinován a zmenšen.

Reference