Mis täpselt on Node.js?

Node.js on JavaScripti käituse keskkond. Kõlab suurepäraselt, aga mida see tähendab? Kuidas see töötab?

Run-time keskkond Node.js sisaldab kõike, mida vajate JavaScripti abil kirjutatud programmi käivitamiseks.

Node.js tekkis siis, kui JavaScripti algsed arendajad laiendasid seda milleltki, mida sai käivitada ainult brauseris, milleni, mida saaksite oma arvutis kasutada iseseisva rakendusena.

Nüüd saate JavaScripti abil teha palju enamat kui lihtsalt veebisaitide interaktiivseks muutmine.

JavaScripti abil saab nüüd teha asju, mida muud skriptikeeled, näiteks Python, saavad teha.

Nii teie brauseri JavaScripti kui ka Node.js töötavad JavaScripti käitusmootoriga V8. See mootor võtab teie JavaScripti koodi ja teisendab selle kiiremaks masinakoodiks. Masinkood on madala taseme kood, mida arvuti saab käivitada, ilma et oleks vaja seda enne tõlgendada.

Miks Node.js?

Siin on ametlik Node.js veebisaidil esitatud ametlik määratlus:

Node.js® on JavaScripti käitusaeg, mis on ehitatud Chrome'i V8 JavaScripti mootorile.

Node.js kasutab sündmustepõhist mitteblokeerivat sisend- ja väljundmudelit, mis muudab selle kergeks ja tõhusaks.

Node.js-i paketiökosüsteem npm on maailma suurim avatud lähtekoodiga raamatukogude ökosüsteem.

Juba arutasime selle definitsiooni esimest rida: „Node.js® on JavaScripti käitusaeg, mis on ehitatud Chrome'i V8 JavaScripti mootorile.” Mõistame nüüd kahte ülejäänud rida, et saaksime teada, miks Node.js nii populaarne on.

I / O viitab sisendile / väljundile. See võib olla kõik, alates kohalike failide lugemisest / kirjutamisest kuni HTTP-päringu tegemiseni API-le.

I / O võtab aega ja blokeerib seega muud funktsioonid.

Mõelge stsenaariumile, kus taotleme kasutajate1 ja kasutaja2 üksikasjade tagapõhist andmebaasi ning printige need seejärel ekraanile / konsoolile. Sellele päringule vastamine võtab aega, kuid mõlemat kasutajaandmete päringut saab teostada iseseisvalt ja samaaegselt.

I / O blokeerimine

Blokeerimismeetodi korral ei algatata kasutaja2 andmepäringut enne, kui kasutaja1 andmed ekraanile prinditakse.

Kui see oleks veebiserver, peaksime iga uue kasutaja jaoks alustama uut lõime. Kuid JavaScript on üheahelaline (mitte tegelikult, kuid sellel on üheahelaline sündmuse silmus, mida arutame veidi hiljem). Nii et see ei muudaks JavaScripti mitmekülgsete ülesannete jaoks eriti sobivaks.

Seal tuleb sisse mitteblokeeriv osa.

Mitteblokeeriv I / O

Teisest küljest saate blokeerimata päringut kasutades algatada kasutaja2 andmepäringu, ootamata vastust kasutaja1 päringule. Mõlemat taotlust saate algatada paralleelselt.

See blokeerimata sisend / väljund välistab vajaduse mitme lõime loomiseks, kuna server suudab korraga töödelda mitme taotlusega.

JavaScripti sündmuse silmus

Kui teil on 26 minutit aega, vaadake seda suurepärast videote selgitust Node Event Loopi kohta:

Vastasel juhul on siin kiire samm-sammuline selgitus, kuidas JavaScripti sündmuste silmus töötab.

  1. Lükake main()kõnepinu peale.
  2. Lükake console.log()kõnepinu peale. See jookseb siis kohe ja hüppab.
  3. Lükake setTimeout(2000)virna peale. setTimeout(2000)on sõlme API. Kui seda nimetame, registreerime sündmuse-tagasihelistamispaari. Sündmust oodatakse 2000 millisekundit, seejärel on funktsioon tagasihelistamine.
  4. Pärast API-s registreerimist ilmub see setTimeout(2000)kõnepinu.
  5. Nüüd setTimeout(0)registreeritakse teine samamoodi. Nüüd on meil kaks Node API-d, mis ootavad käivitamist.
  6. Pärast 0-sekundilist ootamist setTimeout(0)viiakse tagasihelistusjärjekorda ja sama juhtub ka setTimeout(2000).
  7. Tagasihelistamisjärjekorras ootavad funktsioonid, et kõnepinu oleks tühi, sest aega saab täita ainult üks lause. Selle eest hoolitseb ürituse silmus.
  8. Viimased console.log()jooksud ja main()kõned korstnast hüppasid.
  9. Sündmuse silmus näeb, et kõnepinu on tühi ja tagasihelistamisjärjekord pole tühi. Niisiis liigutab see tagasihelistamised (esimeses esimeses-esimeses-järgmises järjekorras) täitmiseks kõnepinu.

npm

Need on suurepärase kogukonna ehitatud raamatukogud, mis lahendavad enamiku teie üldistest probleemidest. npm (sõlme paketihaldur) sisaldab pakette, mida saate oma rakendustes kasutada, et muuta teie areng kiiremaks ja tõhusamaks.

Nõua

Nõua teeb kolme asja:

  • See laadib moodulid, mis on komplekteeritud Node.js-ga, näiteks failisüsteem ja HTTP Node.js API-st.
  • See laadib kolmandate osapoolte teeke nagu Express ja Mongoose, mille installite alates npm.
  • See võimaldab teil nõuda oma faile ja moduleerida projekti.

Require on funktsioon ja see aktsepteerib parameetrit „path” ja tagastab module.exports.

Sõlme moodulid

Sõlmemoodul on korduvkasutatav koodiplokk, mille olemasolu ei mõjuta kogemata muud koodi.

Saate oma mooduleid kirjutada ja kasutada erinevates rakendustes. Node.js-is on sisseehitatud moodulite komplekt, mida saate kasutada ilma täiendava installimiseta.

V8 laadib JavaScripti turboülekande abil C ++

V8 on avatud lähtekoodiga käitusaja mootor, mis on kirjutatud C ++ keeles.

JavaScript -> V8 (C ++) -> masinakood

V8 rakendab ECMA-262-s määratletud skripti nimega ECMAScript. ECMAScript loodi Ecma Internationali poolt JavaScripti standardiseerimiseks.

V8 võib töötada eraldi või seda saab manustada mis tahes C ++ rakendusse. Sellel on konksud, mis võimaldavad teil kirjutada oma C ++ koodi, mille saate JavaScripti jaoks kättesaadavaks teha.

See võimaldab teil sisuliselt lisada JavaScripti funktsioone, sisestades V8 oma C ++ koodi, nii et teie C ++ kood saab rohkem aru kui see, mida ECMAScript standard muidu määrab.

Redigeerimine: Greg Bulmash on mulle tähelepanu pööranud, lisaks Chrome'i V8-le on palju erinevaid JavaScripti käitusaja mootoreid, nagu Mozilla SpiderMonkey, Microsofti Chakra jne. Samamoodi leiate selle lehelt.

Sündmused

Midagi, mis on meie rakenduses juhtunud, millele saame vastata. Node'is on kahte tüüpi sündmusi.

  • Süsteemi sündmused: C ++ tuum raamatukogust nimega libuv. (Näiteks on faili lugemine lõpetatud).
  • Kohandatud sündmused: JavaScripti tuum.

Tere maailma kirjutamine saidil Node.js

Me peame seda tegema, kas pole?

Tehke fail app.js ja lisage sellele järgmine.

console.log("Hello World!");

Avage oma sõlmede terminal, vahetage kataloog kausta, kuhu fail on salvestatud, ja käivitage node app.js.

Bam - sa oled just kirjutanud Tere maailma saidile Node.js.

Järgige @ Priyesh_p18

Node.js-i kohta saate lisateavet, sealhulgas freeCodeCamp.org, palju ressursse.