IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 2. diel - Prvý objektová aplikácie v JavaScripte

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Patrik Pastor:11.4.2019 20:06

Mam mozna blby dotaz, ale jak je mysleno, ze v pripade deklarace skriptu v Hlavicce v html souboru bych musel reagovat na nacitani stranky?. Delal jsem predtim kurz na jQuery, a tam jsme vzdy deklarovali skript (jeden SRC na dokumentaci googlu s jQuery a druhy vlastni - lokalni skript) vzdy do hlaviccky, muj dotaz tedy je, co je ten zasadni rozdil nacitani skriptu v hlavicce a body. Diky za odpoved

 
Odpovedať
11.4.2019 20:06
Avatar
Odpovedá na Patrik Pastor
Michal Šmahel:11.4.2019 22:56

Ahoj, než začnu s podrobnějším vysvětlením, uvedu to na pravou míru. Jedná se buď o přístup vložení do hlavičky (<head>) (obvykle na konec) nebo na konec těla (<body>) stránky. Také prozradím, že se doporučuje spíše druhá varianta, tedy zvolit konec tagu <body>.

Oba přístupy v konečném důsledku udělají totéž - načtou daný skript ze souboru, popř. elementu <script>. Liší se však tím, kdy je skript načten.

Umístění do hlavičky
Link na soubor se skriptem nebo přímo element <script> s obsaženým zdrojovým kódem lze umístit do hlavičky (kamkoliv, doporučuje se však spíše nějak ke konci kvůli oddělení od zbytku věcí, které patří výhradně do hlavičky - meta tagy, linky pro napojení CSS souborů a další potřebné věci). Poté však dochází k obecně známému "problému" (ona je to však pouze vlastnost) - když se načte skript (a s tím všechny funkce, chceš-li metody), ještě není načten DOM (Document Object Model). To znamená, že skript ještě nemá k dispozici ani strukturu HTML kódu a logicky k ní proto nemůžeš přistupovat. Toto se dá vyřešit tím, že ve skriptu vyčkáš na načtení DOM (nebo celého obsahu, podle toho, co potřebuješ) - typická implementace je přes akce onload nebo DOMContentLoaded na okně (window).

Zjednodušený příklad implementace:

// Potřebuji počkat, až se vše načte, potom se může pokračovat v načítání skriptu
window.onload = () => {
    // Kód
}

// Stačí mi načtené DOM, obrázky, CSS a další externí zdroje nepotřebuji
document.addEventListener("DOMContentLoaded", () => {
    // Kód
});

Umístění na konec těla
V tomto případě link nebo přímo zdrojový kód v <script> vložíš před </body> (na konec těla). Poté odpadá nevýhoda z minulého řešení. HTML kód se načítá postupně, a když dojde na načtení tvých zdrojových kódů, již je zbytek stránky načten. Nemusíš tedy řešit implementaci akcí, které ti hlídají, zda je již vše načteno - prostě počítáš s tím, že je. Kromě toho je Javascript také oddělen od zbytku provázání na externí soubory (CSS, favicon, různé obrázky pro sdílení, ...) a má své vyhrazené místo jen pro sebe. V tomto případě se ti nestane, že Javascript "hledáš" - vždy je na konci HTML kódu.

Javascript není můj primární jazyk, takže prosím o omluvení stručnosti a menší obsáhlosti mého komentáře. Vím, že jsou tu členové, kteří s Javascriptem pracují o mnoho více a jistě mě rádi doplní.

Odpovedať
11.4.2019 22:56
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Fero M
Člen
Avatar
Fero M:12.6.2019 23:34

Ahoj, nejde mi vůbec spustit kod OOP, ani ze souboru "ahoj_oop.zip".
Kde může být chyba? Nevypisují se žádné chybové hlášky, jen když kód spustim tak se mi objeví jen bílá stránka....

 
Odpovedať
12.6.2019 23:34
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Fero M
David Hartinger:8.5.2020 12:18

Protože to musíš nejdřív rozbalit.

Odpovedať
8.5.2020 12:18
New kid back on the block with a R.I.P
Avatar
Odpovedá na Fero M
Miroslav Lalík:28.5.2020 15:17

Pro ty kterým tohle nefunguje musíte nejdřív v html souboru načíst script kde se definuje třída a potom až script pro obsluhu.

Odpovedať
28.5.2020 15:17
Všechno jde když znáš ty správný lidi
Avatar
Milan Turyna
Tvůrce
Avatar
Odpovedá na Fero M
Milan Turyna:28.5.2020 22:05

Bylo by dobre si zjistit co vlastne OOP je, abys ho mohl provozovat naimportuj tridy a potom ve svem skriptu vytvor instanci. Napriklad

var Player = new Player()
Odpovedať
28.5.2020 22:05
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Jan Jedlička:4.6.2020 17:07

Omlouvam se, ze se tak blbe ptam. Pri ukladani souboru musim pouzit pro nazev prvni velke pismeno? Chapu u vytvareni objektu (new Neco).

 
Odpovedať
4.6.2020 17:07
Avatar
Milan Turyna
Tvůrce
Avatar
Odpovedá na Jan Jedlička
Milan Turyna:5.6.2020 6:06

Nemusíš, ale můžeš, já to dělám přijde mi to přehlednější. To stejné i u třídy, tam si taky myslím můžeš zvolit jestli začneš velkým nebo malým písmenem.

Odpovedať
5.6.2020 6:06
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Odpovedá na Milan Turyna
Jan Jedlička:5.6.2020 10:13

takze je to hlavne pro prehlednost?

 
Odpovedať
5.6.2020 10:13
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:5.6.2020 10:28

Ano v Javascriptu to je pouze pro přehlednost.

Odpovedať
5.6.2020 10:28
Řeš pouze to, co dokážeš ovlivnit.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!