Autor Zpráva
joe
Profil
Ahoj,

najde se někdo, kdo používá Google Closure? Opravdu se vyplatí používat tuto knihovnu? Trochu jsem plánoval její používání na projektech, po vyzkoušení se mi do toho moc nechce. Nesmírnou výhodou sice je, že dokáže vyzobat jen používaný kód, na který pak provede obfuskaci, ale opravdu to stojí za to? Nevím zatím o žádném IDE zdarma, které by s Google Closure pracovalo.
Vývoj v té knihovně mi přijde jako cesta zpátky, protože vývoj v ní zabere daleko víc času, než třeba v oblíbené jQuery knihovně.
1Pupik1989
Profil
Jde asi jen o zvyk. Zápis je sice delší, za to výsledná rychlost je pak k nezaplacení. Hlavní je metoda require, kterou jsem se sám inspiroval. Potom ten kód není tolik nafouklý. Navíc umí od obyčejné manipulace s DOMem, až po WebGL.

Sice jsem zůstal nakonec jen u nativních funkcí jsvascriptu, nicméně Closure je hodně dobrá. Většinu času ale bohužel skončí u hledání v dokumentaci.
joe
Profil
Bezpochyb je to dobrá knihovna a nabízí plno možností, hledání v dokumentaci je nutností u každé (nové) knihovny. IDE mi nenabízí jednotlivé funkce (nejde to nějak nastavit? Používám NetBeans). Funkce require musím psát ručně a nevloží se automaticky jako například v Javě. Pak je všechno nutnost kompilovat, závislosti, šablony, apod., to vyřeší různé nastavení watcherů, to jsem ještě nezkoušel. Ale proč jednoduše neposkytnou i dobrý návod na to, jak to efektivně použít? Ta knihovna existuje dost dlouho, pochybuju o tom, že by to v Googlu psali v Notepadu a neměli to všechno nějak pořádně zautomatizované :)
joe
Profil
1Pupik1989:
Ty máš nějaký systém automatizace?
1Pupik1989
Profil
Jak zautomatizované? Jako našeptávání?
joe
Profil
Ne, myslím celé workflow pro vývoj v Closure, používáš Grunt na automatickou kompilaci při každé změně v souboru? Nebo to snad provádíš ručně? Myslím, že kompilování, například při vytvoření nové třídy chvilku trvá a není to hned. Možná se tím ztratí až moc času, kterého je vždycky škoda.
A při psaní, pokud chceš použít třídu z knihovny, myslíš na to, že musíš přidat řádek s require?
1Pupik1989
Profil
Ano, require jsem psal manuálně. Nicméně google na to má kompilátor v pythonu, který by měl i tyto řádky doplnit.

https://developers.google.com/closure/library/docs/closurebuilder?hl=cs

Jak jsem psal, extra jsem to nezkoušel a zůstal u nativních funkcí. Metody na manipulaci s DOM objekty moc nepoužívám. Na selektory mám svojí mikro knihovničku.
joe
Profil
Nevím o ničem, co by ty povinné řádky doplňovalo, právě na základě řádků s provide a require tento Google Builder vygeneruje soubor se závislostmi (deps.js). Tím ti ruční práce moc neubyde.

A jak tedy řešíš kompilaci, to jsi zkoušel? Nepředpokládám, že tedy všechno píšeš do jednoho souboru, ale do více, kde máš jmenné prostory.
1Pupik1989
Profil
Můžeš si napsat něco jako je autoload v php. Něco takovèho jsem tu už taky řešil. Nejsem si ani jist jestli jsem vůbec něco kompiloval, možná až kompletní projekt.

Zápis jsem si trošku napodobil javě, čili import a package a soubory roztřídil do adresářů taktéž jako v javě. Nejspíš ale něco takového je hotové.
joe
Profil
Nevím jak bych napsal něco podobného, jako autoload v Closure, protože mám pocit, že by to nefungovalo po kompilaci. Closure je dobrý především tím, že vytáhne jenom ty funkce, které se skutečně volají, což bych porušil, kdybych si natahoval vlastní soubory. Protože výsledkem Builderu je soubor, který obsahuje kompletně celou aplikaci.


Je tu někdo, kdo používá Google Closure v nějakém pokročilejším stádiu? :-)
Anonymek
Profil *
Jestli ti jde hlavně o automatizaci, tak se určitě podívej na Grunt, jak jsi sám psal. Doporučuji se podívat jak je to řešené tady. Je to trochu komplikovanější + potřebuješ ke Gruntu pár externích knihoven, ale když si to projdeš a použiješ jen to co doopravdy potřebuješ, tak by to mělo být v pohodě. S Closurem to práci hodně urychlí ;-) A jen tak pro info, kompilovat to nemá cenu dokud to není doopravdy potřeba (Kontrolovat chyby, dát to do production), když to akorát testuješ při vývoji, tak by tě to zdržovalo.
joe
Profil
Na Este jsem koukal, ale musel bych se tím sám prokousat, nikde moc není napsané jak to používat, na demo jsem se nedíval. a nejbližších chvílí se k tomu asi nedostanu. Grunt používám, hledal jsem spíš jiné řešení, protože práce s příkazovou řádkou se mi moc nelíbí, její výstup není zrovna moc přehledný a hlavně na mě nevyskočí žádné okýnko - "chyba".
Máš pravdu, nesprávně jsem to napsal, myslel jsem generování těch závislostí (taky to chvilku trvá), které jsou potřeba, aby to fungovalo ve vývojovém módu. A když se k tomu přidá ještě vygenerování CSS, už to je nějaká chvilka.
Pořád se rozhoduju, jestli se cestou s Google Closure vydat, psaní kódu je celkem dlouhé a asi není nástroje, který by Closure podporoval. Našel jsem akorát nějaké placené IDE, které je pro GC vytvořeno.
Anonymek
Profil *
Pokud by ti šlo o IDE, tak bych ti doporučil Sublime Text, teda není to úplně IDE, ale pro vývoj javascriptu ja fakt pohodlné. Není tam autocomplete, ale rychlé procházení souborů ho docela jednoduše nahradí (Teda já jsem si na to po nějaké době zvykl i přesto, že jsem doposud vždy používal autocomplete).
Asi jsem to taky špatně napsal, nedoporučuji ti pro začátek používat celé este.js, myslel jsem tím akorát aby ses podíval na ty rozšíření u Gruntu, které právě zajišťují docela dost věcí pro rychlejší vývoj. Jako například, aby se ti deps.js generoval pouze kdy je to potřeba (Při spuštění gruntu a poté když přidáš nový soubor), aby se kompiloval coffeescript, šablony, styly jenom při spuštění gruntu a při změně souboru (Kompiluje se právě jeden soubor a ne všechny). Díky tomu je vývoj dost rychlý i na mém nevýkoném počítači (Samozřejmě musím asi minutu čekat na spuštění gruntu, ale pak už to je v pohodě, většinou v řádu ms).
Ještě jsem se díval jestli neexistuje nějaké GUI a ono existuje, ale mě se osobně moc nelíbí. Pořád tam máš konzolový výpis a chyby to nehlásí (To by sis asi musel dodělat a ani by to nebylo moc těžké, ale je fakt že by to asi byla ztráta času).
Jan Tvrdík
Profil
joe:
Vývoj v té knihovně mi přijde jako cesta zpátky, protože vývoj v ní zabere daleko víc času, než třeba v oblíbené jQuery knihovně.
Možná neřešíš dostatečně složité problémy, abys ocenil věci jako statické typování, vyšší runtime rychlost a lepší návrh architektury.
joe
Profil
Jan Tvrdík:
Knihovna sama o sobě je určitě moc dobrá, osobně jsem prozkoumal lehce kódy jen základních funkcní. Všechno ostatní (+ to, na co jsem ještě nepřišel, že umí) je velká výhoda, i ty, které jsi napsal. Myslel jsem to z pohledu efektivnosti ne algoritmu (kódu uvnitř), ale vývoje. Například pokud se píše v Javě, každé chytré IDE mi automaticky nabízí importy použitých balíků v kódu v podobě hintů a napovídá mi. To se ale při psaní a využívání Closure neděje a na všechno tak člověk musí myslet sám. Pak se pokusí zkompilovat kód a v tu chvíli mu dojde, že támhle ještě zapomněl přidat jeden require, aby to kompilací prošlo - a místo rychlého psaní to nutí člověka myslet na věci, které by jinde (např. s jQuery) dělat nemusel, ale za cenu výkonu.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: