Namespacing v javascriptu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
danik
Člen | 56
+
0
-

Helou again,

řešil jsem takhle zase jednou, jak mít hezčí a čistší javascript. Ono když jste UX/UI freak, potřebuje vaše sajta často javascriptů hodně, přecijen všechny ty animace a ajaxy a wigety a bůhvíco ještě se dohromady celkem nasčítaj..

No a už se mi nějak nelíbilo, jak moc se mi zaplňuje globální namespace – přecijen všechny ty jquery a tinymce a autogrowy a fancyboxy, ono se to nasčítá, a přidej pár svejch věcí a je zaděláno na bordel a tudíž je zaděláno i na malér..

A pak jsem objevil takovou pěknou vlastnost JS funkcí.. když mám var f = function(a,b,c) { ... }; a dám si f.toString();

A tak se zrodil _context.

_context je javascriptová utilitka, která umí dvě věci: načítat a spouštět javascripty. Ale umí toho vlastně (trochu) víc…

A tady už je odkaz na zdrojáček a tady na minifikovanou verzi s okomentovanými příklady.

CC-BY-SA :-)

danik
Člen | 56
+
0
-

@TODO:

  • bylo by fajn zachytávat výjimku ve funkci xhr(), která nastane v případě, že nelze vytvořit XmlHttpRequest objekt, a poskytnout alternativní řešení formou script tagu.
  • ještě je možné optimalizovat to načítání pomocí script tagů.. když přidáme script tag do dokumentu dynamicky, prohlížeč si příslušný skript stáhne vždycky asynchronně, nezávisle na nastavení property async – ale podle nastavení property async pak načtené skripty buď spustí okamžitě nezávisle na pořadí (async === true), nebo je spouští postupně tak, aby při provádění bylo zachováno pořadí, ve kterém byly vloženy do dokumentu (async === false). Takže když bude ve frontě za sebou víc skriptů, které se mají načítat pomocí script tagu (ať už proto, že jsou z jiné domény, nebo proto, že selhalo vytvoření XHR objektu), optimální je vkládat je do dokumentu s property async nastavenou na false a kompletaci posledního promise objektu navázat na onload posledního z nich..
Jan Tvrdík
Nette guru | 2595
+
0
-

@danik: Ač oceňuji tvoji snahu sdílet s ostatními tvá řešení, jsem nucen tě vyhodit, neboť to nijak netýká Nette. Obecné příspěvky týkající se tvorby webu doporučuji směřovat na Diskusi Jak psát web.