DVOP WBB
Bc. Matěj Cajthaml — SSPŠ
©
Divné věci v JavaScriptu vytváří autor a používá zakázané konstrukce jazyka.
JavaScript nemá nic společného s Javou.
JavaScript na serveru / v konzolové řádce
V Node.js máme k dispozici vše z našeho známého JS (bez DOMu a spojených věcí) a dokonce věci na více (práce se soubory, ...).
node
package.json
JS kód pomocí Node.js spouštíme v příkazové řádce pomocí příkazu node soubor.js
.
script
jako poslední blok před
ukončovacím tagem bodyscript
a atributu
src
Za každým příkazem používáme středník. Že?
Během běhu můžeme měnit proměnným datový typ i jejich hodnotu.
Textovou hodnotu píšeme do uvozovek.
""
Hodnota undefined
říká, že daná proměnná nemá určenou hodnotu.
Co říká hodnota null
?
Pravidost se v JS reprezentuje boolean hodnoty true
a false
.
+
.length
charAt(k)
na k-té pozici.includes(str)
.toUpperCase()
.toLowerCase()
==
+
), odečítat (-
), dělit
(/
) a násobit (*
)==
, <
, >
,
<=
, >=
if
else if
— nebo a pokud (lze používat neomezeně krát)
else
— nebo, poslední část blokuPomocí console
přistupujeme do konzole (jako v konz. řádce tak na webu).
Pomocí console.log(smth)
vypíšeme něco do konzole. Existují další metody?
===
==
!==
a !=
"2021" === 2021
?"2021" === "2021"
?"2021" == "2021"
?"2021" == 2021
?>
<
<=
>=
&&
— a zároveň||
— a nebo!
— negaceZávorky usměrnují pořadí operací.
tzv. tenární operátor
switch
chytřejší podmínky
switch, case, break, default
switch
while
while
for
for
process.argv
find
a filter
map
Jak funguje pomocná metoda pro pole redukce
— reduce
?
černá krabička
function
, return
Math
setTimeout
setInterval
Návratovou hodnotou metod setTimeout a setInterval je číslo daného zpoždění/opakování. Oba dva můžeme zastavit pomocí tohoto čísla — jak?
Můžeme mít v objektu funkci?
Jak se taková funkce bude volat?
Třídy jsou tedy takové objekty, ne? Proč tedy třídy používáme?
Třídy nám zaručí jakousi konzistenci dat.
Kód rozdělujeme do více celků, které se lépe zpracovávájí.
Nemusíme opakovat ten samý kód.
Co to znamená promise?
Na co na webových stránkách musíme čekat v kódu?
then
Jak si myslíte, že bude implementovaná funkce generateCatName
?
Vytvořte funkci, která Vám vrátí promise, která po 1 vteřině vrátí objekt s náhodným jménem kočky, náhodným věkem kočky a náhodnou barvou.
Funkci zavolejte a vypište obsah objektu, který Vám přijde.
Někdy se může stát, že se operace neprovede.
Co se závislostmi Promise stane?
.catch
, která zachytí všechny chyby.then
po zavoláni .catch
se zavolají i
přes chybu.catch
až na konec
.then
budou volány v přesném pořadí a až
potom (a jen když) bude předchozí funkce úspěšně splněna.then
budou zavolány i po tom, co byly
přidány již na vyřešenou promise.all
— zavolání všech najednou a najednou získá jejich data.race
— zavolání všech najednou, vrátí první
Již máme vytvořenou funkci s promise na vrácení náhodné kočky.
Nyní pomocí promise udělejte, že se vrátí jedna kočka a po získání kočky se získá druha kočka (bude trvat sekundu) a takto desetkrát.
syntax sugar
pro asynchronní funkceasync
a await
async
await
await
https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html
Proč bychom potřebovali propojovat soubory?
require(path)
data.js
require.js
Zjistěte si, jak se moderně importují a exportují části z JS souborů
Co je to Node.js?
package.json
npm init
npm init
package.json
npm run compile
npm run run
npm install <jmeno balíčku>
node_modules
, obsahující dané knihovnypackage.json
— bude obsahovat knihovnu a její verzipackage-lock.json
, který obsahuje přesnější informace o nainstalovaných knihovnáchSoubor package-lock.json
a node_modules
nikdy nedáváme na verzovací systém (git).
Každý balíček / knihovna se chová různě. Vždy je potřeba číst dokumentaci.
Prohledejte internet a nalezněte zajimavé (možná i zvláštní) npm balíčky.