lek 5 Flashcards

1
Q

Zakaj Node.js sam po sebi ni primeren za razvoj kompleksnih spletnih aplikacij in kako lahko to omejitev rešimo?

A

Node.js sam po sebi NI spletni framework
Čeprav je Node zelo zmogljivo okolje za izvajanje JavaScript kode, nima vgrajene podpore za spletni razvoj.
To pomeni, da ni vnaprej pripravljenih orodij za:
obdelavo HTTP zahtev (npr. GET, POST),
delo z URL-ji (usmerjanje ali routing),

generiranje HTML iz predlog (templates),

upravljanje stanja aplikacije glede na naslovno vrstico.

✅ Kaj lahko storimo?
🔹 Možnost 1: Sami zapišemo vse od začetka
Sami napišemo logiko za vsako zahtevo, kar pa je težje, dolgotrajnejše in manj pregledno.

Uporabno za zelo preproste aplikacije ali učenje osnov.

🔹 Možnost 2: Uporabimo spletno ogrodje (web framework)
Ti ogrodja dodajo funkcionalnosti, ki v osnovnem Node ni vključena.

Primeri ogrodij:

Express – najbolj znan in uporabljen, preprost in lahek

Spletna aplikacija potrebuje:

razumevanje URL-jev (routing),

obdelavo različnih tipov zahtev (GET, POST…),

sposobnost prikaza vsebin dinamično glede na uporabnika (template rendering),

urejeno kodo (strukturiranost, moduli…).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Kaj je Express.js?

A

Minimalistično in hitro ogrodje za razvoj spletnih aplikacij v Node.js.
omogoča obdelavo HTTP zahtev (vzpostavitev TCP povezave, pošiljanje odgovorov), usmerjanje (routing) zahtev na podlagi URL-jev in metod (GET, POST itd.), podporo vmesnemu programju (middleware), uporabo predlog (templates) za dinamično generiranje HTML ter generiranje kode prek ukazne vrstice (CLI).

Na njega se povezuju druge vmeske prog opreme oz middleware.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Zakaj uporabljamo Express?

A

Zaradi lažjega usmerjanja (routing), middleware podpore in generiranja HTML z uporabo predlog.
Express to omogoča tako, da vanj ‘vklapljamo’ različne middleware module (npr. za avtentikacijo, zaščito CSRF, CORS…).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Kaj je middleware v Expressu?

A

Funkcija, ki obdeluje zahtevo preden pride do glavne logike.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Kakšna je vloga middleware modulov v Express.js in katere naloge lahko z njimi izvajamo?

A

Middleware v Express.js delujejo kot vmesni sloj obdelave zahtevkov. Uporabljajo se za preverjanje pristnosti uporabnika, delo s sejami, piškotki, obdelavo URL parametrov, zagotavljanje varnosti (npr. CORS, CSRF zaščita) in drugo. Middleware se verižijo v zaporedju in omogočajo fleksibilno, modularno obdelavo zahtevkov pred končnim odgovorom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

namestitev expressa koda

A

npm install express-generator -g

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Kaj omogoča Express generator? 20

A

Ustvari osnovno strukturo aplikacije z ukazom express –view=hbs appname.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Primerjava express vs. node strežnik

A

1.http modul Node.js
const http = require(‘http’);

let app = http.createServer((req, res) => {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World!\n’);
});

app.listen(3000, ‘127.0.0.1’);
console.log(‘Node server running on port 3000’);
———————————————————
require(‘http’): vključimo privzeti Node.js HTTP modul.

http.createServer(…): ustvarimo strežnik in ob vsaki zahtevi pošljemo besedilo “Hello World”.

res.writeHead(…): nastavimo statusni odgovor in tip vsebine.

res.end(…): zaključimo odgovor.

listen(…): strežnik začne poslušati na vratih 3000.

2.express
var express = require(‘express’);
var app = express();
app.get(‘/’, function(req, res) {
res.send(‘Hello World!’);
});
app.listen(3000, function() {
console.log(‘Example app listening on port 3000!’);
});
——————————————————————
require(‘express’): vključimo Express knjižnico.

express(): ustvarimo novo aplikacijo.

app.get(‘/’): definiramo, da se za GET zahtevo na / pošlje besedilo ‘Hello World’.

app.listen(…): strežnik začne poslušati na vratih 3000.

Lastnost | Node.js http | Express.js
Nastavitev strežnika |
ročno (http.createServer) |
enostavno z express()
Obdelava zahtev |
ročna (če req.url == …) |
z app.get/post/…
Berljivost in struktura
| manj pregledna
| veliko bolj čista in razumljiva
Razširljivost (middleware)
| ni podprto neposredno
| močno podprta (npr. app.use(…))
Predloge, seje, piškoti |
potrebuje dodatno kodo
| pogosto že pripravljeni moduli

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Kaj je Express modul v Node.js in katere ključne funkcionalnosti ponuja objekt app v Express aplikaciji? Navedi tudi primer uporabe.

A

var express = require(‘express‘);
Objekt, ki predstavlja express aplikacijo: var app = express();
Metode, ki jih vsebuje app:
Usmerjanje (routing)
Določimo, kako naj aplikacija odgovori na določene URL-je in HTTP metode (GET, POST, …).
Pr:
app.get(‘/’, function(req, res) {
res.send(‘Hello World!’);
});
Vmesni nivo (middleware)
Uporabimo ga za obdelavo zahtev preden pridejo do cilja (npr. preverjanje prijave, sej, piškotkov).

Upodabljanje HTML (templating engine)
Lahko integriramo sisteme, kot je Jade (danes Pug), ki omogočajo generiranje HTML strani znotraj Express aplikacije.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Kaj omogoča app.get() v Expressu?

A

Obravnava GET HTTP zahtev na določeni poti, ko ga dobimo vrnemo povratni klic

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Kaj omogoča app.use()?

A

Doda middleware funkcijo, ki se izvede za vsako zahtevo na poti.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Kaj je razlika med statično in dinamično potjo v Expressu?

A

Statična pot je npr. ‘/about’,
app.get(‘/about’, (req, res) => {
res.send(‘To je about stran’);

dinamična pa vsebuje parametre, npr. ‘/user/:id’. Del poti je spremenljivka (parameter)

Primer: /test/:name/:year pomeni, da :name in :year lahko zamenjamo z dejanskimi vrednostmi (npr. tomaz/1978)

Kako dostopamo do teh parametrov?
Z uporabo objekta req.params. sl 12

Uporaba regex (regularnih izrazov)
Z regex lahko omejimo, kakšni parametri so dovoljeni.

Primer: ta del poti :year((19[0-9]{2}|20[012][0-9])) dovoli samo letnice od 1900 do 2029.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Kaj je req.params v Expressu?

A

Vsebuje parametre iz URL-ja, npr. :id.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Kaj je req.query?

A

Vsebuje podatke iz URL poizvedb, npr. ?name=Ana.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Kaj je req.body in req.get(field)?

A

Vsebuje podatke iz telesa POST ali PUT zahteve.
req.get(field) – vrne vrednost določenega polja glave HTTP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Kaj je res.send()?

A

Pošlje odgovor nazaj odjemalcu in zaključi zahtevo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Kaj je res.status()?

A

Nastavi statusno kodo HTTP odgovora.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

res razlicne

A

◼ Objekt s številnimi metodami za nastavitev HTTP odgovora ▪ res.write (content) - sestavimo telo odgovora z content ▪ res.status (code) - nastavimo HTTP kodo za odgovor ▪ res.set (prop, value) - nastavimo lastnost glave odgovora na vrednost ▪ res.end () - končamo zahtevo in vrnemo odgovor ▪ res.end (msg) - končamo zahtevo z odgovorom msg ▪ res.send (vsebina) – vrnemo odgovor, write() in end()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Katere tri parametre sprejme funkcija vmesnega sloja?

A

req (zahteva), res (odgovor), next (naslednja funkcija v verigi).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Kaj pomeni funkcija next() in Kaj se zgodi, če middleware ne pokliče next()?

A

Prenese zahtevo na naslednji middleware.
Zahteva se ustavi, nadaljnja obdelava se ne izvede (blokada).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Kako dodamo middleware samo za določeno pot?

A

Z uporabo app.use(‘/pot’, middlewareFunc).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Kdaj uporabimo res.send() znotraj middleware funkcije?

A

Ko želimo končati obdelavo in poslati odgovor (npr. napaka, nepooblaščeno).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Kaj pomeni “middleware funkcije sodelujejo v ciklu zahteva-odgovor”?

A

To pomeni, da middleware lahko spremeni ali prekine tok zahtevka preden se pošlje odgovor.

24
Q

Kako dodamo modul za vmesni sloj in kako ga vključimo v Express aplikacijo?

A

Najprej ga namestimo z ukazom npm install morgan. Nato ga vključimo z require(‘morgan’) in dodamo z app.use(logger(‘dev’))

25
Kako lahko omejimo uporabo vmesnega sloja samo na določen del aplikacije?
app.use('/user', function(req, res, next) {...}).
26
naštej nekaj pogostih primerov uporabe middleware funkcij v Expressu.
reverjanje prijave uporabnika, razpoznavanje JSON telesa zahteve, upravljanje sej in piškotkov, stiskanje, šifriranje
27
Kako generiramo nov Express projekt s šablonami hbs (Handlebars)?
Z ukazom express --view=hbs NotesApp, nato se premaknemo v mapo (cd NotesApp), namestimo odvisnosti (npm install) in zaženemo aplikacijo (npm start).
28
Kaj vse ustvari Express pri generiranju projekta?
Ustvari: app.js, package.json, mape routes, views, public, bin/www, ter datoteke za pogleda (MVC) in podporo
29
slika kako djeluje mongoose 29
NoSQL podatkovna baza → shranjuje podatke v obliki dokumentov (JSON) Primerna za dinamične in ne-strukturirane podatke 🧰 Mongoose Knjižnica (vmesni sloj) za Node.js, ki omogoča delo z MongoDB Poenostavi dostop do podatkov, definicijo modelov in validacijo Poveže se z MongoDB Driverjem, ki komunicira prek TCP/IP 🧠 Express.js Spletni ogrodje za Node.js – obravnava HTTP zahtevke (od uporabnikov) Deluje znotraj enega niti (single thread) z dogodkovno zanko (event loop) 🔄 Kaj prikazuje slika? 🧍‍♂️ Več uporabnikov pošlje zahteve (Requests) 🔁 Zahteve pridejo v event loop v Expressu (to je del Node.js okolja) 🔂 Event loop usmerja zahteve: Enostavne odgovore obdeluje takoj Pri zahtevah do baze se uporabi Mongoose 📤 Mongoose (kot middleware) uporablja MongoDB driver in prek TCP/IP pošlje zahtevo v podatkovno bazo ⏳ Medtem ko čakamo na odgovor, je niti ne zasedejo – zato govorimo o asinhornem delovanju 📥 Ko baza odgovori, se nadaljuje izvajanje in uporabniku vrne rezultat
30
kaj pomeni interakcija s podatkovno bazo preko SQL? aj je ODM/ORM in kako deluje?
Pomeni neposredno izvajanje SQL poizvedb nad podatkovno bazo, kar zagotavlja najboljšo učinkovitost. ODM (Object Document Mapping) oz. ORM (Object Relational Mapping) predstavlja podatke kot objekte JavaScripta, ki se nato preslikajo v bazo podatkov. *Zakaj so ODM-ji pogosto počasnejši kot neposreden SQL? ✅ Odgovor: Ker uporabljajo preslikavo med objekti in zapisi v bazi podatkov, kar zahteva dodatne korake obdelave.
31
Kaj je Mongoose?
Knjižnica za delo z MongoDB v Node.js, deluje kot ODM.
32
Kako v Node.js aplikaciji vzpostavimo povezavo z lokalno MongoDB bazo prek mongoose?
Uporabimo mongoose.connect('mongodb://127.0.0.1/my_database') in spremljamo povezavo z mongoose.connection ter db.on('error', callback) za napake.
33
Kaj naredi ukaz mongoose-gen v terminalu?
Ustvari model (vnesemo polja in tipe), nato avtomatsko ustvari datoteke /models, /controllers, in /routes, ki sledijo MVC arhitekturi.
34
Zakaj uporabljamo express.Router() v Express aplikacijah?
Omogoča modularno razdelitev poti (route-ov) – vsak usmernik skrbi za določen del aplikacije, npr. /items, in se lažje vzdržuje.
35
Kaj pomeni, da usmernik dodamo v vmesni nivo Express aplikacije?
To pomeni, da s app.use('/items', notesItemRouter) določimo, da se vse zahteve, ki gredo na /items, preusmerijo na določen usmernik.
36
Katere REST operacije najdemo v osnovnem mongoose REST usmerniku?
list (GET /), show (GET /:id), create (POST /), update (PUT /:id), remove (DELETE /:id).
37
Kaj je model v Mongoose?
Objekt, ki temelji na shemi in omogoča CRUD operacije nad zbirko. *Prvi argument je edinstveno ime zbirke (collection) ▪ Drugi argument pa je shema, ki jo želimo uporabiti pri ustvarjanju/uporabljanju modela
38
Mongoose: Kontroler
Mongoose-pridobivanje dokumentov ▪ Model.find(pogoj, povratni klic) ◼ Pridobivanje vseh dokumentov (list) ▪ Model.find(povratni klic) ◼ Pridobivanje skupine dokumentov ▪ Model.find({name: "Predavanje SP", done: true}, povratni klic) ◼ Generiran z generatorjem! ▪ Sami dodamo pogled (view) ▪ res.render
39
Kaj naredi Model.find()?
Poišče vse dokumente, ki ustrezajo pogoju.
40
Kaj naredi Model.findById()?
Poišče dokument po ID-ju.
41
Kako vstavimo nov dokument v Mongoose?
Ustvarimo nov objekt modela in uporabimo metodo save().
42
Kaj vsebuje mapa 'controllers/'?
Logiko aplikacije – obdelavo podatkov in povezavo z modeli.
43
Kaj vsebuje mapa 'models/'?
Definicije shem in modelov za delo z bazo.
44
Kaj vsebuje mapa 'routes/'?
Definira poti in povezuje z ustreznimi kontrolerji.
45
Kaj vsebuje mapa 'views/'?
HTML predloge (npr. handlebars datoteke) za prikaz podatkov.
46
Kaj je app.js?
Glavna začetna datoteka aplikacije – inicializacija strežnika in usmernikov.
47
Kaj je MongoDB Atlas?
Oblačna platforma za upravljanje MongoDB baz.
48
Kaj omogoča MongoDB Compass?
Vizualno upravljanje MongoDB baz brez ukazne vrstice.
49
Kaj omogoča Nodemon?
Samodejno ponovno zažene Node.js aplikacijo ob spremembi datotek.
50
Kaj naredi ukaz npm install?
Namesti vse odvisnosti iz datoteke package.json.
51
Kaj omogoča express.Router()?
Ustvari modularen usmernik, ki obravnava poti ločeno od app.js.
52
Kaj naredi app.use('/items', notesItemRouter)?
➤ Vse zahteve na /items se preusmerijo na datoteko NoteItemRoutes.js.
53
Kako poteka avtentifikacija v Express aplikaciji in kaj se zgodi ce je neuspesna?
S preverjanjem uporabniškega imena in gesla, shrani se seja z ID-jem, Uporabnika preusmerimo na login stran z res.redirect()
54
MVC-Kaj je vloga router.get('/', NoteItemController.list); v datoteki NoteItemRoutes.js?
a vrstica pomeni, da se ob HTTP GET zahtevi na /items/ izvede funkcija list iz kontrolerja NoteItemController. To je začetna pot za pridobivanje vseh "note items".
55
Kako v NoteItemController.js obravnavamo napako pri branju podatkov?
se uporabi res.status(500).json(...), ki vrne JSON odgovor s statusno kodo 500 in sporočilom o napaki. Tako strežnik ustrezno obvesti odjemalca o notranji napaki.
56
Kaj definira NoteItemSchema v modelu?
Shema NoteItemSchema definira strukturo dokumenta v bazi: ima dve polji – name (tipa String) in done (tipa Boolean). Ta struktura določa, kako bodo zapisi videti v zbirki items.
57
Katera dva podatka prikazuje HTML pogled list.hbs za vsak NoteItem?
{{name}} → ime opombe (npr. "Database improvement") {{done}} → ali je opravilo končano (true/false)