22 komentářů k článku Google Closure Compiler: přepište můj kód!:

  1. Petr Staníček

    Dík za článek

    Ideální minifier jsem hledal zrovna minulý týden a skončil právě u Closure Compileru. Musím přiznat, že mě především překvapilo, že jako první procesor, z těch, co jsem kdy zkoušel, mi překompiloval poměně velký skript na první dobrou. Po zkušenostech třeba s YUI jsem čekal leccos, jen ne „Compilation was a success“ a výsledný skript stoprocentně funkční.

    A ani jsem nečekal, že s tím ten simple mód udělá nějaké velké zázraky, ale dokonce přejmenoval všechno, co šlo, takže výsledek považuju za opravdu slušně upravený: http://colorschemedesigner.com/js/colorschemedesigner.js – a s Advanced mode bych si tady vzhledem k povaze té knihovny moc neškrtl.

    1. blizzboz

      Re: Dík za článek

      moj CMS obsahuje javascriptovú cache ktorá obsahuje 3 druhy kompresie javascriptu JSMIN JSPACK a GZIP.

      vačšinou zapnem JSMIN a následne takto skomprimovaný skript ešte skomprimujem GZIPom, následne sa ku klientovi posiela jeden skomprimovaný js súbor, čo dáva najlepšie výsledky. Skúsim pridať aj Closure Compiler neviete či niekde neni dostupný ako Web Service?

      1. bauglir

        Re: Dík za článek

        http://code.google.com/closure/compiler/docs/api-ref.html

        pro PHP to bude něco takového:

        $data = array(
        ‚compilation_level‘ => ‚WHITESPACE_ONLY‘,
        ‚output_format‘ => ‚text‘,
        ‚output_info‘ => ‚compiled_code‘,
        );

        if ($fileUrl)
        $data[‚code_url‘] = $fileUrl; //url scriptu
        else
        $data[‚js_code‘] = $script; //text scriptu (ale je tam omezení na velikost)

        $script = file_get_conten­ts($file);
        $ch = curl_init(‚http://­closure-compiler.appspot­.com/compile‘);
        curl_setopt($ch, CURLOPT_RETUR­NTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_qu­ery($data));
        $output = curl_exec($ch); // výsledek kompilace
        curl_close($ch);

        ale je to nějaký pátek, co jsem to pouštěl naposledy

  2. Martin

    Pěkný článek, ale ...

    Pěkný článek, díky. Ale nepoužívejte prosím slovo „Ultimátní“, to je fakt hnus :)

    1. Martin MalýAutor příspěvku

      Re: Pěkný článek, ale ...

      Co vám na to odpovědět? Že někdy autor použije záměrně slangové, nepoužívané, nadužívané nebo hovorové slovo, aby dodal textu v daném místě určité emoční vyznění, podtón, a že dešifrování toho podtónu vyžaduje vnímavého čtenáře s bohatšími zkušenostmi? Ale to jistě víte z hodin českého jazyka. Chápu, že rozpoznat, jestli jde o záměrné použití, nebo autorovu neschopnost nalézt jiné slovo, vyžaduje cvik, ale to já neovlivním…

      1. jehovista

        Re: Pěkný článek, ale ...

        „slangové, nepoužívané, nadužívané nebo hovorové“
        A do ktere kategorie to slovo spada? Podle me do kategorie „ultimatne blbe“

    1. Martin MalýAutor příspěvku

      Re: Nejen komprese

      Dane, opět ti musím napsat, že jak ten odkaz, tak i zmínka o kontrole v článku jsou, a že v něm jsou od začátku! :) (viz minulá diskuse)

      1. Daniel Steigerwald

        Re: Nejen komprese

        Jo, ale tahle feature je tak moc killer, že si nezaslouží zapadnou. A tys jí nedal ani jeden malej titulek :-)

  3. anonymous

    Re: Google Closure Compiler: přepište můj kód!

    no ja si furt rikal co stim vsichni maj, ze takovej rozdil oproti yuicomp to neni a ejhle, ono se to musi volat

    java -jar compiler.jar –compilation_level ADVANCED_OPTI­MIZATIONS < all.js > min.js

    rozdil cca 15% u nekolikatisicoveho prumerneho jquery bastlu. na to ze to nema v sobe kompresor per se (ve vyslednem kodu _neni_ eval()) celkem feat.

  4. _

    Výsledkem kompilace bude tentokrát už smysluplnější kód: window.hello=function(a){alert("Hello, "+a)};

    To nie je celkom ekvivalentný kód.
    hello potom bude zmazateľná vlastnosť globálneho objektu, zatiaľ čo predtým bola hello nezmazateľná globálna premenná.
    Teda namiesto zrýchlenia a optimalizácie nastane spomalenie, lebo nepôjdu použiť optimalizácie, spoliehajúce sa na to, že je hello nezmazateľná globálna premenná.

    1. Martin MalýAutor příspěvku

      Re: Výsledkem kompilace bude tentokrát už smysluplnější kód: window.hello=function(a){alert("Hello, "+a)};

      Co přesně myslíte slovem „nesmazatelná“?

      1. _

        Re: Výsledkem kompilace bude tentokrát už smysluplnější kód: window.hello=function(a){alert("Hello, "+a)};

        Že nejde zmazať operátorom delete.
        Síce ide zmeniť jej hodnota na niečo úplne iné, teda ide premennú obsahujúcu funkciu prepísať napríklad na textový reťazec, no existovať vždy bude.

        1. Daniel Steigerwald

          Re: Výsledkem kompilace bude tentokrát už smysluplnější kód: window.hello=function(a){alert("Hello, "+a)};

          Někde došlo k šumu, compiler zrovna tohle ekvivalentně kompiluje: http://closure-compiler.appspot.com

          Nicméně, pár výjimek skutečně existuje, nicméně jsou popsané a tradeoff.

          1. _

            Re: Výsledkem kompilace bude tentokrát už smysluplnější kód: window.hello=function(a){alert("Hello, "+a)};

            Ale v tom kóde je tá funkcia aj volaná.
            Ja som argumentoval tým, že kód s funkciou, definovanou príkazom:
            window.hello=fun­ction(a){aler­t("Hello, "+a)};
            môže byť interpréterom alebo kompilátorom JS horšie optimalizovateľný, ako s funkciou, definovanou príkazom:
            function hello(name){a­lert('Hello, ' + name);}

  5. Milan Kubík

    Opravdu na toto řešení můžeme spoléhat?

    Opravdu můžeme spoléhat na toto řešení? Nezabere nám případné hledání chyby dalších x minut, hodin? Opravdu je rozdíl mezi několika stovkami řádků? Není snad náš vlastní kód lehčeji editovatelný? Co komentáře – kam se počnou? :-) Nečetl jsem diskusi, takže nevím zda-li se to neřešilo, osobně mám radši vlastní kód, vlastní komentáře a vlastní strukturu a návrh aplikace.

    1. _

      Re: Opravdu na toto řešení můžeme spoléhat?

      Predsa ti nič nebráni v tom, aby si používal neverejnú formu skriptu, s komentármi a dlhými názvami premenných, a verejnú – zminimalizovanú formu len ako výstup z tej neverejnej formy.

      1. Milan Kubík

        Re: Opravdu na toto řešení můžeme spoléhat?

        Jde mi především o funkčnost, nikoliv to, zda-li má kód 100 nebo 1000 řádků.

        1. Martin MalýAutor příspěvku

          Re: Opravdu na toto řešení můžeme spoléhat?

          Proto se to používá tak, jak píše kolega nade mnou: Kód si udržuju při vývoji komentovaný a plný testovacích volání. Při nahrání na server jej proženu compilerem, který vyhodí testovací výpisy, komentáře a zmenší jej na polovinu, na třetinu, a to bez vlivu na funkčnost. Každý, kdo platí za přenesený megabajt (majitelé mobilních zařízení vědí), poděkuje.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3359