Vodič za Node.js - cjelovit vodič za početnike

Ovaj Vodič za Node.js govori o osnovnoj arhitekturi, radu i raznim modulima Node.js. Također će pokazati praktičnu primjenu Node.js i Express.js.

Ako ste ikada čuli za Node.js, tada biste mogli znati da je to jedan od najistaknutijih i najsnažnijih okvira JavaScript-a. Od izlaska na tržište i dalje se drži na IT tržištu. Čak i s uvođenjem novog i živahnog Kao , , Meteor itd., Čini se da popularnost Node.js nikad ne prestaje. Pitate se zašto? Pa, uz pomoć ovog vodiča za Node.js dat ću vam cjelovit uvid u to. Dakle, pripremite se da se zaljubite u Node.js.

U ovom vodiču za Node.js raspravljat ću o sljedećim temama:





Što je Node.js?

Node.js je moćan okvir razvijen na Chromeov V8 JavaScript motor koji kompajlira JavaScript izravno u izvorni strojni kod. To je lagani okvir koji se koristi za stvaranje web aplikacija na poslužitelju i proširuje JavaScript API kako bi ponudio uobičajene funkcije na strani poslužitelja. Općenito se koristi za razvoj velikih aplikacija, posebno za web lokacije za streaming video zapisa, aplikacije za jednu stranicu i druge web aplikacije. Node.js pravi upotreba ne-blokirajućeg U / I modela vođenog događajima što ga čini pravim odabirom za podatkovno zahtjevne aplikacije u stvarnom vremenu.

Kao i bilo koji drugi programski jezik, node.js koristi pakete i module. To su knjižnice koje sadrže razne funkcije i uvezene su iz npm (upravitelja paketa čvorova) u naš kod i koriste se u programima. Neke od glavnih značajki koje definiraju Node.js navedene su u nastavku:



Značajke Node.js

  1. Otvoreni izvor
    Node.js je MIT licenca za okvir otvorenog koda koju podržava velika zajednica. Njegova je zajednica prilično aktivna pridonijela je dodavanju novih mogućnosti aplikacijama Node.js.
  2. Jednostavno i brzo
    Budući da je Node.js izgrađen na Google Chromeovom V8 JavaScript Engineu, njegove su knjižnice sposobne za brzo izvršavanje koda.
  3. Asinkroni
    Sve su knjižnice Node.js asinkrone, što znači da poslužitelji temeljeni na Node.js nikada ne čekaju da API pošalje odgovor i prijeđe na sljedeći API.
  4. Visoka skalabilnost
    Zbog mehanizma događaja, Node.js je vrlo skalabilan i pomaže poslužitelju u neblokirajućem odgovoru.
  5. Jednonitni
    Uz pomoć petlje događaja, Node.js može slijediti model s jednim navojem. To omogućuje jednom programu da obrađuje više zahtjeva.
  6. Nema međuspremnika
    Jedna od glavnih funkcionalnosti aplikacija Node.js je da nikad ne međuspremnik podataka.
  7. Više platformi
    Node.js se lako može izgraditi i implementirati na različitim platformama poput Windows, MAC i Linux.

Krenimo sada dalje i pogledajte kako rasporediti stvarni kôd u preglednik. No prije toga morate preuzeti i instalirati u svoje sustave. Možete uputiti moj drugi članak da biste saznali cijeli Postupak instalacije Node.js. .

Dakle, krenimo dalje u ovom vodiču za Node.js, gdje ću govoriti o najvažnijoj komponenti Node.js, tj. Npm.

NPM (upravitelj paketa čvorova)

NPM je kratica od Node Package Manager koji je, kao što i samo ime govori, upravitelj paketa za Node.js pakete / module. Iz verzije Node 0.6.0. nadalje, npm je dodan kao zadani u instalaciji čvora. Štedi vas od muke s eksplicitnom instalacijom npm-a.



NPM u osnovi pomaže na dva načina:

kako testirati bazu podataka
  1. Pruža i hostira mrežna spremišta za node.js pakete / module koji se mogu lako preuzeti i koristiti u našim projektima. Možete ih pronaći ovdje: npmjs.com
  2. Pruža uslužni program naredbenog retka za instaliranje različitih Node.js paketa, upravljanje Node.js verzijama i ovisnostima paketa.

Ali sada se sigurno pitate koji su točno ti moduli i kako nam pomažu u izgradnji aplikacija Node.js. Pa, u sljedećem odjeljku ovog vodiča za Node.js dat ću vam cjelovit uvid u module Node.js.

Moduli Node.js

Moduli u Node.js predstavljaju razne funkcionalnosti koje su povezane u jednu ili više JS datoteka. Ovi moduli imaju jedinstveni kontekst, pa stoga nikada ne ometaju niti zagađuju opseg ostalih modula.

Ovi moduli omogućuju ponovnu upotrebu koda i poboljšavaju jednostavnost upotrebe. Node.js u osnovi nudi tri vrste modula:

  1. Osnovni moduli
  2. Lokalni moduli
  3. Moduli treće strane

Osnovni modul

Budući da je Node.js vrlo lagana Framework, jezgri modula spajaju apsolutno minimalne funkcionalnosti. Ti se moduli obično učitavaju kada Node proces započne svoje izvršavanje. Sve što trebate je uvesti ove temeljne module kako biste ih koristili u svom kodu.

Ispod sam nabrojao nekoliko važnih jezgri modula.

Osnovni modul Opis
http Sadrži klase, metode i događaje potrebne za stvaranje Node.js HTTP poslužitelja
url Sadrži metode za razlučivanje i raščlanjivanje URL-ova u Nodeu
niz upita Sadrži metode za rješavanje niza upita Node
staza Sadrži metode za rješavanje putova datoteka
fs Sadrži klase, metode i događaje za rad s I / O datotekama
Koristan Sadrži korisne funkcije koje mogu biti korisne za programere

Svoj osnovni modul možete učitati pomoću donjeg koda:

var modul = zahtijeva ('ime_modula')

Pogledajmo sada, što su 'lokalni moduli'.

Lokalni moduli

Lokalni moduli Node.js prilagođeni su moduli koje lokalno kreira korisnik / programer u aplikaciji. Ti moduli mogu uključivati ​​različite funkcionalnosti povezane u različite datoteke i mape koje se lako mogu distribuirati u zajednici Node.js pomoću NPM-a.

Ti se moduli učitavaju na sličan način kao i osnovni moduli. Pokazat ćemo vam kako to učiniti na osnovnom primjeru.

Izradite svoju prilagođenu / lokalnu datoteku module.js

var detalj = {ime: funkcija (ime) {console.log ('Ime:' + ime)}, domena: funkcija (domena) {console.log ('Domena:' + domena)}} module.exports = detalj

Uključite datoteku modula u glavnu datoteku aplikacije.

var myLogModule = zahtijeva ('./ Local_module.js') myLogModule.name ('Edureka') myLogModule.domain ('Obrazovanje')

Sada možete izvršiti ove datoteke pomoću naredbe ispod:

aplikacija čvora.js

Dopustite mi da vam sada pokažem što su vanjski moduli.

Vanjski moduli

Možete koristiti vanjski ili 3rdstrana modula samo preuzimanjem putem NPM-a. Te module uglavnom razvijaju drugi programeri i oni su besplatni za upotrebu. Nekoliko najboljih vanjskih modula su ekspresni, reakcijski, gutljajni, mungoski, mocha itd.

Globalno učitavanje modula treće strane:

npm instalacija --g

Uključite datoteku modula u glavnu datoteku aplikacije:

npm install --save

JSON datoteka

The datoteka package.json u Node.js je srce cijele aplikacije. U osnovi je manifestna datoteka koja sadrži metapodatke projekta. Dakle, razumijevanje i rad s ovom datotekom postaje vrlo važno za uspješan razvoj Node projekta.

Datoteka package.json obično se sastoji od metapodataka aplikacije, koji su dalje kategorizirani u sljedeće dvije kategorije:

  1. Utvrđivanje svojstava metapodataka: Sastoji se od svojstava poput naziva projekta, trenutne verzije modula, licence, autora projekta, opisa projekta itd.
  1. Pisanje izravno u datoteku: Potrebne podatke možete izravno zapisati u datoteku package.json i uključiti ih u svoj projekt.

Do sad ste već upoznali razne komponente Node JS aplikacije. U sljedećem odjeljku ovog vodiča za Node.js podijelit ću neke osnove o Node Js-u kako bismo mogli započeti s rukama.

Osnove Node.js-a

Budući da je Node.js JavaScript okvir, on koristi sintaksu JavaScript. Ako želite detaljno naučiti JavaScript, možete se pozvati na ovo . Za sada ću vam pripremiti neke osnove Node.js-a poput:

Vrste podataka

Kao i bilo koji drugi programski jezik, Node.js ima razne tipove podataka, koji se dalje kategoriziraju u primitivne i neprimitivne tipove podataka.

Primitivni tipovi podataka su:

  1. Niz
  2. Broj
  3. Booleova
  4. Nula
  5. Nedefiniran

Neprimitivni tipovi podataka su:

  1. Objekt
  2. Datum
  3. Niz

Varijable

Varijabla su entiteti koji sadrže vrijednosti koje se mogu razlikovati tijekom programa. Da biste stvorili varijablu u Node.js, morate upotrijebiti rezerviranu ključnu riječ var. Ne morate dodijeliti vrstu podataka, jer će je prevodilac automatski odabrati.

Sintaksa:

var varName = vrijednost

Operateri

Node.js podržava sljedeće operatore:

Vrsta operatora Operateri
Aritmetika +, -, /, *,%, ++, -
Zadatak =, + =, - =, * =, / =,% =
Uvjetovano =?
Usporedba ==, === ,! = ,! ==,>,> =,<, <=,
Logično &&, || ,!
Bitno &, |, ^, ~,<>, >>>

Funkcije

Funkcije u Node.js je blok koda koji ima naziv i napisan je za postizanje određenog zadatka. Za njezinu izradu trebate koristiti funkciju ključne riječi. Funkcija je općenito postupak u dva koraka. Prvo je definiranje funkcije, a drugo pozivanje na nju. Ispod je sintaksa stvaranja i pozivanja funkcije:

Primjer:

za što se koristi programiranje sas
// Definiranje funkcije funkcije display_Name (firstName, lastName) {alert ('Hello' + firstName + '' + lastName)} // Pozivanje funkcije display_Name ('Park', 'Jimin')

Predmeti

Objekt je neprimitivni tip podataka koji može sadržavati više vrijednosti u smislu svojstava i metoda. Node.js objekti su samostalni entiteti jer ne postoji koncept klase. Objekt možete stvoriti na dva načina:

  1. Korištenje Object literal
  2. Korištenje Object konstruktora

Primjer:

// objekt sa svojstvima i metodom var zaposlenik = {// svojstva firstName: 'Minho', lastName: 'Choi', dob: 35, plaća: 50000, // metoda getFullName: function () {return this.firstName + '' + this.lastName}}

Sustav datoteka

Da bi pristupio fizičkom datotečnom sustavu, Node.js koristi fs modul koji se u osnovi brine za sve asinkrone i sinkrone I / O operacije datoteka. Ovaj se modul uvozi pomoću naredbe u nastavku:

var fs = zahtijeva ('fs')

Neke od općih upotreba modula datotečnog sustava su:

  • Čitajte datoteke
    1. fs.readFile ()
var http = require ('http') var fs = require ('fs') http.createServer (function (req, res) {fs.readFile ('script.txt', function (err, data) {res.writeHead ( 200, {'Content-Type': 'text / html'}) res.write (data) res.end ()})}). Listen (8080)
  • Stvaranje datoteka
    1. appendFile ()
    2. otvoren()
    3. writeFile ()
  • Ažuriranje datoteka
    1. fs.appendFile ()
    2. fs.writeFile ()
  • Obriši datoteke
    1. fs.unlink ()
  • Preimenuj datoteke
    1. fs.rename ()

Dakle, s ovim naredbama možete u velikoj mjeri izvesti sve potrebne radnje na datotekama. Krenimo sada dalje s ovim vodičem za Node.js i pogledajte što su događaji i kako se njima rukuje u Node.js.

Događaji

Kao što sam već spomenuo, aplikacije Node.js su jednonitne i vode se događajima. Node.js podržava istodobnost jer se temelji na događajima i na taj način koristi koncepte poput događaja i povratnih poziva. Pozivi funkcije async pomažu Node.jsu u održavanju istodobnosti u cijeloj aplikaciji.

U osnovi, u aplikaciji Node.js postoji glavna petlja koja čeka i osluškuje događaje, a kad se bilo koji događaj dovrši, odmah pokreće funkciju povratnog poziva.

Ispod dijagram prikazuje kako se događaji pokreću u Node.js.

Model niti - Vodič za Node.js - Edureka

Ovdje morate napomenuti da, iako događaji izgledaju slično funkcijama povratnog poziva, ali razlika leži u njihovim funkcionalnostima. Kad asinkrona funkcija vrati svoje rezultate, s druge strane se pozivaju povratni pozivi, a obrada događaja u potpunosti funkcionira na uzorku promatrača. A u Node.js metode koje osluškuju događaje nazivaju se promatračima. U trenutku kada se događaj pokrene, njegova funkcija slušatelja automatski započinje s izvršavanjem. Moduli događaja i klasa EventEmitter pružaju više ugrađenih događaja koji se koriste za povezivanje događaja sa slušateljima događaja. U nastavku sam zapisao sintaksu za to.

Vezivanje događaja na slušatelja događaja

// Uvoz modula događaja var my_Events = require ('events') // Stvaranje objekta eventEmitter var my_EveEmitter = novi my_Events.EventEmitter ()

Vezivanje rukovatelja događaja za događaj

// Vezujući događaj i rukovatelj događajima my_EveEmitter.on ('eventName', eventHandler)

Otkazivanje događaja

// Pokretanje događaja my_EveEmitter.emit ('eventName')

Pokušajmo sada implementirati stvari o kojima sam raspravljao u ovom odjeljku Node.js događaja.Donji kod prikazuje jednostavan prikaz izvršenja događaja u Node.js.

var emiter = require ('events'). EventEmitter funkcija iterateProcessor (num) {var emt = new emitter () setTimeout (function () {for (var i = 1 i & lt = num i ++) {emt.emit ('BeforeProcess' , i) console.log ('Iteracija obrade:' + i) emt.emit ('AfterProcess', i)}}, 5000) return emt} var it = iterateProcessor (5) it.on ('BeforeProcess', function ( info) {console.log ('Pokretanje postupka za' + info)}) it.on ('AfterProcess', funkcija (info) {console.log ('Završavanje obrade za' + info)

U sljedećem odjeljku ovog vodiča za Node.js dat ću vam uvid u jedan od najvažnijih modula Node.js pod nazivom HTTP modul.

HTTP modul

Općenito se Node.js koristi za razvoj aplikacija temeljenih na poslužitelju. Ali pomoću modula možete lako stvoriti web poslužitelje koji mogu odgovoriti na zahtjeve klijenta. Stoga se također poziva na Web modul i pruža module poput HTTP-a i zahtjeva koji olakšavaju Node.js u obradi zahtjeva poslužitelja.

Ovaj modul možete jednostavno uključiti u svoju aplikaciju Node.js tako da napišete donji kod:

windows dodati java na put
var http = zahtijeva ('http')

Ispod sam napisao kôd koji pokazuje kako je web poslužitelj razvijen u Node.js.

// pozivanje http biblioteke var http = require ('http') var url = require ('url') // stvaranje poslužitelja var server = http.createServer (function (req, res) {// postavljanje zaglavlja sadržaja res.writeHead ( 200, ('Content-Type', 'text / html')) var q = url.parse (req.url, true) .query var txt = q.year + '' + q.month // pošalji niz na odgovor res.end (txt)}) // dodjeljivanje 8082 kao poslužitelja luke poslužitelja poslužitelja.listen (8082)

U sljedećem odjeljku ovog vodiča za Node.js govorit ću o Express.js-u koji se jako koristi za razvoj web aplikacija na strani poslužitelja.

Express.js

Express.js je okvir izgrađen na vrhu Node.js koji olakšava upravljanje protokom podataka između poslužitelja i ruta u aplikacijama na strani poslužitelja. To je lagan i fleksibilan okvir koji pruža širok raspon značajki potrebnih za web, kao i za razvoj mobilnih aplikacija.

Express.js je razvijen na međuprogramskom modulu Node.js pod nazivom Spojiti . Modul za povezivanje nadalje koristi http modul za komunikaciju s Node.js. Dakle, ako radite s bilo kojim od modula međuopreme baziranim na povezivanju, tada se lako možete integrirati s Express.js.

Ne samo to, nekoliko glavnih prednosti Express.js-a su:

  • Ubrzava razvoj web aplikacija
  • Pomaže u izgradnji mobilnih i web aplikacija jednostrane, višestrane i hibridne vrste
  • Express nudi dva pokretačka mehanizma, naime, Jade i EJS
  • Express slijedi arhitekturu Model-View-Controller (MVC)
  • Ostvaruje integraciju s bazama podataka kao što su MongoDB, Redis, MySQL
  • Definira pogrešku pri rukovanju međuprogramskim softverom
  • Pojednostavljuje konfiguraciju i prilagodbu jednostavno za aplikaciju.

Uz sve ove značajke, Express preuzima odgovornost za pozadinski dio u MEAN stogu. Mean Stack je JavaScript softver otvorenog koda koji se koristi za izradu dinamičnih web stranica i web aplikacija. Ovdje, ZNAČI stoji za M ongoDB, JE xpress.js, DO ngularJS, i N ode.js.

Pogledajmo sada jednostavan primjer kako bismo razumjeli kako Express.js radi s Node.jsom kako bi nam olakšao posao. Ali prije nego što počnete raditi s Express.js-om, morate ga instalirati u svoj sustav.

Da biste Express.js instalirali globalno, možete upotrijebiti sljedeću naredbu:

npm instaliraj -g express

Ili, ako ga želite instalirati lokalno u mapu projekta, morate izvršiti donju naredbu:

npm instaliraj express --save

Budući da smo završili sa svim pripremama, krenimo sada izravno u praktičnu provedbu. Ovdje ću prikazati jednostavnu aplikaciju za provjeru autentičnosti korisnika pomoću Node.js i Express.js.

Vodič za Node.js korak po korak Razvoj aplikacija s Express.js

Za ovo će nam trebati datoteke u nastavku:

  • paket.json
  • script.js
  • pogleda
    • indeks.žad
    • prijava.jade
    • siguran.žad
    • neovlašteno.žad
    • dobrodošao.žad
  • lib
    • rute.js

Dakle, krenimo s paket.json .

{'author': 'Edureka', 'name': 'Express_Demo', 'description': 'Express with Node.js', 'version': '0.0.0', 'scripts': {'start': 'node script.js '},' engine ': {' node ':' ~ 0.4.12 '},' dependencies ': {' connect-flash ':' ^ 0.1.1 ',' cookie-parser ':' ^ 1.4 .3 ',' express ':' ^ 3.21.2 ',' jade ':' ^ 0.20.3 ',' req-flash ':' 0.0.3 '},' devDependencies ': {}}

Dalje, trebate stvoriti script.js .

var express = require ('express') var http = require ('http') var port = 8999 var app = express () const flash = require ('connect-flash') var cookieParser = require ('cookie-parser') var poslužitelj = http.createServer (aplikacija) funkcija checkAuth (req, res, next) {console.log ('checkAuth' + req.url) // ne služi / osigurava onima koji nisu prijavljeni ako (req.url = == '/ secure' && (! req.session ||! req.session.authenticated)) {res.render ('neovlašteno', {status: 403}) return} next ()} app.use (flash () ) app.use (cookieParser ()) app.use (express.session ({tajna: 'primjer'}))) app.use (express.bodyParser ()) app.use (checkAuth) app.use (app.router) app.set ('view engine', 'jade') app.set ('view options', {layout: false}) require ('./ lib / routes.js') (app) app.listen (port) konzola .log ('Čvor sluša na priključku% s', priključak)

Sada stvorite mapu s prikazom pod koju ćete dodavati žadne datoteke koje će biti odgovorne za različite prikaze stranica. Prva datoteka prikaza koju trebate stvoriti je indeks.žad .

!!! 5 html (lang = 'en') naslov glave Ovjera korisnika Primjer tijela h1 centar Provjera autentičnosti Demo pomoću Express h3 Idite do h4 ul li: a (href = '/ secure') Sigurni sadržaj li: a (href = '/ welcome') Stranica dobrodošlice li: a (href = '/ logout') Odjava

Sada stvorite prijava.jade datoteka.

!!! 5 html (lang = 'en') head title Primjer ekspresne provjere autentičnosti body h1 center Prijava u ovaj centar primjera brze provjere autentičnosti p Koristiti korisnik za korisničko ime i proći za lozinku. form (method = 'post') p label (for = 'username') Unos adrese e-pošte (type = 'text', name = 'username', class = 'form-control', id = 'exampleInputPassword1', placeholder = ' E-pošta ', style =' width: 400px ') p središnja oznaka (za =' lozinka ') Unos lozinke (type =' password ', name =' password ', class =' ​​form-control ', id =' exampleInputPassword1 ', placeholder = 'Lozinka', style = 'width: 400px') p center Submit - svaka poruka u flash h4 (style = 'color: red') # {message}

Sljedeći korak je stvaranje dobrodošao.žad .

!!! 5 html (lang = 'en') naslov glave Primjer provjere autentičnosti korisnika body h1 center Dobrodošli u Vodič za Edureka!

Zatim stvorite siguran.žad datoteka.

!!! 5 html (lang = 'en') naslov glave Izričajna provjera autentičnosti Primjer tijelo h1 centar Zdravo, sigurni korisnik. p Dođite do ul li: a (href = '/ secure') Sigurni sadržaj li: a (href = '/ welcome') Stranica dobrodošlice li: a (href = '/ logout') Odjava

Sada stvorite neovlašteno.žad datoteka.

!!! 5 html (lang = 'en') naslov glave Primjer autentifikacije korisnika body h1 center Neovlašteno p Neovlašteno gledate ovu stranicu. p Molim ' nastaviti

Sada morate stvoriti mapu i imenovati je lib . Sada stvorite a route.js datoteka koja će preslikati sve stranice.

var util = require ('util') module.exports = function (app) {app.get ('/', function (req, res, next) {res.render ('index')}) app.get (' / dobrodošli ', funkcija (req, res, next) {res.render (' welcome ')}) app.get (' / secure ', function (req, res, next) {res.render (' secure ')} ) app.get ('/ login', function (req, res, next) {res.render ('login', {flash: req.flash ()})}) app.post ('/ login', function ( req, res, next) {// možda biste željeli potražiti bazu podataka ili nešto više prilagodljivo ovdje ako (req.body.username && req.body.username === 'user' && req.body.password && req.body.password === 'pass') {req.session.authenticated = true res.redirect ('/ secure')} else {req.flash ('pogreška', 'Korisničko ime i lozinka nisu točni') res. preusmjeravanje ('/ prijava')}}) app.get ('/ odjava', funkcija (req, res, next) {delete req.session.authenticated res.redirect ('/')})}

Sada, ako želite samostalno izvršiti ovaj kôd, možete ga preuzeti ovdje: Vodič za Node.js PDF .

Ovim smo došli do kraja ovog vodiča za Node.js. Nadam se da sam uspio objasniti koncepte Node.js-a od temelja.

Ako ste pronašli ovaj 'Vodič za Node.js ”Relevantno, provjerite Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog vodiča za Node.js i javit ćemo vam se.