Pravimo server u node.js-u

Node js je odličan i za pravljenje servera između ostalog jer je uraditi tako nešto upotrebom noda i npm-a vrlo lako. Pa ćemo ovde objasniti kako se to radi.
Za ovaj program je neophodno da imate instalirano na svom računaru mysql i postman, mada ovaj poslednji nije neophodan jer ćemo rezultate makar nekih ruta videti u internet pretraživaču.
Prvo što bi trebalo da uradite je da napravite unutar mysql-a bazu koja će se zvati edutechucenici i da napravite u njoj tabelu ucenici a potom da je napunite nekim podacima.

U novostvorenom folderu napravite fajl koji će se zvati package.json čiji značaj smo objasnili ovde.

U njega upišite sledeći kod:

{
"name": "servernode",
"version": "1.0.0",
"description": "mali node server",
"main": "index.js",
"scripts": {
"start": "nodemon index.js"
},
"author": "Edutech",
"license": "ISC",
"dependencies": {
"express": "^4.16.4",
"mysql": "^2.16.0",
"nodemon": "^1.18.10",
"body-parse": "0.1.0"
}
}

Zatim, tu, unutar foldera gde se nalazite otvorite terminal i ukucajte komandu npm install. Ona će vam pokrenuti proces instaliranja svih dependency paketa koje vaš program ima i videćete da se unutar vašeg foldera pojavio još jedan koji se zove node_modules. U njemu se nalaze svi paketi koje će vaš program trebati za normalno funkcionisanje. Ako pogledate šta smo uneli u package.json, videćete da pod main stoji index.js. Ovo znači da je glavni, ulazni fajl u naš program index.js i u njemu ćemo upisati sledeći kod koji je zapravo naš server:

 

 

const aplikacija = require('express');
const konektor = require('mysql');
const upiti = require('./dbQueries.js');

const konekcija = konektor.createConnection({
host: "localhost",
user: "root",
password: "",
database: "edutechucenici",
})

const server = aplikacija();

server.get('/', (req, res) => res.send('Pocetak klijent aplikacije'));

server.get('/ucenici', (req, res) => {
konekcija.query(upiti.vratiSveUcenike, (err, rows) => {
if(!err) {
res.send(rows);
} else {
console.log(err);
}
})
});

server.get('/ucenik/:id', (req, res) => {
const { id } = req.params;
konekcija.query(upiti.vratiJednogUcenika + id, (err, rows) => {
if(!err) {
res.send(rows);
} else {
console.log(err);
}
})
});

server.delete('/ucenik/:id', (req, res) => {
const id = req.params.id;
konekcija.query(upiti.obrisiJednogUcenika + id, (err, rows) => {
if(!err) {
res.send(rows);
} else {
console.log(err);
}
})
});

server.post('/ucenik', (req, res) => {
const podaciOUceniku = req.body;
console.log(req.body)
konekcija.query(upiti.ubaciJednogUcenika, podaciOUceniku, (err, rows) => {
if(!err) {
res.send(rows);
} else {
console.log(err);
}
})
});

server.listen(3000, () => console.log('Server je ziv'));

Da bi ovo radilo kako treba, potrebno je još na kraju da stvorite fajl u kojem će se nalaziti naši upiti ka bazi i on neka se zove dbQueries.js:

const upiti = {
vratiSveUcenike: "SELECT * FROM ucenici",
vratiJednogUcenika: "SELECT * FROM ucenici WHERE id = ",
obrisiJednogUcenika: "DELETE FROM ucenici WHERE id = ",
ubaciJednogUcenika: "INSERT INTO ucenici SET ?",
}


module.exports = upiti;

Da biste proverili funkcionisanje ovog programa, u terminalu ukucajte node index.js ili nodemon index.js i otvorite vaš pretraživač sa adresom localhost:3000/ucenici.

Instaliranje Node.js-a i pokretanje prvog programa

Da bi uopšte mogli da pravimo programe za Node.js moramo prvo da imamo instaliran Node na našoj lokalnoj mašini. Proces instalacije je relativno jednostavan i nije previše zahtevan za vaš kompjuter. Svaki računar koji može da instalira internet pretraživač, mora da bude u stanju i da instalira na svoj hard disk i Node.js. Za početak, trebalo bi otići na zvaničnu internet stranicu Node.js-a i odande skinuti ili najnoviju ili poslednju stabilnu verziju Node.js okruženja. Instalacione fajlove za Node.js možete pronaći klikom na ovaj link.

 

Odlaskom na ovaj link pronaći ćete opcije za skidanje Node.js verzija za vaš operativni sistem. Nakon što odaberete Linux, Windows ili macOS, sačekajte da se na vaš računar svuče instalacioni fajl sa Node.js-om. Nakon toga pronađite folder gde je Node skinut i otvorite instalacioni fajl. Odatle je sve prilično jednostavno. Samo bi trebalo da propratite uputstva za instaliranje i da klikom na Next dugme završite sam proces instalacije. Nakon što vam je Node instaliran na vaš računar, bićete u stanju da pišete Javascript programe koji će moći da se izvršavaju na vašoj lokalnoj mašini. Pa hajde da probamo zajedno da napravimo jedan takav prost program.

 

Prvo, napravite folder negde na vašem kompjuteru i unutar tog programa napravite jedan fajl koji će se zvati index.js.

U njemu dodajte sledeći kod:

var a = 5;

var b = 5;

console.log('Rezultat je ', a + b);

Da biste pokrenuli ovaj program, ono što treba da uradite je da izdate komandu za pokretanje ovog programa. Ukoliko ste na Windows kompjuteru, otvorite terminal tako što ćete stisnuti Windows dugme + r i ukucati cmd u input polje pa onda Enter. Zatim pronadjite dir i cd komandama folder koga ste malopre napravili. Ukoliko ste na Linuxu, samo u folderu gde ste napravili ovaj index.js fajl desnim klikom miša odaberite opciju Open terminal here. Na macOS-u ćete otvoriti terminal kombinacijom dirki na tastaturi Control + Option + Shift + T. Nakon toga pronadjite vaš folder pomoću cd i ls komandi. Kada uđete unutar terminala u folder gde se nalazi fajl koga ste malopre napisali, sve što bi trebalo da uradite da pokrenete napisan program je da ukucate node index.js. I eto ga izvršeni program. U vašem terminalu bi trebalo da vidite “Rezultat je 10”.

 

Možda nije mnogo, ali za početak znate kako da napravite i pokrenete Node.js program.

Šta je to Node?

U poslednjih desetak godina se u svetu programiranja dešava jedna vrlo zanimljiva pojava. Jedan programski jezik postaje sve popularniji i sve prisutniji među programerima.
Taj jezik je JavaScript. Sve do završetka prve polovine dvehiljaditih, nekoako je bilo ustaljeno da ukoliko želiš da programiraš mašine, da se to obično rdi u C++ jeziku, ukoliko želiš da praviš servere, to se radilo u Javi ili C# jeziku i tome slično. JavaScript jezik je nekako uvek bio vezan za internet pretraživače i njegov zadatak je bio samo da se bavi ponašanjem elemenata na web stranicama i nije bio u stanju da radi mnogo više od toga.

Međutim, na jednoj medjunarnodnoj programerskoj konfernciji je, 2009. godine u Berlinu, programer Rajan Dal predstavio svoj projekat koga je nazvao Node.js i tada je nastala eksplozija upotrebe JavaScripta koja se nije zaustavila ni do danas. Zahvaljujući Nodu, Javascript je postao najpopularniji i trenutno najupotrebljavaniji programski jezik na svetu sa ubedljivo najviše pitanja postavljanih na poznatom sajtu StackOverflow kao i sa najviše otvorenih pozicija u svetu zapošljavanja programera.

 

Šta je zapravo Node.js?

Budući da je JavaScript bio vezan za pretraživače i da je to script jezik u pitanju, JavaScript nikada nije bio u stanju da direktno komunicira sa kompjuterskim hardverom, već je uvek morao da postoji jezički sloj između JavaScript izvršnog konteksta i same mašine. Taj jezički sloj je zapravo bio browser engine koji je bio pisan u C++ jeziku i svaki od čuvenih proizvođača internet pretraživača je sam razvijao svoje browser engine-e. Google je razvio svoj koga je nazvao V8 i taj engine je bio otvoren za upotrebu. Ono što je Rajan Dal uradio je bio to da je izolovao iz Google-ovog internet pretraživača taj V8 engine i omogućio da se on samostalno instalira na kompjuteru kao što se instalira i bilo koji drugi program, a onda on služi kao interpretator između Javascript programa i samog kompjutera. Ovo znači da bilo koja mašina na koju može da se instalira Node, može da se programira pomoću Javascripta.

 

Ovo je odjednom značilo da Javascript nije više samo jezik koji se upotrebljava za ponašanje elemenata na internet stranicama, ono što se obično naziva frontend programiranje, već da sada može da se koristi Javascript i za programiranje servera, takozvani backend, kao i za programiranje mašina, takozvani embeded. Danas se preko Noda, u Javascriptu razvijaju i veštačka inteligencija, prave se baze podataka i radi se analiza velikih količina podataka. Zato je bitno da se kao ljudi koji su zainteresovani za programiranje bavimo i Node.js-om, te ćete ovde na sajtu Edutech školice moći da čitate više o tome.

Šta je to Node Package Manager ili npm?

Nakon što smo objasnili šta je to node, trebalo bi da se osvrnemo na još jednu izvanredno korisnu stvar koju smo dobili uz samu instalaciju noda. U pitanju je upravljač nodovih paketa ili node package manager, skraćeno npm. Ovo je jedna od najkorišćenijih alatki u svetu savremenog programiranja pa vredi posvetiti malo vremena njoj kako bi se tačno upoznali sa softverom koji umnogome olakšava život miliona programera širom sveta.

 

Šta je to npm?

Prilikom instaliranja Node.js-a, zajedno sa smim nodom, instalirali smo i npm. Svaki program koji se napravi u nodu, kao što je bio onaj koga smo prikazivali prilikom instaliranja, može da funkcioniše ili kao samostalni program, kakav je bio naš, ili da bude napravljen tako da mogu i drugi ljudi da ga iskoriste unutar sopstvenih programa kako bi obavili posao koga radi naš program.

Na primer, ukoliko pravim program koji treba da kontroliše u koliko sati će se moja veš mašina uključiti i pokrenuti program za pranje šarenog veša, a ja se nalazim u drugoj vremenskoj zoni, na primer sat vremena iza moje veš mašine, neophodno je da tu razliku u vremenskim zonama na neki način poništim kako ne bih zadao zbunjujuću komandu mojoj mašini da počne pre sat vremena da pere šareni veš.  Ja u tom slučaju mogu da napišem sam svoje programske funkcije koje će tražiti vremensku razliku u vremenskom potpisu komande koju zadajem veš mašini ili mogu pogledati da li je neko već napravio sličnu funkcionalnost. Traženje sličnih funkcionalnosti koje mogu da upotrebim unutar svog programa se vrši na npm zvaničnom sajtu. Ukoliko pronadjem nešto takvo, ja ću takav program preko npm komande instalirati unutar svog programa i upotrebiti njegove funkcionalnosti za potrebe mog programa.

 

Dakle, takvi mali programi, koji se drugačije nazivaju paketi, te otud i ime menadžer node paketa, u mnogome pomažu da se proces razvoja programa ubrza jer skraćuje vreme za razvoj sopstvenih funkcionalnosti. Svaki takav paket koga ubacimo u naš program se smatra paketom od koga zavisi izvršavanje našeg programa. Na engleskom se to naziva dependency. Postoje dependacy od kojih zavisi normalno funkcionisanje našeg programa, kao i oni koji nam pomažu prilikom pisanja programa, ali bez kojih naš program može neometano da funkcioniše. Takvi razvojni ovisnički paketi se nazivaju na engleskom development ili dev dependency. Za upravljanje statusom običnih i dev dependency paketa unutar našeg programa zaslužan je fajl koji se uvek nalazi na samom vrhu naše folderske strukture u programu koji nosi ime package.json. Ovaj fajl obično izgleda ovako:

 

{
"name" : "vešmašinovođa",
"version" : "0.0.1",
"description" : "program za uključivanje veš mašine",
"main" : "index.js",
"keywords" : ["veš", "mašina"],
"author" : "Edutech škola programiranja",
"licence" : "ISC",
"dependencies": {
"axios": "^0.18.0",
}
}

 

Kada završimo sa pisanjem našeg programa za veš mašinu, možemo da objavimo naš program na npm sajtu kako bi ga i drugi ljudi upotrebljavali i kako bi doprineli razvoju otvorenog softvera na npm platformi koja već sada ima više od milion otvorenih i slobodnih za upotrebu programa, što ga čini najvećim repozitorijumom programa u istoriji čovečanstva.