Arhitektura spletnih aplikacij

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Listen to an AI-generated conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

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.

True (A)

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 ______.

<p>blokovni obseg</p>
Signup and view all the answers

Povežite naslednje elemente sklada MERN z njihovimi specifičnimi odgovornostmi v arhitekturi spletne aplikacije:

<p>MongoDB = Zagotavlja ne-relacijsko bazo podatkov za shranjevanje podatkov JSON-podobnih dokumentov. Express.js = Zagotavlja ogrodje spletnih aplikacij Node.js za usmerjanje, middleware in obravnavo zahtev. React = Ponuja knjižnico JavaScript za gradnjo uporabniških vmesnikov z uporabo komponent. Node.js = Izvaja JavaScript na strani strežnika, kar omogoča hitro in razširljivo izvajanje aplikacij, ki temeljijo na omrežju.</p>
Signup and view all the answers

Katera izjava najbolje opisuje namen modula fs v Node.js?

<p>Modul <code>fs</code> ponuja funkcije za delo s datotečnim sistemom, vključno z branjem, pisanjem in manipulacijo datotek ter map. (D)</p>
Signup and view all the answers

Ali je funkcija require() v Node.js sinhrona operacija, ki blokira izvajanje kode, dokler se modul ne naloži in parsira?

<p>True (A)</p>
Signup and view all the answers

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.

<p>Sinhroni metodi (<code>readFileSync</code>, <code>writeFileSync</code>) blokirata izvajanje, kar je primerno za majhne operacije ali pri zagonu. Asinhrone metode (<code>readFile</code>, <code>writeFile</code>) ne blokirajo, omogočajo boljšo odzivnost aplikacije, primerne pa so za večje datoteke in strežniške aplikacije.</p>
Signup and view all the answers

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.

<p>determinizem</p>
Signup and view all the answers

Povežite naslednje koncepte z njihovimi ustreznimi definicijami v Node.js:

<p>Zanka dogodkov (Event loop) = Mehanizem, ki omogoča Node.js za obravnavo asinhronih operacij brez blokiranja glavne niti. EventEmitter = Osnovni razred v Node.js, ki omogoča objektom, da sprožajo (emit) dogodke, na katere se lahko drugi objekti prijavijo. Stream = Vmesnik za delo z zaporedjem podatkov; omogoča branje ali pisanje podatkov v delih, brez potrebe po nalaganju celotne vsebine v pomnilnik. Buffer = Razred za delo z binarnimi podatki v Node.js; predstavlja fiksno količino pomnilnika, namenjeno za shranjevanje surovih podatkov.</p>
Signup and view all the answers

Katera od naslednjih izjav natančneje opisuje uporabo process objekta v Node.js?

<p><code>process</code> objekt omogoča interakcijo z operacijskim sistemom, vključno z upravljanjem procesov, delom s spremenljivkami okolja in nadzorom izvajanja aplikacije. (D)</p>
Signup and view all the answers

Ali je mogoče z modulom http v Node.js ustvariti tako strežnik kot tudi odjemalca, ki lahko pošilja HTTP zahteve?

<p>True (A)</p>
Signup and view all the answers

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.

<p><code>npm install</code> brez pregleda lahko vodi do namestitve zlonamernih odvisnosti, ki lahko vsebujejo škodljive skripte, sprožene med namestitvijo. Napadalci lahko izkoristijo te skripte za krajo podatkov, vdor v sistem ali izvajanje druge zlonamerne kode.</p>
Signup and view all the answers

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.

<p>sanitizacijo vhodnih podatkov</p>
Signup and view all the answers

Povežite različne vrste tokov (streams) v Node.js z njihovimi specifičnimi primeri uporabe:

<p>Readable Stream = Branje podatkov iz datoteke. Writable Stream = Pisanje podatkov v HTTP odgovor. Duplex Stream = Komunikacija med odjemalcem in strežnikom preko WebSocket povezave. Transform Stream = Stiskanje podatkov s pomočjo <code>zlib</code>, preden se pošljejo po omrežju.</p>
Signup and view all the answers

Kateri od naslednjih ukazov najbolj natančno opisuje, kako upravljati okoljske spremenljivke v Node.js aplikaciji, ki se izvaja v produkcijskem okolju?

<p>Nastavitev okoljskih spremenljivk na ravni operacijskega sistema ali orodja za upravljanje containerjev (npr. Docker), in dostop do njih preko <code>process.env</code> objekta. (C)</p>
Signup and view all the answers

Ali uporaba npm audit v Node.js projektu zagotavlja popolno varnost in odpravi vsa tveganja, povezana z ranljivostmi v odvisnostih?

<p>False (B)</p>
Signup and view all the answers

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.

<p>»Callback hell« se nanaša na situacijo, kjer prekomerno gnezdenje povratnih klicev vodi do težko berljive in vzdrževane kode. Strategije za rešitev tega problema vključujejo uporabo Promisejev, async/await sintakse, in modularizacijo funkcij.</p>
Signup and view all the answers

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.

<p>Error</p>
Signup and view all the answers

Povežite naslednje HTTP metode z njihovimi tipičnimi funkcijami v RESTful API-jih:

<p>GET = Pridobivanje predstavitve specifičnega vira ali zbirke virov. POST = Ustvarjanje novega vira. PUT = Posodabljanje obstoječega vira z novimi podatki. DELETE = Brisanje specifičnega vira.</p>
Signup and view all the answers

Katera izmed naslednjih trditev najbolj natančno opisuje razliko med spawn in fork metodami modula child_process v Node.js?

<p><code>spawn</code> se uporablja za zagon kateregakoli ukaza operacijskega sistema, medtem ko <code>fork</code> zažene novo instanco Node.js procesa. (B)</p>
Signup and view all the answers

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?

<p>False (B)</p>
Signup and view all the answers

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.

<p>WebSocket omogoča dvosmerno komunikacijo in vzdržuje stalno povezavo, medtem ko HTTP zahtave zahtevajo novo povezavo za vsako komunikacijo. WebSocket je bolj primeren za aplikacije, ki zahtevajo komunikacijo v realnem času, kot so spletne igre in chat aplikacije.</p>
Signup and view all the answers

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).

<p>komunikacijo</p>
Signup and view all the answers

Povežite naslednje koncepte varnosti spletnih aplikacij z ustreznimi strategijami za njihovo preprečevanje v Node.js:

<p>Cross-Site Scripting (XSS) = Sanitizacija vhodnih podatkov in izogibanje vstavljanju nepreverjenih podatkov v HTML. SQL Injection = Uporaba parametriziranih poizvedb ali ORM (Object-Relational Mapping) za interakcijo z bazo podatkov. Cross-Site Request Forgery (CSRF) = Implementacija CSRF žetonov za preverjanje pristnosti zahtev. Denial-of-Service (DoS) = Uporaba omejevalnikov hitrosti (rate limiting) za omejitev števila zahtev s posameznega naslova IP.</p>
Signup and view all the answers

Katera izmed naslednjih izjav najbolj pravilno opisuje, kako Node.js obravnava upravljanje z pomnilnikom v primerjavi z jeziki kot je C++?

<p>Node.js uporablja samodejno upravljanje pomnilnika s pomočjo garbage collectorja, kar zmanjšuje tveganje puščanja pomnilnika v primerjavi s C++. (A)</p>
Signup and view all the answers

Pri uporabi modula cluster v Node.js, ali delavski procesi delijo isti pomnilniški prostor kot glavni proces?

<p>False (B)</p>
Signup and view all the answers

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?

<p>Implementacija JWT avtentikacije vključuje generiranje žetona ob prijavi, vključitev žetona v zahteve (npr. v glavo Authorization) in preverjanje žetona na strani strežnika s preverjanjem podpisa. Občutljiv ključ za podpisovanje žetonov je treba varno shraniti (npr. v okoljskih spremenljivkah), CSRF pa preprečimo z dodatnimi ukrepi, kot so žetoni CSRF.</p>
Signup and view all the answers

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).

<p>šifriranje</p>
Signup and view all the answers

Povežite naslednje načine za optimizacijo delovanja Node.js aplikacij z njihovimi potencialnimi prednostmi:

<p>Caching = Zmanjšanje obremenitve baze podatkov in pohitritev odzivnega časa pogosto zahtevanih podatkov. Load Balancing = Razporejanje prometa med več instanc aplikacije za preprečevanje preobremenitve in izboljšanje odzivnosti. Code Profiling = Identifikacija ozkih grl v kodi in optimizacija kritičnih delov za bolj učinkovito delovanje. Gzip Compression = Zmanjšanje velikosti prenesenih podatkov za hitrejše nalaganje spletnih strani in manjšo porabo pasovne širine.</p>
Signup and view all the answers

Kateri od naslednjih pristopov najbolj neposredno izboljša sposobnost Node.js aplikacije za obravnavo velikega števila sočasnih povezav?

<p>Uporaba asinhronega programiranja in zanke dogodkov (event loop) za obravnavo I/O operacij brez blokiranja. (C)</p>
Signup and view all the answers

Ali je uporaba globalnih spremenljivk v Node.js aplikacijah vedno slaba praksa in se ji je treba izogniti za vsako ceno?

<p>False (B)</p>
Signup and view all the answers

Razložite, kako lahko z uporabo Dockerja izboljšate ponovljivost in prenosljivost Node.js aplikacije med različnimi okolji (razvojno, testno, produkcijsko).

<p>Docker omogoča pakiranje Node.js aplikacije in vseh njenih odvisnosti v kontejner, kar zagotavlja, da se aplikacija izvaja enako v vseh okoljih. To odpravlja težave, povezane z razlikami v konfiguraciji in odvisnostih med okolji.</p>
Signup and view all the answers

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.

<p>iteraciji</p>
Signup and view all the answers

Povežite naslednje možnosti za shranjevanje podatkov v Node.js z njihovimi tipičnimi primeri uporabe:

<p>MongoDB = Spletne aplikacije z velikimi količinami nestrukturiranih ali polstrukturiranih podatkov. PostgreSQL = Aplikacije, ki zahtevajo ACID transakcije, relacijske podatke in kompleksne poizvedbe. Redis = Caching, Session Management in Real-time analitika. MySQL = Spletne aplikacije, ki zahtevajo robustno, preizkušeno in razširljivo relacijsko bazo podatkov.</p>
Signup and view all the answers

Flashcards

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

Razvijalec, ki ima znanje iz razvoja čelnega in zalednega dela sistema, baz podatkov, DevOps in upravljanja infrastrukture.

MERN stack

Brezplačen in odprtokoden paket programske opreme za izdelavo dinamičnih spletnih aplikacij v JavaScript.

React (MERN)

Uporabniški vmesnik za zahteve.

Signup and view all the flashcards

Node.js (MERN)

Razpoznava zahteve.

Signup and view all the flashcards

Express (MERN)

Povprašuje po podatkih.

Signup and view all the flashcards

MongoDB (MERN)

Zagotavlja podatke.

Signup and view all the flashcards

Spletni strežnik

Program, ki sprejema HTTP zahteve in vrača HTTP odgovor.

Signup and view all the flashcards

Node.js

Odprtokodno, platformno neodvisno okolje za izvajanje JavaScript kode na strani strežnika.

Signup and view all the flashcards

Node.js obravnava zahteve

Zahteve se obravnavajo v eni niti.

Signup and view all the flashcards

Odstranjeno v Node.js

Na strežniku ne potrebujemo DOM.

Signup and view all the flashcards

Dodano v Node.js

Dodani dogodki in čakalna vrsta dogodkov. Vse teče iz zanke dogodkov. Vmesnik za vse operacije OS.

Signup and view all the flashcards

REPL okolje

Ukaz za testiranje kode.

Signup and view all the flashcards

Standardni (core) moduli v Node.js

Standardni moduli za datotečni sistem, dostop do procesov, omrežje, časovniki, naprave, kriptovalute...

Signup and view all the flashcards

Kako importiramo module

Uporaba funkcije require().

Signup and view all the flashcards

Drugi moduli v Node.js

Ogromna knjižnica modulov (npm).

Signup and view all the flashcards

Package.json

Datoteka v korenskem direktoriju vsakega Node.js projekta.

Signup and view all the flashcards

Modul fs

Standardni (core) modul.

Signup and view all the flashcards

Povratni klic (callback)

Funkcija, ki se pokliče ob zaključku druge funkcije.

Signup and view all the flashcards

Poslušalec

Poslušalec (angl. listener) Funkcija, ki se prijavi na dogodek

Signup and view all the flashcards

Oddajnik

Oddajnik (angl. emitter) Signalizira, da se je zgodil dogodek

Signup and view all the flashcards

Tokovi (streams)

Objekti, ki prebirajo podatke iz vira ali zapisuje podatke na cilj

Signup and view all the flashcards

Kako uporabljati modul http

Ustvari primerek strežnika http za obdelavo zahtev HTTP

Signup and view all the flashcards

Spletni API

Omogoča komunikacijo med različnimi spletnimi aplikacijami

Signup and view all the flashcards

Nodemon

Je pripomoček za razvijalce, ki spremlja morebitne spremembe v kodi in samodejno znova zažene strežnik:

Signup and view all the flashcards

Skaliranje aplikacije

ustvarjanje podrejenih procesov, da se vzpostavi vzporedna obdelava na večjedrnih sistemih, ki temeljijo na CPE

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.

Quiz Team

Related Documents

More Like This

Web Development Knowledge Quiz
3 questions
MERN Stack: MongoDB, Express, React, Node
10 questions
Use Quizgecko on...
Browser
Browser