08.06
Closure je scriptík, bez kterého se dá žít. Nejenom cyber-eko-aktivisté bojující za snižování přenosů dat však mohou pocítit potřebu servírovat s úctou k uživateli i serveru data v co nejmenším balení.
Closure miminalizuje java script kódy. Nejedná se o žádný zázrak. Odmaže nepotřebný mezery komentáře atd. Těch je celkem dost. Closure není kompresor, takže nějaký rezervy tam ještě jsou. Je free a funguje jako příkazový řádek. V tom je obrovská síla s jakou se dají zefektivitnit některé rutiny.
Stažení Google Closure
Vždy aktuální verze se nachází na tomto linku:
http://dl.google.com/closure-compiler/compiler-latest.zip
Úkolem je stáhnout a rozbalit do nějaký složky. Já jsem si založil D:\compiler
na počest názvu skriptíku.
Měli bychom dosáhnout tohoto stavu:
Velikosti souboru se budou lišit podle verze, ale to nevadí.
Spuštění
I když má soubor compiler.jar hezkou ikonku, tak když na ní klikneme, nic se nestane. To proto, že není žádne UI rozhraní. Tedy, že autoři se nezdržovali s žádnými okýnky atp. Kdo ještě nechápe proč, měl by tenhle artikl dočíst.
S Closure se kouzlí v příkazovém řádku. Nebo-li v comandlajnu. Zde zadáváme jednoduchý příkaz, ve kterém je directiva říkající: který soubor se má vzít a pod jakým názvem uložit.
d:\compiler>java -jar compiler.jar --js_output_file=file.js file.min.js
V tomto případě se předpokládá, že soubor, který chceme převést je připravený ve složce d:\compiler
Zatím žádná paráda. Pointa totiž přijde až na závěr.
V reálném projektu máme většinou více souborů, které se průběžně mění. Představa postupného předpisování a vykopírovávání je šílená, skoro až děsivá. Fuj. Přesto právě zde je řešení. Vytvoříme si totiž tzv. batch script, který udělá veškerou špinavou práci na jedno kliknutí.
V poznámkovým bloku si vytvoříme soubor s příponou .bat
takže např. project.bat
Uvnitř tohoto souboru bude: (V jednom řádku! rozepsal jsem to na víc řádku kvůli pochopení části příkazu. A taky by se mi to nevešlo.)
java
-jar D:/compiler/compiler.jar
--js_output_file=project/all.min.js
project/js-1.js project/js-2.js project/js-3.js
Pokud po uložení soubor spustíme, vytvoří nám Closure 1 minimalizovaný soubor s názvem `all.min.js` uvnitř kterého budou seskládány 3 soubory. Stránka, která scripty využívá pak může pracovat pouze s jedním souborem, což je ideální kvůli DNS look up.
Pokud dojde k nějaké změně v některém ze skriptů, jednoduše pustíme připravený batch, který připraví aktualizovanou verzi pro online. Jedním kliknutím. Takže stačí si k projektíkům vytvořit jednotlivý batche, na míru nakonfigurovaný podle potřeb projektu.
V –helpu se dá najít dalších pár příkladů. Smyslem těchto řádků bylo nastínit jednoduchý trik exportu java script souborů pro výstup.
Poznámka na závěr. Celá tahle paráda se dá zařídit on-line tím, že si budeme generovat scripty dynamicky. Nebo-li dosadíme nějaké java.php a necháme pracovat. Je to také řešení. Myslím ale, že v rámci mikrooptimalizace by v momentě kdy je jasné, že .js leží beze změn, měl být k dispozci jeden soubor a nezatěžovat se neustálým generováním.