Podcast
Questions and Answers
Kateri od naslednjih pristopov najbolj natančno opisuje, kako Node.js obravnava sočasnost glede na enonitno naravo?
Kateri od naslednjih pristopov najbolj natančno opisuje, kako Node.js obravnava sočasnost glede na enonitno naravo?
- Node.js uporablja več niti za vzporedno izvajanje operacij, s čimer se izogne blokiranju glavne niti.
- Node.js kompenzira enonitno naravo z uporabo zanke dogodkov, ki omogoča asinhrono izvajanje in učinkovito obravnavo I/O operacij brez blokiranja niti. (correct)
- Node.js se izogne težavam z blokiranjem niti z uporabo povratnih klicev, ki se izvajajo vzporedno v ločenih procesih.
- Node.js je pretežno odvisen od notranje podpore operacijskega sistema za vzporedno izvajanje, pri čemer distribuira operacije na več jeder procesorja.
Ali je obravnavanje napak v Node.js obvezno in kritično, saj lahko neobravnavane napake povzročijo zaustavitev aplikacije.
Ali je obravnavanje napak v Node.js obvezno in kritično, saj lahko neobravnavane napake povzročijo zaustavitev aplikacije.
True (A)
Razložite koncepte oddajnikov in poslušalcev v kontekstu Node.js in kako prispevajo k arhitekturi, ki temelji na dogodkih.
Razložite koncepte oddajnikov in poslušalcev v kontekstu Node.js in kako prispevajo k arhitekturi, ki temelji na dogodkih.
Oddajniki (emitters) so objekti, ki sprožijo dogodek, medtem ko so poslušalci registrirani za poslušanje teh dogodkov in ustrezno reagirajo. To omogoča arhitekturo, ki temelji na dogodkih, kjer komponente reagirajo na dogodke, ne da bi bile neposredno povezane, kar poveča prilagodljivost in razširljivost.
V Node.js je ključna razlika v obsegu spremenljivk deklariranih z var
v primerjavi s spremenljivkami, deklariranimi z const
ali let
, kjer imajo prve funkcijski obseg ali globalni obseg (če so deklarirane zunaj funkcije), medtem ko imajo slednje ______.
V Node.js je ključna razlika v obsegu spremenljivk deklariranih z var
v primerjavi s spremenljivkami, deklariranimi z const
ali let
, kjer imajo prve funkcijski obseg ali globalni obseg (če so deklarirane zunaj funkcije), medtem ko imajo slednje ______.
Povežite naslednje elemente sklada MERN z njihovimi specifičnimi odgovornostmi v arhitekturi spletne aplikacije:
Povežite naslednje elemente sklada MERN z njihovimi specifičnimi odgovornostmi v arhitekturi spletne aplikacije:
Katera izjava najbolje opisuje namen modula fs
v Node.js?
Katera izjava najbolje opisuje namen modula fs
v Node.js?
Ali je funkcija require()
v Node.js sinhrona operacija, ki blokira izvajanje kode, dokler se modul ne naloži in parsira?
Ali je funkcija require()
v Node.js sinhrona operacija, ki blokira izvajanje kode, dokler se modul ne naloži in parsira?
Opišite prednosti in slabosti uporabe sinhronih in asinhronih metod v modulu fs
Node.js, pri čemer izpostavite scenarije, kjer je ena bolj primerna od druge.
Opišite prednosti in slabosti uporabe sinhronih in asinhronih metod v modulu fs
Node.js, pri čemer izpostavite scenarije, kjer je ena bolj primerna od druge.
V kontekstu Node.js in upravljanja odvisnosti s sistemom NPM, datoteka package-lock.json
zagotavlja ______ v tem, da zagotavlja ponovljivo gradnjo z natančnim beleženjem verzij vsake odvisnosti, vključno s prehodnimi odvisnostmi.
V kontekstu Node.js in upravljanja odvisnosti s sistemom NPM, datoteka package-lock.json
zagotavlja ______ v tem, da zagotavlja ponovljivo gradnjo z natančnim beleženjem verzij vsake odvisnosti, vključno s prehodnimi odvisnostmi.
Povežite naslednje koncepte z njihovimi ustreznimi definicijami v Node.js:
Povežite naslednje koncepte z njihovimi ustreznimi definicijami v Node.js:
Katera od naslednjih izjav natančneje opisuje uporabo process
objekta v Node.js?
Katera od naslednjih izjav natančneje opisuje uporabo process
objekta v Node.js?
Ali je mogoče z modulom http
v Node.js ustvariti tako strežnik kot tudi odjemalca, ki lahko pošilja HTTP zahteve?
Ali je mogoče z modulom http
v Node.js ustvariti tako strežnik kot tudi odjemalca, ki lahko pošilja HTTP zahteve?
Opišite varnostne posledice izvajanja npm install
brez skrbnega pregleda package.json
in morebitnih skript v njem in kako lahko napadalci izkoristijo to za vnos zlonamerne kode v projekt.
Opišite varnostne posledice izvajanja npm install
brez skrbnega pregleda package.json
in morebitnih skript v njem in kako lahko napadalci izkoristijo to za vnos zlonamerne kode v projekt.
Pri implementaciji RESTful API-ja z Node.js uporabljamo middleware funkcije v Express.js za obdelavo zahtev in odgovorov. Eden pogostih primerov je uporaba middleware za ______, kjer se vhodni podatki validirajo in očistijo preden se uporabijo v aplikaciji, s čimer se preprečuje SQL injection in XSS napadi.
Pri implementaciji RESTful API-ja z Node.js uporabljamo middleware funkcije v Express.js za obdelavo zahtev in odgovorov. Eden pogostih primerov je uporaba middleware za ______, kjer se vhodni podatki validirajo in očistijo preden se uporabijo v aplikaciji, s čimer se preprečuje SQL injection in XSS napadi.
Povežite različne vrste tokov (streams) v Node.js z njihovimi specifičnimi primeri uporabe:
Povežite različne vrste tokov (streams) v Node.js z njihovimi specifičnimi primeri uporabe:
Kateri od naslednjih ukazov najbolj natančno opisuje, kako upravljati okoljske spremenljivke v Node.js aplikaciji, ki se izvaja v produkcijskem okolju?
Kateri od naslednjih ukazov najbolj natančno opisuje, kako upravljati okoljske spremenljivke v Node.js aplikaciji, ki se izvaja v produkcijskem okolju?
Ali uporaba npm audit
v Node.js projektu zagotavlja popolno varnost in odpravi vsa tveganja, povezana z ranljivostmi v odvisnostih?
Ali uporaba npm audit
v Node.js projektu zagotavlja popolno varnost in odpravi vsa tveganja, povezana z ranljivostmi v odvisnostih?
Razložite pojem »callback hell« v Node.js in predstavite strategije, ki se lahko uporabijo za pisanje bolj berljive in vzdrževane asinhrone kode ter se izogniti težavam, povezanim s prekomernim gnezdenjem povratnih klicev.
Razložite pojem »callback hell« v Node.js in predstavite strategije, ki se lahko uporabijo za pisanje bolj berljive in vzdrževane asinhrone kode ter se izogniti težavam, povezanim s prekomernim gnezdenjem povratnih klicev.
V Node.js je ključna konvencija pri obravnavi napak v asinhronih funkcijah uporaba povratnih klicev, kjer je prvi argument povratnega klica rezerviran za objekt ______, kar omogoča enostavno preverjanje, ali se je med izvajanjem funkcije pojavila napaka.
V Node.js je ključna konvencija pri obravnavi napak v asinhronih funkcijah uporaba povratnih klicev, kjer je prvi argument povratnega klica rezerviran za objekt ______, kar omogoča enostavno preverjanje, ali se je med izvajanjem funkcije pojavila napaka.
Povežite naslednje HTTP metode z njihovimi tipičnimi funkcijami v RESTful API-jih:
Povežite naslednje HTTP metode z njihovimi tipičnimi funkcijami v RESTful API-jih:
Katera izmed naslednjih trditev najbolj natančno opisuje razliko med spawn
in fork
metodami modula child_process
v Node.js?
Katera izmed naslednjih trditev najbolj natančno opisuje razliko med spawn
in fork
metodami modula child_process
v Node.js?
Ali je pri uporabi Node.js modula cluster
mogoče izboljšati performanse aplikacije izključno z dodajanjem več delavskih procesov, brez potrebe po optimizaciji kode ali konfiguraciji operacijskega sistema?
Ali je pri uporabi Node.js modula cluster
mogoče izboljšati performanse aplikacije izključno z dodajanjem več delavskih procesov, brez potrebe po optimizaciji kode ali konfiguraciji operacijskega sistema?
Opišite ključne razlike med uporabo WebSocketov in standardnih HTTP zahtev za implementacijo komunikacije v realnem času med odjemalcem in Node.js strežnikom ter pojasnite, v katerih primerih je WebSocket bolj primeren.
Opišite ključne razlike med uporabo WebSocketov in standardnih HTTP zahtev za implementacijo komunikacije v realnem času med odjemalcem in Node.js strežnikom ter pojasnite, v katerih primerih je WebSocket bolj primeren.
Pri uporabi arhitekture mikrostoritve z Node.js, je ključnega pomena implementirati dobro strategijo za ______ med storitvami, kot sta sinhrona komunikacija (npr. preko REST API-jev) ali asinhrona komunikacija (npr. preko message queue sistemov kot je RabbitMQ ali Kafka).
Pri uporabi arhitekture mikrostoritve z Node.js, je ključnega pomena implementirati dobro strategijo za ______ med storitvami, kot sta sinhrona komunikacija (npr. preko REST API-jev) ali asinhrona komunikacija (npr. preko message queue sistemov kot je RabbitMQ ali Kafka).
Povežite naslednje koncepte varnosti spletnih aplikacij z ustreznimi strategijami za njihovo preprečevanje v Node.js:
Povežite naslednje koncepte varnosti spletnih aplikacij z ustreznimi strategijami za njihovo preprečevanje v Node.js:
Katera izmed naslednjih izjav najbolj pravilno opisuje, kako Node.js obravnava upravljanje z pomnilnikom v primerjavi z jeziki kot je C++?
Katera izmed naslednjih izjav najbolj pravilno opisuje, kako Node.js obravnava upravljanje z pomnilnikom v primerjavi z jeziki kot je C++?
Pri uporabi modula cluster
v Node.js, ali delavski procesi delijo isti pomnilniški prostor kot glavni proces?
Pri uporabi modula cluster
v Node.js, ali delavski procesi delijo isti pomnilniški prostor kot glavni proces?
Kako bi implementirali avtentikacijo z uporabo JWT (JSON Web Tokens) v Node.js Express aplikaciji, pri čemer bi upoštevali varno shranjevanje občutljivih podatkov (npr. skrivnega ključa) in preprečevanje CSRF napadov?
Kako bi implementirali avtentikacijo z uporabo JWT (JSON Web Tokens) v Node.js Express aplikaciji, pri čemer bi upoštevali varno shranjevanje občutljivih podatkov (npr. skrivnega ključa) in preprečevanje CSRF napadov?
Pri implementaciji varnostnih ukrepov v Node.js aplikaciji, je priporočljivo uporabljati HTTPS za ______ podatkov med odjemalcem in strežnikom, s čimer se preprečuje prisluškovanje in manipulacija s podatki med prenosom(»man-in-the-middle« napadi).
Pri implementaciji varnostnih ukrepov v Node.js aplikaciji, je priporočljivo uporabljati HTTPS za ______ podatkov med odjemalcem in strežnikom, s čimer se preprečuje prisluškovanje in manipulacija s podatki med prenosom(»man-in-the-middle« napadi).
Povežite naslednje načine za optimizacijo delovanja Node.js aplikacij z njihovimi potencialnimi prednostmi:
Povežite naslednje načine za optimizacijo delovanja Node.js aplikacij z njihovimi potencialnimi prednostmi:
Kateri od naslednjih pristopov najbolj neposredno izboljša sposobnost Node.js aplikacije za obravnavo velikega števila sočasnih povezav?
Kateri od naslednjih pristopov najbolj neposredno izboljša sposobnost Node.js aplikacije za obravnavo velikega števila sočasnih povezav?
Ali je uporaba globalnih spremenljivk v Node.js aplikacijah vedno slaba praksa in se ji je treba izogniti za vsako ceno?
Ali je uporaba globalnih spremenljivk v Node.js aplikacijah vedno slaba praksa in se ji je treba izogniti za vsako ceno?
Razložite, kako lahko z uporabo Dockerja izboljšate ponovljivost in prenosljivost Node.js aplikacije med različnimi okolji (razvojno, testno, produkcijsko).
Razložite, kako lahko z uporabo Dockerja izboljšate ponovljivost in prenosljivost Node.js aplikacije med različnimi okolji (razvojno, testno, produkcijsko).
Pri uporabi zanke dogodkov v Node.js, funkcija setImmediate()
omogoča, da se callback izvede po trenutnem ______ zanke dogodkov, s čimer se omogoča izvajanje nalog, ki niso časovno kritične, brez blokiranja glavne niti.
Pri uporabi zanke dogodkov v Node.js, funkcija setImmediate()
omogoča, da se callback izvede po trenutnem ______ zanke dogodkov, s čimer se omogoča izvajanje nalog, ki niso časovno kritične, brez blokiranja glavne niti.
Povežite naslednje možnosti za shranjevanje podatkov v Node.js z njihovimi tipičnimi primeri uporabe:
Povežite naslednje možnosti za shranjevanje podatkov v Node.js z njihovimi tipičnimi primeri uporabe:
Flashcards
Celostna razvojna arhitektura
Celostna razvojna arhitektura
Razvojna arhitektura, ki združuje uporabo orodij za gradnjo spletne aplikacije, delujoča nad čelnim in zalednim delom sistema.
"Full stack" razvijalec
"Full stack" razvijalec
Razvijalec, ki ima znanje iz razvoja čelnega in zalednega dela sistema, baz podatkov, DevOps in upravljanja infrastrukture.
MERN stack
MERN stack
Brezplačen in odprtokoden paket programske opreme za izdelavo dinamičnih spletnih aplikacij v JavaScript.
React (MERN)
React (MERN)
Signup and view all the flashcards
Node.js (MERN)
Node.js (MERN)
Signup and view all the flashcards
Express (MERN)
Express (MERN)
Signup and view all the flashcards
MongoDB (MERN)
MongoDB (MERN)
Signup and view all the flashcards
Spletni strežnik
Spletni strežnik
Signup and view all the flashcards
Node.js
Node.js
Signup and view all the flashcards
Node.js obravnava zahteve
Node.js obravnava zahteve
Signup and view all the flashcards
Odstranjeno v Node.js
Odstranjeno v Node.js
Signup and view all the flashcards
Dodano v Node.js
Dodano v Node.js
Signup and view all the flashcards
REPL okolje
REPL okolje
Signup and view all the flashcards
Standardni (core) moduli v Node.js
Standardni (core) moduli v Node.js
Signup and view all the flashcards
Kako importiramo module
Kako importiramo module
Signup and view all the flashcards
Drugi moduli v Node.js
Drugi moduli v Node.js
Signup and view all the flashcards
Package.json
Package.json
Signup and view all the flashcards
Modul fs
Modul fs
Signup and view all the flashcards
Povratni klic (callback)
Povratni klic (callback)
Signup and view all the flashcards
Poslušalec
Poslušalec
Signup and view all the flashcards
Oddajnik
Oddajnik
Signup and view all the flashcards
Tokovi (streams)
Tokovi (streams)
Signup and view all the flashcards
Kako uporabljati modul http
Kako uporabljati modul http
Signup and view all the flashcards
Spletni API
Spletni API
Signup and view all the flashcards
Nodemon
Nodemon
Signup and view all the flashcards
Skaliranje aplikacije
Skaliranje aplikacije
Signup and view all the flashcards
Study Notes
Prejšnja predavanja
- Pregledali so se spletni ogrodji in vzorec MVC.
- Pojasnjeni so bili deli vzorca MVC: Usmernik, Kontroler, Pogled in Model.
- Prikazan je bil demo vzorca MVC na aplikaciji Notes.
- Obravnavana je bila varnost in saniranje podatkov.
Povzetek trenutnega predavanja
- Predstavljena je celostna arhitektura spletnih aplikacij.
- Govorili so o skladih rešitev, s poudarkom na MERN skladu.
- Opisane so razlike med čelnimi in zalednimi deli sistema.
- Razložili so Node.js s poudarkom na namestitvah, posodabljanju, modulih in osnovnih konceptih.
Arhitektura spletnih aplikacij
- Uporabniki interagirajo z vmesnikom (Frontend), ki je napisan v HTML, CSS in JavaScript.
- Frontend komunicira z zaledjem (Backend) preko zahtev in odzivov.
- Zaledje vsebuje aplikacijsko logiko (PHP, JavaScript, Python, Java), spletni strežnik, datotečni sistem (HTML, CSS, slike) in bazo podatkov (MySQL, PostgresSQL, MariaDB).
Celostna arhitektura spletnih aplikacij
- Celostna razvojna arhitektura združuje različna orodja za izgradnjo spletne aplikacije.
- Celostna arhitektura deluje nad čelnim (front-end) in zalednim (back-end) delom sistema.
- „Full stack" razvijalec ima znanje iz razvoja čelnega dela sistema (npr. Angular, ReactJS), zalednega dela sistema (npr. Java, JavaScript, Python, Node.js) in baz podatkov (MongoDB, MySQL).
- Razume tudi DevOps (avtomatizacija procesa razvoja, testiranja, namestitve) ter upravljanje infrastrukture (prenosljivost med sistemi, zabojniki aplikacij, npr. Docker, MS Azure).
Sklad rešitev MERN
- MERN stack (Mongo – Express – React – Node.js) je brezplačen in odprtokoden paket programske opreme za izdelavo dinamičnih spletnih aplikacij.
- Aplikacije zapisane s skladom rešitev MERN se razvijejo v jeziku JavaScript (ter TypeScript), tako na strani strežnika kot za odjemalca.
Alternative skladu rešitev MERN
- LAMP (Linux - Apache - MySQL – Php)
- MEAN (MongoDB - Express – Angular - Node.js)
- MERNG (MERN + GraphQL); GraphQL je poizvedbeni jezik za API (Facebook, 2015)
- PERN (PostgreSQL – Express - React - Node.js)
Sklad rešitev MERN - Naloge in odgovornosti posameznih komponent
- React obravnava uporabniške zahteve.
- Node.js razpozna zahteve.
- Express povprašuje po podatkih.
- MongoDB zagotavlja podatke.
Čelni in zaledni del aplikacije
- Čelni del (Frontend) se implementira z Document Object Model (DOM) in uporablja MVC, Single page application, Material design.
- Čelni del uporablja tehnologije kot so HTML, CSS, JavaScript, Angular/React/Vue.
- Zaledni del (Backend) uporablja spletni strežnik za piškotke/seye (upravljanje s stanjem aplikacije), procesiranje HTTP zahtev, API/REST,... ter DBMS za CRUD, transakcije.
- Zaledni del se implementira z Node.js/Apache, MongoDB/PostgresSQL.
Node.js
- Node.js je zaledni del sistema, ki razpoznava zahteve in vrne odgovor.
Spletni strežnik
- Spletni strežnik (angl. web server) je program, ki sprejema HTTP zahteve od odjemalca (spletni brskalnik) in jim vrne HTTP odgovor (običajno v obliki HTML).
- Spletni strežnik preusmeri naloge na aplikacijski strežnik (angl. application server), ki pridobi podatke iz baze podatkov in opravi logiko potrebno za sestavo odgovora.
Node.js - splošno
- Node.js izvaja JavaScript kodo na strani spletnega strežnika.
- Je odprtokodno ogrodje, platformno neodvisno okolje, zasnovano na Chrome izvajalnem okolju JavaScript (V8 Engine).
- Node.js uporablja neblokiren I/O model, ki temelji na dogodkih, zato je lahek in učinkovit za podatkovno intenzivne aplikacije v realnem času, ki se izvajajo v porazdeljenih napravah.
- Leta 2009 ga je ustvaril Ryan Dahl, kasneje se je razvil NPM.
- Zahteve se obravnavajo v eni niti (single threaded technology).
- Blokirne operacije se izvajajo v več nitih ter uporabljajo povratne klice (callbacks).
- Node.js uporablja JavaScript v brskalniku in strežniku.
- V Node.js ni DOM-a.
- Dodani so dogodki in čakalna vrsta dogodkov, vse teče iz zanke dogodkov.
- Omogočen je vmesnik za operacije OS (datoteke, omrežje) in obdelavo podatkov, dodani so ustrezni sistemski moduli.
Osnove Node.js
- Primitive types v JavaScript: String, Number, Boolean, Undefined, Null, RegExp.
- Vse ostalo je objekt, dinamično tipizirano z rezervirano besedo "var".
- Razlike v Node.js vključujejo dodatne tipe (Buffer), doseg spremenljivk (globalno -> lokalno), dostop do globalnega dosega (objekt global) in exports.name = object.
REPL (Read Eval Print Loop)
- REPL je okolje za testiranje kode, ki je enostavno za uporabo in se zažene z ukazom "node".
- Uporablja Node.js/JavaScript.
- Obstajata dva načina delovanja: Interpreter (za izhod uporabite Ctrl + C) in izvajanje skript (node name.js).
Osnovni moduli v Node.js
- Veliko standardnih (core) modulov, kot so datotečni sistem, dostop do procesov, omrežje, časovniki, naprave, kriptovalute, itd.
- http modul vključuje objekte, metode in dogodke za ustvarjanje http strežnika Node.js.
- URL modul vključuje metode za razpoznavanje URL-ja.
- querystring vključuje metode za delo s poizvedovalnim nizom.
- path modul vključuje metode za obravnavo poti datotek.
- fs modul vključuje razrede, metode in dogodke za delo z V/I datotekami.
- util modul vključuje uporabne funkcije, koristne za programerje.
- events modul vključuje funkcije za delo z dogodki.
Uporaba modula
- Module se uvozi s funkcijo require(): var module = require('module_name');
- Funkcija require() vrne objekt, funkcijo, lastnost ali kateri koli drug koncept JavaScript.
- Module delimo na osnovne in NPM module.
Drugi moduli v Node.js
- Obsežna knjižnica modulov (npm) omogoča skoraj vse.
- npm (Node Package Manager) je online package manager za Node.js module in orodje v ukazni vrstici (command-line utility, CLI).
- npm se namesti samodejno z Node.js.
- Primeri npm modulov:
- Nodemon – ponovni zagon spletne aplikacije ob vsaki spremembi.
- Express – hitro, enostavno, minimalistično spletno ogrodje za HTTP (web application framework).
- Mongoose - Elegantno modeliranje objektov MongoDB (podatkovna baza).
Node Package Manager
- CLI (command-line interface)
- S NPM se lahko preveri verzijo, jo posodobi in namesti posameznih paketov. package.json je datoteka v korenskem direktoriju vsakega Node.js projekta, definira lastnosti projekta. Elementi vključujejo name, version, scripts, description, homepage, author, dependencies, repositories, itd. NPM namesti vse module, navedene kot odvisnosti (dependencies) v paketu package.json.
Modul fs
- Standardni (core) modul, ki se uporablja v vhodno/izhodnih klicih OS.
- S require() dobimo klic modula (var fs = require("fs");)
- fs objekt ovije klice datotečnega sistema za sinhronizacijo z OS.
- Npr. Buffer je optimiziran za shranjevanje in operiranje nad binarnimi podatki. Pomnilnik je zunaj JavaScript pogona V8.
- Optimizirana skupna raba se doseže preko kazalcev in ne s kopiranjem (buffer.copy ()).
- Primeri: fs.readFile, socket.write
- Vsaka metoda v modulu ima sinhrono in asinhrono verzijo (readFileSync() je sinhron, readFile() je asinhron)
- Asinhrone metode prejmejo funkcijo povratnega klica kot zadnji argument. Prvi argument povratnega klica je napaka (JavaScript).
- Če je možno, je priporočljivo uporabiti asinhrone funkcije.
- podatkovniBuffer je poseben objekt (buffer) v Node.
Povratni klic (callback)
- Povratni klic je asinhroni ekvivalent funkcije, ki se pokliče ob zaključku funkcije.
- Node.js APIji podpirajo povratni klic.
- Prednost: obdelamo veliko število zahtev, ne da bi čakali, da katera izmed njih prejme rezultat.
- Bodite pozorni na izvajanje povratnih klicev.
- Dodatna težava je gnezdenje povratnih klicev (Callback hell).
Programiranje z dogodki (event driven programming)
- Node.js uporablja eno samo nit.
- Sočasnost je podprta s konceptoma dogodek (angl. event) in povratni klic (call-back).
- Vzdrževanje sočasnosti se doseže preko klicev asinhronih funkcij.
- Uporaba vzorca opazovalec (angl. Observer).
- Node.js nit ohranja zanko dogodkov (angl. event loop).
- Ko se naloga konča, proži ustrezen dogodek, ki opozori poslušalce (angl. listeners), da izvedejo funkcijo.
- Oddajnik (emitter)/poslušalec (listener)
Poslušalec/oddajnik
- Poslušalec (angl. listener) je funkcija, ki se prijavi na dogodek z addEventListerner.
- Oddajnik (angl. emitter) signalizira, da se je zgodil dogodek.
- Oddajanje dogodka povzroči klicanje vseh funkcij poslušalca.
- Primer poslušalec/oddajnik je modul events.
- Posluša se z on() ali addListner().
- Signalizira se z emit().
- Ob oddajanju, se poslušalci pokličejo sinhrono in po vrstnem redu poslušalcev, kako so bili registrirani.
- Če poslušalca ni, potem emit() pomeni NOP.
- Priporočljivo je ravnati z napakami, saj se Node.js ustavi, če jih ne ujamemo!
Modul stream
-
Tokovi (streams) so objekti, ki prebirajo podatke iz vira ali zapisuje podatke na cilj.
-
Modul stream ustvari/uporabi tokove podatkov.
-
Node.js API-ji vsebuje 4 tipe tokov:
- Tokovi branja (readable, npr. fs.createReadStream)
- Tokovi pisanja (writable, npr. fs.createWriteStream)
- Dupleks tok (duplex, npr. Net.createConnection)
- Preoblikovanje toka (transform, npr. zlib, crypto)
-
Vsi tipi tokov so Oddajniki (EventEmitter) in običajno vsebujejo naslednje dogodke: data, end, error, finish.
-
Priljubljen način strukturiranja strežnikov je: Mrežni vmesnik <=> obdela protokola TCP / IP <=> obdelava protokola HTTP <=> naša koda.
-
Z dodanimi moduli lahko tokove povežete dinamično: Omrežni vmesnik <=> obdelava protokola TCP / IP <=> šifriranje <=> obdelava HTTP.
Globalni objekti
- Globalni objekti so na voljo v vseh modulih, brez potrebe po vključevanju v aplikacijo.
- Primeri objektov so: Moduli, funkcije, nizi, ter sami objekti.
- Primeri: Spremenljivke (__filename, __dirname), funkcije (setTimeout(callback, ms)), objekti (Console, Process).
Modul http
- Modul http omogoča ustvarjanje primerka strežnika http za obdelavo zahtev HTTP.
- Nastavi se vrsta odgovora.
- Pošlje se nazaj odgovor in prekine povezava.
- Zažene se strežnik na vratih 3000.
Node.js vgrajeni moduli
- Node.js ima veliko uporabnih modulov: Buffer, C/C++ Addons, Child Processes, Cluster, Console, Crypto, Debugger, DNS, Errors, Events, File System, Globals, HTTP, HTTPS, Modules, Net, OS, Path, Process, Punycode, Query Strings, Readline, REPL, Stream, String Decoder, Timers, TLS/SSL, TTY, UDP/Datagram, URL, Utilities, V8, VM, ZLIB.
NPM moduli: nodemon
- Nodemon je pripomoček za razvijalce, ki spremlja morebitne spremembe v kodi in samodejno znova zažene strežnik.
- Namesti se ga z npm install nodemon.
- Nato se spremeni package.json.
- Strežnik se zažene z npm run dev.
- To je podobno kot node --watch hello.js.
Strežnik in serviranje statične vsebine
- Uporablja se const http = require('http'); za strežbo statične vsebine (HTML).
Strežnik in datoteke
- Za serviranje datotek se uporablja konst fs = require('fs');
Strežnik in JSON
- Uporablja se RestfulAPI.
Strežnik in klic RestfulAPI (modul Axios)
- Pridobivanje podatkov iz spletnih API-jev (digitalni dvojček) preko modula Axios.
- Uporablja se Axios za klice RestfulAPI.
Spletni API
- Spletni API (Web Application Programming Interface) je vmesnik, ki omogoča komunikacijo med različnimi spletnimi aplikacijami.
- Omogoča dostop do podatkov (pridobivanje, pošiljanje, upravljanje), uporablja HTTP protokole in formate izmenjave podatkov (JSON ali XML).
- Končne točke (angl. endpoints) so na strani strežnika določeni z URI naslovi preko katerih dostopamo do podatkov.
Skaliranje aplikacije
- Node.js omogoča ustvarjanje podrejenih procesov, za vzporedno obdelavo na večjedrnih sistemih.
- Podrejeni procesi imajo tri tokove: Child.stdin, child.stout, child.stderr.
- Node.js ponuja modul child_process, ki ima tri glavne načine za ustvarjanje podrejenega procesa (exec, spawn, fork).
Literatura
- tutorialspoint
- w3school
Naslednjič
- Izmenjava podatkov (JSON, SOAP)
- Spletne storitve
- Vrste podatkovnih baz (Relacijske podatkovne baze in NoSQL)
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.