« 1 2
Autor Zpráva
joe
Profil
Chamurappi:
Jaké má výhody proti triviálnímu napojení externího JS?
Kromě toho, že tam mám funkce, co se mi vždy mohou hodit a nehodlám je do každého nového projektu odněkud dokopírovávat, psát znovu apod., zůstala myšlenka pořád stejně jednoduchá. Nějakým způsobem označit element a v rámci jeho kontextu (tzn. toho konkrétního elementu včetně všech jeho potomků) vyvolat nějakou funkci. Z toho mi tedy plynou výhody:

1. Při dívání se do HTML hned vidím, co se s daným elementem děje a která metoda nad ním bude volána (data-controller="test" ... bude volán TestController)
2. Soubory a jejich obsah dávají větší smysl, protože jsou rozdělené do menších celků.
3. Nikde nic neukládám do globálního prostoru kromě oné aplikace, ve které je všechno. To by mohl být ale asi taky problém (?), nicméně si nemyslím, že by u většiny (mých) případů jednoduchých webů byl.
4. Při nasazení aplikace se vezme obsah každého kontroleru a vloží se před app.run();*, tím vznikne jeden velký soubor a ušetřím požadavky na server.

Ve zkratce jde vlastně jen s použití jQuery o:
$("[data-controller]").each(function () {
    var element = $(this);
    application[element.attr("data-controller")].call(application, element);
});

Pokud máš nějaký vzorový příklad triviálního externího souboru, prosím pošli ho :-) Často se setkávám s "triviálními" externími soubory, které mají třeba 5 tisíc řádků a nahoře je jedna chlupatá závorka, co uvozuje událost DOM ready, pak spousta kódu a dole je další.


* Bohužel se mi nepodařilo najít řešení, kde by se app.run(); nemuselo volat jako poslední věc.
Chamurappi
Profil
Reaguji na joa:
Při dívání se do HTML hned vidím, co se s daným elementem děje
Kdybys tam měl <script src="test.js"></script>, tak to vidíš také.

Nikde nic neukládám do globálního prostoru kromě oné aplikace, ve které je všechno.
Externí obyčejný JS také nemusí nic ukládat do globálního prostoru.

Při nasazení aplikace se vezme obsah každého kontroleru a vloží se před app.run();
Takhle jde zmačkat i několik externích JS do jednoho.

tím vznikne jeden velký soubor a ušetřím požadavky na server
Pokud těch modulů jsou řádově desítky a stránek desetitisíce, tak se jeden velký soubor nevyplácí. Je otázka, jak moc se vyplácí v menších rozměrech, když se na dvaceti stránkách tahají i věci, které se používají třeba jen na jednom místě.
joe
Profil
Chamurappi:
Kdybys tam měl <script src="test.js"></script>, tak to vidíš také.
Ne úplně, v mém případě vidím, jaká funkce se bude volat, v případě přidání externího souboru ho musím zkoumat - samozřejmě neplatí, pokud si dopředu určím zápis externích souborů.

Externí obyčejný JS také nemusí nic ukládat do globálního prostoru.
A jak by to podle tebe mohlo v externích souborech vypadat?

Ta má "věc" je jen pro takový můj pořádek v kódu, jinak to je možné řešit tak, jak píšeš. Chtěl jsem jen udělat něco, co bude určitým způsobem vést lidi k tomu, aby to bylo přehledné, jednoduché a srozumitelné. Netvrdím, že to je dokonalé :-)
« 1 2

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: