Javascriptin kasvava suosio on tuonut mukanaan paljon muutoksia, ja verkkokehityksen kasvot ovat nykyään dramaattisesti erilaiset. Asioita, joita voimme tehdä nykyään verkossa palvelimella ja selaimessa käytetyn JavaScriptin avulla, oli vaikea kuvitella vasta useita vuosia sitten, tai ne oli kapseloitu hiekkalaatikkoympäristöihin, kuten Flash tai Java-sovelmat.
Ennen kaivamista Node.js-ratkaisut , saatat haluta lukea käytön eduista JavaScript pinon yli joka yhdistää kielen ja tietomuodon (JSON), jolloin kehittäjäresurssit voidaan käyttää uudelleen optimaalisesti. Koska tämä on pikemminkin JavaScriptin etu kuin nimenomaan Node.js, emme keskustele siitä paljon täällä. Mutta se on keskeinen etu solmun sisällyttämisessä pinoon.
Kuten Wikipedia toteaa: 'Node.js on pakattu kokoelma Googlen V8-JavaScript-moottoria, libuv-alustan abstraktiokerrosta ja ydinkirjastosta, joka itse on kirjoitettu ensisijaisesti JavaScript-muodossa.' Tämän lisäksi on syytä huomata, että Node.js: n luoja Ryan Dahl pyrki luomaan reaaliaikaiset verkkosivustot, joissa on push-ominaisuus , 'Innoittamana Gmailin kaltaisista sovelluksista'. Node.js-ohjelmassa hän antoi kehittäjille työkalun toimia estämistä estävässä, tapahtumavetoisessa I / O-paradigmassa.
Yhdessä lauseessa: Node.js loistaa reaaliaikaisissa verkkosovelluksissa, joissa käytetään push-tekniikkaa verkkopistorasioiden yli. Mikä siinä on niin vallankumouksellista? No, yli 20 vuoden ajan kansalaisuudettoman verkon, joka perustuu kansalaisuudettomaan kysely-vastaus-paradigmaan, meillä on vihdoin verkkosovellukset, joilla on reaaliaikaiset, kaksisuuntaiset yhteydet, joissa sekä asiakas että palvelin voivat aloittaa viestinnän, jolloin he voivat vaihtaa tietoja vapaasti . Tämä on jyrkässä ristiriidassa tyypillisen verkkovastausparadigman kanssa, jossa asiakas aloittaa aina viestinnän. Lisäksi kaikki perustuu avoimeen verkkopinoon (HTML, CSS ja JS), joka kulkee vakioportin 80 kautta.
Voidaan väittää, että meillä on ollut tämä jo vuosia Flash- ja Java-sovelmien muodossa - mutta todellisuudessa ne olivat vain hiekkalaatikkoympäristöjä, jotka käyttivät verkkoa asiakkaalle toimitettavana kuljetusprotokollana. Lisäksi niitä ajettiin erillään ja niitä käytettiin usein epätyypillisissä porteissa, mikä saattoi tarvita ylimääräisiä käyttöoikeuksia ja vastaavia.
Kaikilla eduillaan Node.js: llä on nyt kriittinen rooli monien korkean profiilin yritysten teknologiapinoissa, jotka ovat riippuvaisia sen ainutlaatuisista eduista. Node.js-säätiö on yhdistänyt kaikki parhaat ajatukset siitä, miksi yritysten tulisi harkita Node.js-ohjelmaa lyhyessä esityksessä, joka löytyy Node.js -säätiön tapaustutkimussivu .
Tässä Node.js-oppaassa keskustelen paitsi siitä, miten nämä edut saavutetaan, mutta myös siitä, miksi haluat ehkä käyttää Node.js: ää ja miksi ei - käyttämällä esimerkkinä joitain klassisia verkkosovellusmalleja.
Node.js: n pääidea: Käytä estämättömiä, tapahtumavetoisia I / O-toimintoja pysyäkseen kevyinä ja tehokkaina hajautettujen laitteiden yli kulkevien, datanintensiivisten reaaliaikaisten sovellusten edessä.
Se on suupala.
Se, mitä se todella tarkoittaa, on, että Node.js on ei hopea-bullet-uusi alusta, joka hallitsee verkkokehitysmaailmaa. Sen sijaan se on foorumi, joka täyttää tietyn tarpeen. TweetMitä se Todella tarkoittaa, että Node.js on ei hopea-bullet-uusi alusta, joka hallitsee verkkokehitysmaailmaa. Sen sijaan se on foorumi, joka täyttää tietyn tarpeen . Tämän ymmärtäminen on ehdottoman välttämätöntä. Et todellakaan halua käyttää Node.js-tiedostoa prosessoria vaativiin toimintoihin; itse asiassa sen käyttö raskaaseen laskentaan mitätöi melkein kaikki sen edut. Missä Node todella loistaa, rakennetaan nopeita, skaalautuvia verkkosovelluksia, koska se pystyy käsittelemään valtavan määrän samanaikaisia yhteyksiä korkealla suorituskyvyllä, mikä vastaa suurta skaalautuvuutta.
Kuinka se toimii hupun alla on melko mielenkiintoista. Verrattuna perinteisiin verkkopalvelutekniikoihin, joissa jokainen yhteys (pyyntö) synnyttää uuden ketjun, joka vie järjestelmän RAM-muistin ja lopulta maksimoi käytettävissä olevan RAM-muistin määrän, Node.js toimii yksisäikeisenä käyttäen estämätöntä I / O-puhelut sallivat sen tukea kymmeniä tuhansia samanaikaisia yhteyksiä, joita pidetään tapahtumasilmukassa.
Nopea laskelma: olettaen, että jokaisessa säikeessä on mahdollisesti mukana 2 Mt muistia, 8 Gt: n RAM-muistia käyttävässä järjestelmässä teoreettisesti enintään 4000 samanaikaista yhteyttä (laskelmat on otettu Michael Abernethyn artikkelista 'Just what is Node.js?', julkaistu IBM-kehittäjäWorksissa vuonna 2011; valitettavasti artikkeli ei ole enää saatavana) , plus kustannukset kontekstin vaihtaminen ketjujen välillä . Tämä on skenaario, jota tyypillisesti käsittelet perinteisissä verkkopalvelutekniikoissa. Välttämällä kaiken tämän Node.js saavuttaa yli-skaalautuvuustasot 1M samanaikaista yhteyttä , ja yli 600k samanaikaista verkkoliitäntää .
On tietysti kysymys yhden säikeen jakamisesta kaikkien asiakkaiden pyyntöjen välillä, ja se on potentiaalinen kuoppa Node.js-sovellusten kirjoittamisesta. Ensinnäkin raskas laskenta voi tukahduttaa Solmun yhden ketjun ja aiheuttaa ongelmia kaikille asiakkaille (lisätietoja tästä myöhemmin), koska saapuvat pyynnöt estetään, kunnes mainittu laskenta on valmis. Toiseksi kehittäjien on oltava todella varovaisia, jotta ei sallita poikkeuksen kuplimista ytimen (ylin) Node.js -tapahtumasilmukkaan asti, mikä saa Node.js-ilmentymän lopettamaan (kaataa tehokkaasti ohjelmaa).
Pinnalle kuplivien poikkeusten välttämiseksi käytetty tekniikka välittää virheet takaisin soittajalle takaisinsoittoparametreinä (sen sijaan, että heittäisit ne kuten muissa ympäristöissä). Vaikka jokin käsittelemätön poikkeus onnistuukin kuplimaan, on kehitetty työkaluja Node.js-prosessin seuraamiseksi ja tarvittavien toimenpiteiden suorittamiseksi. kaatuneen instanssin palauttaminen (vaikka et todennäköisesti pysty palauttamaan käyttäjän istunnon nykyistä tilaa), yleisin on Forever-moduuli tai käyttämällä erilaista lähestymistapaa ulkoisten järjestelmätyökalujen kanssa nousukas ja kehote , tai jopa juuri ylöspäin .
Kun keskustellaan Node.js: stä, yksi asia, jota ei varmasti pidä jättää pois, on sisäänrakennettu tuki pakettien hallinta NPM: n avulla , työkalu, joka tulee oletusarvoisesti jokaisen Node.js-asennuksen yhteydessä. NPM-moduulien idea on melko samanlainen kuin Rubiinihelmet : joukko yleisesti saatavilla olevia, uudelleenkäytettäviä komponentteja, jotka on helppo asentaa online-tietovaraston kautta, versioiden ja riippuvuuksien hallinnan avulla.
Täydellinen luettelo pakatuista moduuleista löytyy npm -sivusto tai käyttää sitä npm CLI -työkalulla, joka asennetaan automaattisesti Node.js: n kanssa. Moduuliekosysteemi on avoin kaikille, ja kuka tahansa voi julkaista oman moduulinsa, joka luetellaan npm-arkistossa.
Jotkut tämän päivän hyödyllisimmistä npm-moduuleista ovat:
Luettelo jatkuu. Siellä on tonnia todella hyödyllisiä paketteja, jotka ovat kaikkien saatavilla (ei loukkaa niitä, jotka olen jättänyt pois tästä).
Chat on tyypillisin reaaliaikainen monen käyttäjän sovellus. IRC: stä (päivästä toiseen) monien omien ja avoimien protokollien kautta, jotka toimivat epätyypillisissä porteissa, kykyyn toteuttaa kaikki nykyiset Node.js-tiedostot vakioportin 80 kautta kulkevilla verkkopistokkeilla.
Chat-sovellus on todella Node.js: n makean pisteen esimerkki: se on kevyt, paljon liikennettä käyttävä, paljon tietoliikennettä käyttävä (mutta vähän käsittelyä / laskentaa) sovellus, joka toimii hajautettujen laitteiden yli. Se on myös loistava käyttötapa myös oppimiseen, koska se on yksinkertainen, mutta se kattaa suurimman osan paradigmoista, joita käytät koskaan tyypillisessä Node.js-sovelluksessa.
Yritetään kuvata miten se toimii.
Yksinkertaisimmassa esimerkissä meillä on verkkosivustollamme yksi chat-huone, jonne ihmiset tulevat ja voivat vaihtaa viestejä yksi kerrallaan (itse asiassa kaikki). Oletetaan esimerkiksi, että verkkosivustolla on kolme henkilöä, jotka kaikki ovat yhteydessä taulukkoon.
Palvelinpuolella meillä on yksinkertainen Express.js-sovellus, joka toteuttaa kaksi asiaa:
GET /
- pyynnön käsittelijä, joka palvelee verkkosivua, joka sisältää sekä ilmoitustaulun että Lähetä - painikkeen uuden viestinsyötön alustamiseksi, jaAsiakkaan puolella meillä on HTML-sivu, johon on asennettu muutama käsittelijä, yksi Lähetä-painikkeen napsautustapahtumaa varten, joka poimii syötesanoman ja lähettää sen verkkopistokkeeseen, ja toinen, joka kuuntelee uusia saapuvia viestejä websockets-asiakkaalla (ts. muiden käyttäjien lähettämät viestit, jotka palvelin haluaa asiakkaan nyt näyttävän).
Kun joku asiakkaista lähettää viestin, tapahtuu näin:
Tämä on yksinkertaisin esimerkki . Enemmän vankka ratkaisu , voit käyttää yksinkertaista välimuistia, joka perustuu Redis-kauppaan. Tai vielä edistyneemmässä ratkaisussa viestijono jonoon viestien reitittämiseksi asiakkaille ja vankempi toimitusmekanismi, joka voi kattaa tilapäiset yhteyskatkokset tai viestien tallentamisen rekisteröidyille asiakkaille, kun he ovat offline-tilassa. Mutta tekemistäsi parannuksista huolimatta Node.js toimii edelleen samojen perusperiaatteiden mukaisesti: reagoi tapahtumiin, käsittelee monia samanaikaisia yhteyksiä ja ylläpitää sujuvuutta käyttökokemuksessa.
Vaikka Node.js loistaa todella reaaliaikaisilla sovelluksilla, se on melko luonnollinen tapa paljastaa tiedot objektitietokannoista (esim. MongoDB). JSON-tallennettujen tietojen avulla Node.js voi toimia ilman impedanssin ristiriitaa ja tietojen muuntamista.
Jos esimerkiksi käytät Rails-ohjelmaa, muuntaisit JSON: sta binaarimalleiksi ja paljastaisit ne sitten takaisin JSON: ksi HTTP: n kautta, kun Backbone.js, Angular.js jne. Tai jopa tavallinen jQuery AJAX kuluttaa tietoja. puhelut. Node.js: n avulla voit vain paljastaa JSON-objektisi REST-sovellusliittymällä, jota asiakas voi käyttää. Lisäksi sinun ei tarvitse huolehtia muuntamisesta JSON: n ja muun välillä, kun luet tai kirjoitat tietokannastasi (jos käytät MongoDB: tä). Yhteenvetona voidaan todeta, että voit välttää useiden muunnosten tarpeen käyttämällä yhdenmukaista tietojen sarjallisuusmuotoa asiakkaan, palvelimen ja tietokannan välillä.
Jos saat paljon samanaikaista dataa, tietokannastasi voi tulla pullonkaula. Kuten yllä on kuvattu, Node.js pystyy helposti käsittelemään samanaikaiset yhteydet itse. Mutta koska tietokantakäyttö on estotoiminto (tässä tapauksessa), törmäämme vaikeuksiin. Ratkaisu on kuitata asiakkaan käyttäytyminen ennen kuin tiedot todella kirjoitetaan tietokantaan.
Tällä lähestymistavalla järjestelmä ylläpitää reagointikykyä suurella kuormituksella, mikä on erityisen hyödyllistä, kun asiakas ei tarvitse vahvaa vahvistusta onnistuneesta tietojen kirjoittamisesta. Tyypillisiä esimerkkejä ovat: käyttäjien seurantatietojen kirjaaminen tai kirjoittaminen, jotka on käsitelty erissä ja joita ei käytetä vasta myöhemmin; samoin kuin toiminnot, joita ei tarvitse heijastaa välittömästi (kuten tykkäysten määrän päivittäminen Facebookissa) missä lopulta johdonmukaisuus (niin usein käytetty NoSQL-maailmassa) on hyväksyttävä.
Tiedot asetetaan jonoon jonkinlaisen välimuistin tai viestijono-infrastruktuurin - kuten RabbitMQ tai ZeroMQ - kautta ja pilkotaan erillisellä tietokannan erä-kirjoitusprosessilla tai laskennan intensiivisellä käsittelyllä taustapalveluilla, jotka on kirjoitettu paremmin toimivaan alustaan tällaisia tehtäviä varten. Samanlainen käyttäytyminen voidaan toteuttaa muilla kielillä / kehyksillä, mutta ei samalla laitteistolla, samalla korkealla, ylläpidetyllä läpäisykyvyllä.
Lyhyesti sanottuna: Solmun avulla voit työntää tietokantakirjoitukset sivuun ja käsitellä niitä myöhemmin etenemällä kuin ne onnistuisivat.
Perinteisemmillä web-alustoilla HTTP-pyyntöjä ja vastauksia käsitellään kuin yksittäisiä tapahtumia; Itse asiassa ne ovat todella virtoja. Tätä havaintoa voidaan käyttää Node.js: ssä hyvien ominaisuuksien rakentamiseen. Esimerkiksi tiedostoja on mahdollista käsitellä niiden lataamisen aikana, koska tiedot tulevat virtana ja voimme käsitellä niitä verkossa. Tämä voitaisiin tehdä reaaliaikainen ääni- tai videokoodaus ja välityspalvelin eri tietolähteiden välillä (katso seuraava osa).
Node.js on helposti palvelinpuolen välityspalvelin, jossa se pystyy käsittelemään suuren määrän samanaikaisia yhteyksiä estämättömällä tavalla. Se on erityisen hyödyllinen eri palvelujen välityspalvelimille, joilla on eri vasteajat, tai kerätä tietoja useista lähdekohdista.
Esimerkki: harkitse palvelinpuolen sovellusta, joka kommunikoi kolmansien osapuolten resurssien kanssa, kerää tietoja eri lähteistä tai tallentaa resursseja, kuten kuvia ja videoita, kolmannen osapuolen pilvipalveluihin.
Vaikka omistettuja välityspalvelimia onkin olemassa, solmun käytöstä voi olla hyötyä, jos välityspalvelininfrastruktuuriasi ei ole tai jos tarvitset ratkaisua paikalliseen kehittämiseen. Tarkoitan tällä, että voisit rakentaa asiakaspuolen sovelluksen Node.js-kehityspalvelimella omaisuuksia ja välityspalvelimen API-pyyntöjä varten, kun taas tuotannossa käsittelisit tällaisia vuorovaikutuksia erillisen välityspalvelimen (nginx, HAProxy jne .).
Palataan takaisin sovellustasolle. Toinen esimerkki siitä, missä työpöytäohjelmisto hallitsee, mutta joka voidaan helposti korvata reaaliaikaisella verkkoratkaisulla, on välittäjien kaupankäyntiohjelmisto, jota käytetään osakkeiden hintojen seuraamiseen, laskelmien / teknisen analyysin tekemiseen ja kaavioiden luomiseen.
Reaaliaikaiseen verkkopohjaiseen ratkaisuun siirtyminen antaisi välittäjille mahdollisuuden vaihtaa helposti työasemaa tai työpaikkaa. Pian voimme alkaa nähdä heidät Floridan rannalla .. tai Ibizalla .. tai Balilla.
Toinen yleinen käyttötapaus, jossa Node-with-web-sockets sopii täydellisesti: verkkosivuston kävijöiden seuraaminen ja heidän vuorovaikutuksensa visualisointi reaaliajassa.
Voisit kerätä reaaliaikaisia tilastoja käyttäjältäsi tai jopa siirtää ne seuraavalle tasolle ottamalla käyttöön kohdennettuja vuorovaikutuksia vierailijoiden kanssa avaamalla viestintäkanavan, kun he saavuttavat tietyn pisteen kanavassasi. (Jos olet kiinnostunut, tämä idea on jo tuotannossa CANDDi .)
Kuvittele, kuinka voisit parantaa liiketoimintaasi, jos tietäisit, mitä kävijät tekivät reaaliajassa - jos voisit visualisoida heidän vuorovaikutuksensa. Node.js: n reaaliaikaisten, kaksisuuntaisten pistorasioiden avulla voit nyt.
Käydään nyt asioiden infrastruktuuripuolella. Kuvittele esimerkiksi SaaS-palveluntarjoajaa, joka haluaa tarjota käyttäjilleen palvelunvalvontasivun, kuten GitHubin tilasivun. Node.js-tapahtumasilmukan avulla voimme luoda tehokkaan verkkopohjaisen hallintapaneelin, joka tarkistaa palvelujen tilat asynkroninen tavalla ja välittää tietoja asiakkaille verkkopistokkeiden avulla.
Sekä sisäisten (yrityksen sisäisten) että julkisten palvelujen tilat voidaan ilmoittaa reaaliajassa ja reaaliajassa tätä tekniikkaa käyttämällä. Työnnä tätä ajatusta hieman pidemmälle ja yritä kuvitella a Verkon operointikeskus (NOC) Teleoperaattorin, pilvi- / verkko- / isännöintipalvelujen tarjoajan tai jonkin muun rahoituslaitoksen valvontasovellukset toimivat kaikki avoimella verkkopinolla, jota tukevat Node.js ja verkkopistokkeet Java- ja / tai Java-sovelmien sijaan.
Huomaa: Älä yritä rakentaa kovia reaaliaikaisia järjestelmiä Solmuun (ts. Järjestelmät, jotka vaativat yhdenmukaisia vasteaikoja). Erlang on luultavasti parempi valinta kyseiselle luokalle.Express.js: n Node.js-tiedostoa voidaan käyttää myös klassisten verkkosovellusten luomiseen palvelinpuolelle. Vaikka tämä pyyntö-vastaus-paradigma, jossa Node.js kantaisi renderoitua HTML-koodia, ei kuitenkaan ole tyypillisin käyttötapa. Tämän lähestymistavan puolesta ja sitä vastaan voidaan esittää argumentteja. Tässä on joitain huomioitavia tosiasioita:
Plussat:
Haittoja:
Esimerkiksi, kun Node.js: ää verrattiin Express.js: ään Ruby on Railsia vastaan, aiemmin oli puhdas päätös jälkimmäisen eduksi, kun oli kyse relaatiotietokantojen, kuten PostgreSQL, MySQL ja Microsoft SQL Server, käyttämisestä.
Node.js: n relaatiotietokantatyökalut olivat vielä alkuvaiheessa. Toisaalta Rails tarjoaa automaattisesti tiedonsiirron asetukset heti laatikosta yhdessä DB-skeeman siirron tukityökalujen ja muiden helmien kanssa (pun-tarkoitus). Railsilla ja sen vertaispuitteilla on kypsä ja todistettu Active Record- tai Data Mapper -tietokantakerroksen toteutus. [*]
Mutta asiat ovat muuttuneet. Jatka , TyyppiORM ja Kirjahylly ovat edenneet pitkälle kohti kypsiä ORM-ratkaisuja. Se voi myös olla syytä tarkistaa Liity Monsteriin jos haluat luoda SQL: n GraphQL-kyselyistä.
[*] On mahdollista ja harvinaista käyttää Solmea vain käyttöliittymänä pitäen samalla Rails-käyttöliittymäsi ja sen helpon pääsyn relaatiotietokantaan. Liittyvät: Takaosa: Gatsby.js: n ja Node.js: n käyttö staattisille sivustopäivityksilleRaskaan laskennan osalta Node.js ei ole paras ympäristö. Ei, et todellakaan halua rakentaa Fibonacci-laskentapalvelin Node.js-tiedostossa . Yleensä mikä tahansa suorittimen intensiivinen käyttö mitätöi kaikki solmun tarjoamat suorituskykyedut tapahtumavetoisella, estämättömällä I / O-mallillaan, koska kaikki saapuvat pyynnöt estetään, kun säie on varattu numeronmurskauksellesi - olettaen, että yrität Suorita laskelmat samassa Node-esiintymässä, jolla vastaat pyyntöihin.
Kuten aiemmin todettiin, Node.js on yksisäikeinen ja käyttää vain yhtä CPU-ydintä. Kun on kyse samanaikaisuuden lisäämisestä monisydämiselle palvelimelle, solmun ydintiimi tekee jonkin verran työtä klusterimoduulin muodossa [viite: http://nodejs.org/api/cluster.html]. Voit myös käyttää useita Node.js-palvelinilmentymiä melko helposti a: n takana käänteinen välityspalvelin nginxin kautta .
Klusterin avulla sinun on silti ladattava kaikki raskaat laskelmat taustatietoprosesseihin, jotka on kirjoitettu siihen sopivammassa ympäristössä, ja saada ne kommunikoimaan viestijonopalvelimen, kuten RabbitMQ, kautta.
Vaikka taustakäsittelysi saatetaan suorittaa alun perin samalla palvelimella, tällaisella lähestymistavalla voi olla erittäin suuri skaalautuvuus. Nämä taustankäsittelypalvelut voitaisiin helposti jakaa erillisille työntekijäpalvelimille tarvitsematta konfiguroida eteenpäin suuntautuvien verkkopalvelimien kuormia.
Tietysti käyttäisit samaa lähestymistapaa myös muilla alustoilla, mutta Node.js: n avulla saat korkean reqs / s-tiedonsiirtonopeuden, josta olemme puhuneet, koska jokainen pyyntö on pieni tehtävä, joka hoidetaan erittäin nopeasti ja tehokkaasti.
Olemme keskustelleet Node.js: stä teoriasta käytäntöön aloittaen sen tavoitteista ja kunnianhimoista ja päättyen sen suloisiin kohtiin ja sudenkuoppiin. Kun ihmisillä on ongelmia solmun kanssa, se melkein aina taantuu siihen estotoimet ovat kaiken pahan perusta —99% solmun väärinkäytöksistä on välitön seuraus.
Solmussa estotoiminnot ovat kaiken pahan perusta - 99% solmun väärinkäytöksistä johtuu suorasta seurauksesta. TweetMuista: Node.js-tiedostoa ei koskaan luotu ratkaisemaan laskennan skaalausongelmaa. Se luotiin ratkaisemaan I / O-skaalauksen ongelma, jonka se tekee todella hyvin .
Miksi käyttää Node.js-tiedostoa? Jos käyttötapauksesi ei sisällä suorittimen intensiivisiä toimintoja eikä käytä mitään estolähteitä, voit hyödyntää Node.js: n etuja ja nauttia nopeista ja skaalautuvista verkkosovelluksista. Tervetuloa reaaliaikaiseen verkkoon.
Node.js on palvelinpuolen JavaScript-ajo-ympäristö. Se on avoimen lähdekoodin, mukaan lukien Googlen V8-moottori, libuv for cross-platform yhteensopivuus ja ydinkirjasto. Erityisesti Node.js ei paljasta globaalia ikkunaobjektia, koska se ei toimi selaimessa.
Node.js: ää käytetään ensisijaisesti ei-estäviin tapahtumapohjaisiin palvelimiin, koska se on yksisäikeinen. Sitä käytetään perinteisiin verkkosivustoihin ja back-end API -palveluihin, mutta se on suunniteltu reaaliaikaisia, push-pohjaisia arkkitehtuureja silmällä pitäen.
Verkkokehykset, kuten Angular ja React, ovat kirjastoja, jotka auttavat järjestämään ja luomaan verkkoselaimessa suoritettavan käyttöliittymäkoodin. Ne lyhentävät kehitysaikaa ja käyttävät koodia uudelleen yhteisiin toimintoihin. Jotkut verkkokehykset ovat 'täysi pino', mikä tarkoittaa, että ne luovat myös verkkopalvelimessa toimivan taustakoodin.
Ei, se on ympäristö, ja sen sisällä toimii taustakehyksiä. Suosittuja ovat Express.js (tai yksinkertaisesti Express) HTTP-palvelimille ja Socket.IO WebSocket-palvelimille.
Ei, .js tarkoittaa, että Node.js: n kanssa käyttämäsi ohjelmointikieli on JavaScripti (tai mikä tahansa, joka voi levitä siihen, kuten TypeScript, Haxe tai CoffeeScript.)
Sen lisäksi, että Node.js on tehokas toiminnassaan, se on suosittu, koska sillä on valtava, aktiivinen, avoimen lähdekoodin JavaScript-pohjainen ekosysteemi. Lisäksi sillä ei ole taipumusta rikkoa yhteensopivuutta versioiden välillä suurilla tavoilla.
Node.js suorittaa JavaScript-koodin palvelimen ympäristössä, kun taas Angular on JavaScript-kehys, joka suoritetaan asiakkaalle (ts. Verkkoselaimessa).
Yksisäikeinen Node.js voi olla huono valinta verkkopalvelimille, jotka kaksinkertaistuvat laskennallisina palvelimina, koska raskas laskenta estää palvelimen reagoinnin. Node.js itsessään ei kuitenkaan ole huono: Teknologia on melko kypsä ja sitä käytetään laajalti monen tyyppisille palvelimille.