Node.js õpetus - täielik juhend algajatele



Selles Node.js õpetuses räägitakse Node.js põhiarhitektuurist, toimimisest ja erinevatest moodulitest. Samuti demonstreeritakse Node.js ja Express.js praktilist rakendamist.

Kui olete kunagi Node.js-ist kuulnud, võite teada, et see on üks JavaScripti silmapaistvamaid ja võimsamaid raamistikke. Alates väljaandmisest on ta jätkuvalt oma kägistamist IT-turul hoidnud. Isegi uue ja elava kasutuselevõtuga meeldib , , Meteor jne., Näib, et Node.js populaarsus ei lõpe kunagi. Ei tea, miks? Selle Node.js õpetuse abil annan teile sellest täieliku ülevaate. Niisiis, olge valmis Node.js-i armuma.

Selles Node.js õpetuses arutlen alljärgnevaid teemasid:





Mis on Node.js?

Node.js on võimas raamistik, mis on välja töötatud Chrome'i V8 JavaScripti mootor mis kompileerib JavaScripti otse masinakoodi. See on kerge raamistik, mida kasutatakse serveripoolsete veebirakenduste loomiseks ja laiendab JavaScripti API-d tavapäraste serveripoolsete funktsioonide pakkumiseks. Seda kasutatakse üldiselt suuremahuliste rakenduste väljatöötamiseks, eriti video voogesitussaitide, üheleheliste rakenduste ja muude veebirakenduste jaoks. Node.js teeb sündmustepõhise, mitteblokeeriva I / O mudeli kasutamine, mis muudab selle andmemahukate reaalajas rakenduste jaoks õigeks valikuks.

Nagu kõik muud programmeerimiskeeled, kasutab ka node.js pakette ja mooduleid. Need on teegid, mis sisaldavad erinevaid funktsioone ja imporditakse npm-ist (sõlmpakettide haldur) meie koodi ja neid kasutatakse programmides. Mõned peamised funktsioonid, mis määratlevad Node.js, on loetletud allpool:



Node.js funktsioonid

  1. Avatud lähtekoodiga
    Node.js on avatud lähtekoodiga raamistiku MIT-litsents, mida toetab tohutu kogukond. Selle kogukond on üsna aktiivne, aidates Node.js-i rakendustele uusi võimalusi lisada.
  2. Lihtne ja kiire
    Kuna Node.js on üles ehitatud Google Chrome'i V8 JavaScripti mootorile, suudavad selle teegid koodi kiirelt käivitada.
  3. Asünkroonne
    Kõik Node.js-i teegid on asünkroonsed, mis tähendab, et Node.js-põhised serverid ei oota kunagi, kuni API saadab vastuse tagasi ja liigub järgmisesse API-sse.
  4. Kõrge mastaapsus
    Sündmuste mehhanismi tõttu on Node.js väga skaleeritav ja aitab serveril blokeerimata vastuses.
  5. Ühe keermega
    Sündmuste loopimise abil suudab Node.js järgida üheahelalist mudelit. See võimaldab ühe programmiga töödelda mitut taotlust.
  6. Puhverdamine puudub
    Node.js-i rakenduste üks peamisi funktsioone on see, et see ei puhverda kunagi andmeid.
  7. Platvormidevaheline
    Node.js-i saab hõlpsasti ehitada ja juurutada erinevatele platvormidele nagu Windows, MAC ja Linux.

Läheme nüüd edasi ja vaatame, kuidas tegelikku koodi brauserisse juurutada. Kuid enne seda peate oma süsteemidesse alla laadima ja installima. Täieliku teabe saamiseks võite viidata mu teisele artiklile Node.js installiprotsess .

Niisiis, liigume nüüd selles Node.js õpetuses, kus räägin Node.js kõige olulisemast komponendist, st npm.

NPM (sõlmepakettide haldur)

NPM tähistab Node Package Manageri, mis, nagu nimigi ütleb, on Node.js pakettide / moodulite paketihaldur. Alates sõlme versioonist 0.6.0. edaspidi on sõlme installimisel vaikimisi lisatud npm. See säästab teid probleemidest npm selgesõnalise installimisega.



NPM aitab põhimõtteliselt kahel viisil:

erinevus abstraktse klassi ja liidese vahel
  1. Pakub ja majutab veebihoidlaid node.js pakettidele / moodulitele, mida saab hõlpsasti alla laadida ja meie projektides kasutada. Need leiate siit: npmjs.com
  2. Pakub käsurea utiliiti erinevate Node.js pakettide installimiseks, Node.js versioonide ja pakettide sõltuvuste haldamiseks.

Kuid nüüd peate kindlasti mõtlema, mis need moodulid täpselt on ja kuidas need aitavad meil Node.js-i rakendusi üles ehitada. Noh, selle Node.js õpetuse järgmises jaotises annan teile täieliku ülevaate Node.js moodulitest.

Node.js moodulid

Node.js moodulid esindavad erinevaid funktsioone, mis on ühendatud üheks või mitmeks JS-failiks. Nendel moodulitel on ainulaadne kontekst, seega ei sega nad kunagi ega moodusta teiste moodulite ulatust.

Need moodulid võimaldavad koodi korduvkasutamist ja hõlbustavad kasutamist. Node.js pakub põhimõtteliselt kolme tüüpi mooduleid:

  1. Põhimoodulid
  2. Kohalikud moodulid
  3. Kolmanda osapoole moodulid

Tuum moodul

Kuna Node.js on väga kerge raamistikus pakuvad põhimoodulid absoluutse minimaalse funktsionaalsuse. Need moodulid laaditakse tavaliselt siis, kui sõlme protsess käivitab. Kõik, mida peate tegema, on importida need põhimoodulid, et neid oma koodis kasutada.

Allpool on loetletud mõned olulised Core moodulid.

Tuum moodul Kirjeldus
http Sisaldab Node.js HTTP-serveri loomiseks vajalikke klasse, meetodeid ja sündmusi
URL Sisaldab meetodeid URL-i eraldamiseks ja sõlmes sõelumiseks
päringukord Sisaldab meetodeid sõlme päringustringiga tegelemiseks
tee Sisaldab meetodeid failiradade käsitlemiseks
fs Sisaldab klasse, meetodeid ja sündmusi faili I / O-ga töötamiseks
Kasulik Sisaldab kasulikke funktsioone, mis võivad programmeerijatele kasulikud olla

Põhimooduli saate laadida alloleva koodi abil:

var moodul = nõuda ('mooduli_nimi')

Vaatame nüüd, mis on kohalikud moodulid.

Kohalikud moodulid

Node.js-i kohalikud moodulid on kohandatud moodulid, mille kasutaja / arendaja loovad rakenduses kohapeal. Need moodulid võivad sisaldada erinevaid funktsioone, mis on ühendatud erinevatesse failidesse ja kaustadesse ning mida saab NPM-i abil hõlpsasti levitada Node.js-i kogukonnas.

Need moodulid laaditakse sarnaselt põhimoodulitega. Näitame teile, kuidas seda põhinäite abil teha.

Looge oma kohandatud / kohalik module.js fail

var detail = {nimi: funktsioon (nimi) {konsool.log ('Nimi:' + nimi)}, domeen: funktsioon (domeen) {konsool.log ('Domeen:' + domeen)}} moodul.eksport = detail

Lisage oma moodulifail oma peamisesse rakenduse faili.

var myLogModule = nõuda ('./ Local_module.js') myLogModule.name ('Edureka') myLogModule.domain ('Haridus')

Nüüd saate neid faile käivitada käsuga allpool:

sõlm application.js

Lubage mul nüüd näidata, mis on välised moodulid.

Välised moodulid

Võite kasutada väliseid või 3rdpartei mooduleid, laadides need alla ainult NPM-i kaudu. Need moodulid on üldjuhul välja töötatud teiste arendajate poolt ja neid saab tasuta kasutada. Vähesed parimatest välismoodulitest on ekspress-, reageerimis-, lonksu-, mongoose-, mocha- jne.

Kolmanda osapoole moodulite ülemaailmne laadimine:

npm install --g

Lisage oma moodulifail oma peamisesse rakendusfaili:

npm install --save

JSON-fail

The faili package.json Node.js-is on kogu rakenduse süda. Põhimõtteliselt on see manifestifail, mis sisaldab projekti metaandmeid. Seega muutub selle faili mõistmine ja sellega töötamine sõlme edukaks arendamiseks väga oluliseks.

Fail pack.json koosneb üldjuhul rakenduse metaandmetest, mis liigitatakse veel kahte kategooriasse:

  1. Metaandmete omaduste tuvastamine: See koosneb sellistest omadustest nagu projekti nimi, mooduli praegune versioon, litsents, projekti autor, projekti kirjeldus jne.
  1. Kirjutamine otse faili: Vajaliku teabe saate otse faili package.json kirjutada ja selle oma projekti lisada.

Nüüdseks olete juba tutvunud Node JS-i rakenduse erinevate komponentidega. Selle Node.js õpetuse järgmises jaotises jagan mõningaid Node Js põhitõdesid, et saaksime käed külge panna.

Node.js põhitõed

Kuna Node.js on JavaScripti raamistik, kasutab see JavaScripti süntaksit. Kui soovite JavaScripti üksikasjalikult õppida, võite sellele viidata . Praegu harjan teid mõne Node.js põhitõega nagu:

Andmetüübid

Nagu igal teisel programmeerimiskeelel, on ka Node.js-l erinevad andmetüübid, mis liigitatakse edasi primitiivseteks ja mitte-primitiivseteks andmetüüpideks.

Ürgandmetüübid on:

  1. String
  2. Arv
  3. Boolean
  4. Null
  5. Määratlemata

Mitteprimitiivsed andmetüübid on:

  1. Objekt
  2. Kuupäev
  3. Massiiv

Muutujad

Muutuja on üksused, millel on väärtused, mis võivad programmi käigus muutuda. Muutuja loomiseks Node.js-s peate kasutama reserveeritud märksõna var. Andmetüüpi ei pea määrama, sest kompilaator valib selle automaatselt.

Süntaks:

var varName = väärtus

Operaatorid

Node.js toetab järgmisi operaatoreid:

Operaatori tüüp Operaatorid
Aritmeetika +, -, /, *,%, ++, -
Ülesanne =, + =, - =, * =, / =,% =
Tingimuslik =?
Võrdlus ==, === ,! = ,! ==,>,> =,<, <=,
Loogiline &&, || ,!
Bititi &, |, ^, ~,<>, >>>

Funktsioonid

Funktsioonid Node.js-is on koodiplokk, millel on nimi ja mis on kirjutatud konkreetse ülesande saavutamiseks. Selle loomiseks peate kasutama märksõnafunktsiooni. Funktsioon on üldiselt kaheastmeline protsess. Esimene on funktsiooni määratlemine ja teine ​​sellele tuginemine. Allpool on funktsiooni loomise ja kutsumise süntaks:

Näide:

// Funktsiooni funktsiooni display_Name (eesnimi, perekonnanimi) määratlemine {alert ('Tere' + eesnimi + '' + perenimi)} // Funktsiooni display_Name ('Pargi', 'Jimin') kutsumine

Objektid

Objekt on mitteprimitiivne andmetüüp, mis võib omaduste ja meetodite osas sisaldada mitut väärtust. Node.js objektid on eraldiseisvad üksused, kuna klassi mõistet pole. Objekti saate luua kahel viisil:

  1. Object literal kasutamine
  2. Objekti konstruktori kasutamine

Näide:

// objekt atribuutide ja meetodiga var töötaja = {// omadused eesnimi: 'Minho', perekonnanimi: 'Choi', vanus: 35, palk: 50000, // meetod getFullName: function () {tagastab selle.esimeNimi + '' + this.lastName}}

Failisüsteem

Füüsilisele failisüsteemile juurdepääsemiseks kasutab Node.js faili fs moodul, mis põhiliselt hoolitseb kõigi asünkroonsete ja sünkroonsete failide sisend- / väljundoperatsioonide eest. See moodul imporditakse järgmise käsuga:

var fs = nõuda ('fs')

Mõned failisüsteemi moodulite üldised kasutusalad on:

  • Failide lugemine
    1. fs.readFile ()
var http = nõuda ('http') var fs = nõuda ('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 ()})}}). Kuula (8080)
  • Looge faile
    1. appendFile ()
    2. avatud ()
    3. writeFile ()
  • Failide värskendamine
    1. fs.appendFile ()
    2. fs.writeFile ()
  • Kustuta failid
    1. fs.unlink ()
  • Nimeta failid ümber
    1. fs.rename ()

Niisiis saate nende käskude abil oma failides peaaegu kõik vajalikud toimingud läbi viia. Liigume nüüd selle Node.js õpetuse abil edasi ja vaatame, mis on sündmused ja kuidas neid Node.js-s käsitletakse.

Sündmused

Nagu ma juba mainisin, on Node.js-i rakendused ühe keermega ja sündmustepõhised. Node.js toetab samaaegsust, kuna see on sündmuspõhine, ja kasutab seega mõisteid nagu sündmused ja tagasihelistamised. Async-funktsiooni väljakutsed aitavad Node.js-l säilitada kogu rakenduse samaaegsust.

Põhimõtteliselt on Node.js-i rakenduses peatsükkel, mis ootab ja kuulab sündmusi ning kui mõni sündmus on lõpule jõudnud, algatab see kohe tagasihelistamisfunktsiooni.

Allpool olev diagramm näitab, kuidas sündmusi juhitakse Node.js-is.

Keermemudel - Node.js õpetus - Edureka

Siinkohal peate märkima, et kuigi sündmused näevad välja sarnased tagasihelistamisfunktsioonidega, kuid erinevus seisneb nende funktsionaalsuses. Kui asünkroonne funktsioon tagastab tulemuste, kutsutakse tagasihelistamised seevastu toimima sündmuste käsitlemine vaatleja mustri järgi. Ja Node.js-is nimetatakse sündmusi kuulavaid meetodeid vaatlejateks. Sündmus käivitub, selle kuulaja funktsioon käivitub automaatselt. Sündmuse moodulid ja EventEmitter klass pakuvad mitut sisseehitatud sündmust, mida kasutatakse sündmuste sidumiseks sündmuste kuulajatega. Allpool olen selle süntaks kirja pannud.

mis on jama rmi

Sündmuse sidumine sündmuste kuulajaga

// Impordi sündmuste moodul var my_Events = required ('events') // Loo eventEmitteri objekt var my_EveEmitter = new my_Events.EventEmitter ()

Sündmuse käitleja sidumine sündmusega

// Sidus sündmus ja sündmuste käitleja my_EveEmitter.on ('eventName', eventHandler)

Sündmuse käivitamine

// Sündmuse käivitamine my_EveEmitter.emit ('eventName')

Proovime nüüd rakendada asju, mida olen selles jaotises Node.js Event arutanud.Allolev kood näitab sündmuse täitmise lihtsat esitust Node.js-is.

var emitter = nõuda ('events'). EventEmitter funktsioon iterateProcessor (num) {var emt = new emitter () setTimeout (function () {for (var i = 1 i & lt = num i ++) {emt.emit ('BeforeProcess' , i) console.log ('Iteratsiooni töötlemine:' + i) emt.emit ('AfterProcess', i)}}, 5000) tagastab emt} var it = iterateProcessor (5) it.on ('BeforeProcess', function ( info) {console.log ('Protsessi käivitamine' + info 'jaoks)}) it.on (' AfterProcess ', funktsioon (info) {console.log (' + info töötlemise lõpetamine)

Selle Node.js õpetuse järgmises jaotises annan teile ülevaate Node.js ühe olulisima mooduli nimega HTTP moodul.

HTTP moodul

Üldiselt kasutatakse Node.js serveripõhiste rakenduste arendamiseks. Kuid mooduli abil saate hõlpsasti luua veebiservereid, mis vastavad kliendi soovidele. Seega viidatakse sellele ka veebimoodulile ja see pakub mooduleid nagu HTTP ja request, mis hõlbustavad Node.js-i serveripäringute töötlemisel.

Selle mooduli saate hõlpsalt lisada oma rakendusse Node.js, kirjutades lihtsalt alloleva koodi:

var http = nõudma ('http')

Allpool olen kirjutanud koodi, mis näitab, kuidas veebiserverit Node.js-is arendatakse.

// http-teegi kutsumine var http = nõuda ('http') var url = nõuda ('url') // serveri loomine var server = http.createServer (function (req, res) {// sisu päise seadistamine res.writeHead ( 200, ('Content-Type', 'text / html')) var q = url.parse (req.url, true). Päring var txt = q.aasta + '' + q.kuu // saadab stringi vastuseks res.end (txt)}) // 8082 määramine serveri kuulamise pordiserveriks. kuulake (8082)

Selle Node.js õpetuse järgmises osas räägin Express.js-st, mida kasutatakse palju serveripoolsete veebirakenduste arendamiseks.

Express.js

Express.js on Node.js peale ehitatud raamistik, mis hõlbustab serveripoolsetes rakendustes serveri ja marsruutide vahelise andmevoo haldamist. See on kerge ja paindlik raamistik, mis pakub laia valikut veebi jaoks vajalikke funktsioone ning mobiilirakenduste arendamist.

Express.js on välja töötatud Node.js nimelise vahevara moodulil ühendada . Ühendusmoodul kasutab lisaks http moodul suhtlemiseks Node.js-ga. Seega, kui töötate mõne ühenduspõhise vahevara mooduliga, saate hõlpsasti integreerida Express.js-iga.

Vähe sellest, mõned Express.js peamistest eelistest on:

kuupäeva andmetüüp sql server
  • Muudab veebirakenduste arendamise kiiremaks
  • Aitab ehitada ühe-, mitmelehelisi ja hübriidset tüüpi mobiilseid ja veebirakendusi
  • Express pakub kahte mallimootorit, nimelt Jade ja EJS
  • Express järgib Model-View-Controller (MVC) arhitektuuri
  • Integreerib selliseid andmebaase nagu MongoDB, Redis, MySQL
  • Määrab vea vahevara käitlemisel
  • Lihtsustab rakenduse konfigureerimist ja kohandamist.

Kõigi nende funktsioonide korral võtab Express vastutuse MEAN-i virna taustaprogrammi eest. Mean Stack on avatud lähtekoodiga JavaScripti tarkvarapakett, mida kasutatakse dünaamiliste veebisaitide ja veebirakenduste loomiseks. Siin, TÄHENDA tähistab M ongoDB, ON xpress.js, TO ngularJS ja N ode.js.

Vaatame nüüd lihtsat näidet, et mõista, kuidas Express.js töötab Node.js-iga meie töö hõlbustamiseks. Kuid enne, kui hakkate Express.js-iga töötama, peate selle oma süsteemi installima.

Express.js globaalseks installimiseks võite kasutada järgmist käsku:

npm install -g express

Või kui soovite selle kohalikult oma projekti kausta installida, peate täitma järgmise käsu:

npm install express --save

Kuna kõik ettevalmistused on tehtud, läheme nüüd otse praktilisse elluviimisse. Siin ma näitan lihtsat kasutajate autentimise rakendust Node.js ja Express.js kasutades.

Node.js juhendaja Rakenduse arendamine samm-sammult Express.js-iga

Selleks vajame allpool olevaid faile:

  • pakett.json
  • script.js
  • vaated
    • register.jade
    • login.jade
    • turvaline.jade
    • volitamata.jade
    • tere tulemast.jade
  • lib
    • route.js

Alustame siis pakett.json .

{'author': 'Edureka', 'name': 'Express_Demo', 'description': 'Express with Node.js', 'version': '0.0.0', 'skriptid': {'start': 'sõlm script.js '},' mootorid ': {'sõlm':' ~ 0.4.12 '},' sõltuvused ': {' connect-flash ':' ^ 0.1.1 ',' cookie-parser ':' ^ 1.4 .3 ',' express ':' ^ 3.21.2 ',' jade ':' ^ 0.20.3 ',' req-flash ':' 0.0.3 '},' devDependencies ': {}}

Järgmisena peate looma script.js .

var express = nõuda ('express') var http = nõuda ('http') var port = 8999 var app = express () const flash = nõuda ('connect-flash') var cookieParser = nõuda ('cookie-parser') var server = http.createServer (rakendus) funktsiooni checkAuth (req, res, next) {console.log ('checkAuth' + req.url) // ei teenita / turvaline neile, kes pole sisse loginud, kui (req.url = == '/ secure' && (! req.session ||! req.session.authenticated)) {res.render ('volitamata', {status: 403}) return} next ()} app.use (flash () ) app.use (cookieParser ()) app.use (express.session ({secret: 'example'})) app.use (express.bodyParser ()) app.use (checkAuth) app.use (app.router) app.set ('view engine', 'jade') app.set ('view options', {layout: false}) nõuda ('./ lib / route.js') (app) app.listen (port) konsool .log ('sõlme kuulamine sadamas% s', port)

Nüüd looge kaust nimega vaade, mille alla lisate jade-failid, mis vastutavad erinevate lehevaatamiste eest. Esimene vaatefail, mille peate looma, on register.jade .

!!! 5 html (lang = 'en') pealkiri Kasutaja autentimine Näide body h1 keskusest Autentimise demo Express h3 abil Navigeerige h4 ul li: a (href = '/ secure') Turvaline sisu li: a (href = '/ welcome') Tervitusleht li: a (href = '/ logout') Väljalogimine

Nüüd looge login.jade faili.

!!! 5 html (lang = 'en') pea pealkiri Ekspress-autentimise näide body h1 keskus Logi sisse sellesse Expressi autentimise näitekeskusesse p Kasuta kasutaja kasutajanime ja üle andma parooli saamiseks. vorm (meetod = 'postitus') p silt (for = 'kasutajanimi') E-posti aadressi sisestus (tüüp = 'tekst', nimi = 'kasutajanimi', class = 'vormi juhtimine', id = 'näidePassword1', kohatäide = ' E-post ', style =' width: 400px ') p keskuse silt (for =' parool ') Parooli sisestamine (tüüp =' parool ', nimi =' parool ', class =' ​​vormikontroll ', id =' exampleInputPassword1 ', kohahoidja = 'Parool', style = 'laius: 400px') p keskel Esita - kõik sõnumid välkkiirelt h4 (style = 'color: red') # {sõnum}

Järgmine samm on tere tulemast.jade .

!!! 5 html (lang = 'et') pealkiri Kasutaja autentimine Keha h1 keskuse näide Tere tulemast Edureka õpetusse!

Järgmisena looge turvaline.jade faili.

!!! 5 html (lang = 'en') pea pealkiri Kiire autentimine Näide body h1 center Tere, turvaline kasutaja. p Liikuge saidile ul li: a (href = '/ secure') Turvaline sisu li: a (href = '/ welcome') Tervitusleht li: a (href = '/ logout') Logi välja

Nüüd looge volitamata.jade faili.

!!! 5 html (lang = 'et') pealkiri Kasutaja autentimine Näide body h1 center Volitamata p Te pole selle lehe vaatamiseks volitatud. p Palun ' jätkama

Nüüd peate looma kausta ja nimetama selle lib . Nüüd looge a route.js fail, mis kaardistab kõik lehed.

var util = nõuda ('util') moodul.eksport = funktsioon (rakendus) {app.get ('/', function (req, res, järgmine) {res.render ('register')}) app.get (' / welcome ', function (req, res, next) {res.render (' welcome ')}) app.get (' / secure ', function (req, res, next) {res.render (' turvaline ')} ) app.get ('/ login', funktsioon (req, res, järgmine) {res.render ('login', {flash: req.flash ()})}}) app.post ('/ login', funktsioon ( req, res, next) {// võiksite siin otsida andmebaasi või midagi muudetavamat, kui (req.body.username && req.body.username === 'kasutaja' && req.body.password && req.body.password === 'pass') {req.session.authenticated = true res.redirect ('/ secure')} else {req.flash ('tõrge', 'kasutajanimi ja parool on valed') res. ümbersuunamine ('/ login')}}) app.get ('/ logout', funktsioon (req, res, järgmine) {kustuta req.session.authenticated res.redirect ('/')})}

Kui soovite selle koodi iseseisvalt käivitada, saate selle alla laadida siit: Node.js juhendaja PDF .

Sellega jõuame selle Node.js õpetuse lõpuni. Loodan, et suutsin Node.js mõisteid maast madalast lahti seletada.

Kui leidsite selle „Node.js õpetuse ”Asjakohane, vaadake autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma.

Kas teil on meile küsimus? Palun mainige seda selle Node.js õpetuse kommentaaride jaotises ja me võtame teiega ühendust.