Uvod u Node.js i Express

od strane | Tutorijali

nodejs i expressjs logo

Šta je Node.js?

 

Node.js je radno okruženje JavaScript programskog jezika koje se koristi na strani web servera. JavaScript se tradicionalno koristi na strani klijenta – tzv. front-end razvoj, a Node je omogućio da se JS koristi i za back-end razvoj odnosno serversko izvršavanje koda.

Odmah da napomenemo i u čemu Node.js blista – to su tzv. real-time (u realnom vremenu) aplikacije kod kojih se vrši razmena velike količine podataka. Primer bi bile web aplikacije namenjene timskom radu poput Google Docs ili Dropbox Paper. Postoje i situacije u kojima nije preporučljivo koristiti Node.js – tipičan primer je bilo koja aplikacija koja je „teška“ za CPU, odnosno koja obavlja veliki broj kalkulacija.

Node.js ima veliki broj modula – JavaScript biblioteka ili funkcija koje obavljaju određene specifične zadatke i koje možete pridodati svojoj aplikaciji. Postoje neki ugrađeni moduli, dok su drugi dostupni pre svega putem NPM repozitorijuma – Node Package Manager. NPM nije ograničen samo na Node.js – sada je to univerzalni JavaScript repozitorijum softvera i dostupni su moduli i za back-end i za front-end razvoj, React, Angular, Vue.js itd.

 

Šta je Express?

 

Express, Expressjs ili Express.js je Node.js web framework – na srpskom bi se moglo reći da to znači Node.js okvir. Koristi se za programiranje web aplikacija i API (Aplikacioni programski interfejs). Express olakšava i ubrzava mnoge radnje i spasava nas pisanja suvišnih linija koda prilikom kreiranja Node.js aplikacija. Čuli ste možda za tzv. MEAN stack koji se koristi za kreiranje dinamičkih web aplikacija i web sajtova? MEAN je skraćenica za MongoDB, Express, Angular i Node.js. Dakle, Express je „E“ u „MEAN“ akronimu.

 

Kako napraviti Node.js/Express aplikaciju

 

Ovo će biti kratak tutorijal odnosno uputstvo za pravljenje bazične web aplikacije –  popularni „Hello World“ primer. Uputstvo je namenjeno osobama koje nisu imale dodira sa Node.js, ali imaju makar malo nekog prethodnog iskustva sa programiranjem, znaju šta su varijable i slični osnovni pojmovi.

Najpre preuzmite Node.js sa zvaničnog sajta – instalacija je slična na Linux/Windows/macOS platformama. U tutorijalu ćemo koristiti Windows iz razloga jer je najkorišćeniji OS. Nakon instalacije možda će biti potrebno da restartujete računar.

Potrebno je i da imate neki uređivač teksta i izvornog koda, možete koristiti npr. Notepad++, dok je naš izbor na Linux platformi Atom, a na Windows OS Visual Studio Code (VS Code).

Neophodan je i Terminal (ugrađena aplikacija na Mac/Linux platformama), odnosno Command Prompt ili Windows PowerShell (preinstalirani programi na Windows platformi). Da dodamo da u okviru pojedinih tekstualnih editora imate ugrađenu tu funkcionalnost, ili je dostupna u vidu dodataka, ali da bi uputstvo bilo jednostavnije, nećemo ulaziti u pojašnjavanje opcija svakog od postojećih tekstualnih uređivača.

Node.js/Express mini uputstvo

 

Da pređemo na stvar. Najpre kreirajte folder – direktorijum gde god želite i nazovite ga npr. node (možete ga nazvati po želji).

 

Kreiranje package.json fajla uz pomoć terminala



Napomena: ovaj korak nije obavezan, pa ga možete i preskočiti, ali je dobro da vam pređe u naviku kreiranje ovog fajla.

Ovde je neophodna upotreba terminala  –  pokrenite Command Prompt ili neku od navedenih alternativa i otvorite folder koji ste upravo kreirali. Primer – ako se Command Prompt pokrene u direktorijumu C:\Users\Pera, a folder „node“ ste kreirali u Documents direktorijumu korisnika „Pera“, putanja je Documents\node. Dakle, u Command Prompt unosite cd Documents\node. Sada kada ste u željenom folderu, izvršite komandu npm init. Pokrenuće se NPM alatka u okviru terminala koja će vas voditi kroz proces. U suštini, možete ostaviti sve podrazumevane vrednosti, odnosno samo pritiskati „Enter“ taster na svako pitanje. To bi otprilike ovako izgledalo:

kreiranje package.json fajla u terminalu

Šta smo upravo uradili? Kreirali smo package.json fajl koji, kao što vidite, sadrži određene informacije u vezi sa našom budućom aplikacijom, ali, što je mnogo bitnije, ovaj fajl će uskoro biti dopunjen informacijama o NPM modulima koje ćemo koristiti u ovoj aplikaciji. Kako funkcionalnost naše aplikacije zavisi od modula koje ćemo koristiti prilikom razvoja iste, te informacije je potrebno negde pohraniti. Zbog čega? Pre svega da bismo sami lakše pratili module koje koristimo, ali i da bi drugi programeri sa kojima delimo kod mogli da bez napora utvrde šta je korišćeno od modula u aplikaciji. Takođe, ako biste želeli da vašu Node.js aplikaciju postavite javno na internet, ovaj fajl će biti potreban. Naime, vrlo verovatno je da će platforma koja bi trebalo da hostuje aplikaciju (npr. Heroku) upravo iz package.json fajla pročitati informacije o tome koje module bi trebalo instalirati zajedno sa aplikacijom kako bi ona funkcionisala.

Instalacija Express modula

I dalje smo u terminalu i sada ćemo instalirati Express NPM modul. Express je verovatno najpopularniji Node.js modul, ali nije preinstaliran, pa ga moramo preuzeti i instalirati iz NPM softverskog skladišta. To ćemo učiniti uz pomoć komande npm install express --save.

instalacija express npm modula

Dakle, upravo smo napisali da želimo da Express bude instaliran i sačuvan u package.json fajlu kao modul od kojeg zavisi rad naše aplikacije.

Kreiranje web aplikacije

Pokrenite odabrani uređivač teksta i kreirajte novi fajl, a zatim u prazno polje upišite, tj. kopirajte sledeći kod:


var express = require("express");
var app = express();
app.get("/", function(request, response) {
response.statusCode = 200;
response.setHeader("Content-Type", "text/html; charset=utf-8");
response.end("Dobrodošli na početnu stranicu!");
});
app.listen(3000);
console.log("Server running at http://localhost:3000/");

Sada sačuvajte ovaj fajl pod imenom index.js (to smo ime odabrali u package.json fajlu, pa hajde da ga koristimo, mada nije obavezno) u  direktorijumu node koji smo napravili na samom početku.

Šta smo ovde uradili? Najpre smo „uvezli“ u aplikaciju Express modul i sačuvali ga u varijabli koju smo nazvali express. Moduli se uvek uključuju uz pomoć komande require. Zatim smo „pozvali” funkciju Express modula pod imenom express() i sačuvali smo tu funkciju u app varijabli. Sledeći je app.get – ovde kažemo “ako neko otvori početnu stranicu („/“), neka se izvrši funkcija“ (čiji bi krajnji rezultat trebalo da bude poruka dobrodošlice koju vidite). Status kod 200 je standardni odgovor na uspešne HTTP zahteve, dok je sledeća linija koda tu zbog podrške za UTF8 tj. srpsku latinicu, a istovremeno ovde definišemo da je odgovor u HTML-u.

Najzad, na kraju imamo app.listen – ovde kažemo serveru da „sluša“ na portu 3000. Console.log koristimo samo da bismo imali vizuelnu potvrdu u terminalu tj. povratnu informaciju da je server pokrenut.

Pokretanje aplikacije

U terminalu upisujemo node index.js ili samo node index (aplikacija zna da je nastavak svakako .js) i dobijamo informaciju iz konzole da je server pokrenut:

pokretanje nodejs aplikacije

Sada pokrećemo internet pregledač (Chrome, Firefox…) i u adresnom polju unosimo localhost:3000 ili http://localhost:3000. Naša  web aplikacija je pokrenuta i u pregledaču dobijamo poruku koju smo definisali.

aplikacija radi u internet pregledaču

Primetićete da ako pokušamo u internet pregledaču da otvorimo npr. http://localhost:3000/kontakt, dobićemo odgovor “Cannot GET /kontakt” – nismo definisali tu putanju u našoj aplikaciji, ali to možemo učiniti lako uz pomoć  app.get("/kontakt”).

Da dodamo i da aplikacija ne mora direktno slati sadržaj web stranice – možemo i servirati sadržaj koji se nalazi u index.html fajlu. U tom slučaju ne bismo koristili response.end, već response.render.

Ovim uputstvom smo samo zagrebali po površini – potrebno je ipak vreme da bi se ovladalo osnovama Express i Node.js, ali prvi korak ste napravili. Predlažemo da se što pre upoznate sa Node.js i Express dokumentacijom i polako zaronite u svet back-end JavaScript koda.

Ukoliko vam dokumentacija deluje preteško i potrebna vam je pomoć mentora, uvek nas možete kontaktirati – dajemo časove iz Node.js programiranja.