Node.js voi olla vakiintunut, mutta älä unohda Denoa, saman kehittäjän samanlaista kehystä.
Node.js on pitkäaikainen kehys, jonka avulla voit kirjoittaa palvelinpuolen koodia JavaScriptillä. Alun perin vuonna 2009 julkaistu kehys on kokenut huomattavan kasvun ja räjähdysmäisen käytön viime vuosina.
Denolla on eroja muotoilutyylissä, tuontisyntaksissa ja paketinhallinnassa, mutta sama suunnittelija rakensi nämä kilpailevat puitteet samalle moottorille.
Nykyään Deno on ollut olemassa tarpeeksi kauan ansaitakseen paikan monien kehittäjien pinoissa. Jos aiot aloittaa uuden JavaScript-projektin, saatat miettiä, mikä on oikea valinta.
Node- ja Deno-ominaisuudet
Lähes yhdeksän vuotta Noden julkaisun jälkeen sen kehittäjä Ryan Dahl ilmoitti uudesta projektista: Deno. Kun Node oli aikoinaan ainoa vaihtoehto palvelinpuolen JavaScriptille, Deno on antanut meille vaihtoehdon.
Node.js ja Deno ovat melko samanlaisia monella tapaa. Suurin osa näiden kahden välisistä eroista tapahtuu konepellin alla. Siellä missä Node käyttää V8 JavaScript -moottoria, Deno käyttää räätälöityä, Rustissa rakennettua moottoria, joka keskittyy voimakkaasti suorituskykyyn.
Suurin osa tärkeimmistä eroista näiden kahden välillä perustuu siihen, mitä ominaisuuksia kukin kieli tukee. Moduulit, linting, konekirjoitus ja pakettien hallinta käsitellään aivan eri tavalla näiden kahden välillä.
Moduulien tuonti: CommonJS vs. ES
Node.js käyttää oletusarvoisesti CommonJS-moduuleja, joissa on követelmény()-syntaksi. Node antaa sinun muuttaa tätä muuttamalla asetustiedostojasi käyttämään ECMAScript-moduuleja import()-syntaksilla, jos he haluavat.
// Tämä on kelvollinen CommonJS-moduulin tuonti Node.js: ssä
var _ = vaatia("lodash");
// Tämä on kelvollinen ECMAScript-moduulin tuonti Node.js: ssä
tuonti _ alkaen'lodash';
Näiden kahden ES-moduulilataustyypin välillä on rajoitettu yhteentoimivuus, ja jotkut ECMAScript-moduulit voidaan sisällyttää vaatimaan ()-syntaksia. Jokainen tuontityyppi käsittelee moduuleja hieman eri tavalla, mutta kumpi tahansa toimii useimmissa tapauksissa.
Tämän avulla voit valita haluamasi menetelmän ulkoisten moduulien sisällyttämiseksi projektia luotaessa.
Deno suhtautuu eri tavalla ulkoisten moduulien sisällyttämiseen projektiin. Deno käyttää include()-syntaksia kaikille moduuleille, mutta toisin kuin Noden tuonti, Denoon tuodut moduulit voivat tulla mistä tahansa. Nämä sijainnit voivat sisältää jopa etäsisällönjakeluverkkoja (CDN).
// Tämä on kelvollinen tuontilausunto Denossa
tuonti" https://deno.land/x/[email protected]/dist/lodash.js";
Tämän avulla voit tuoda riippuvuuksia mistä tahansa sijainnista, paikallisesta tai etäältä, mikä tarjoaa paljon enemmän joustavuutta. Jos haluat työskennellä mieluummin Node.js: n perinteisen vaatimissyntaksin kanssa, voit kirjoittaa oman monitäyttövaatimusfunktion Denoon kiertotapana.
Tuki TypeScript-koodille
TypeScriptin suosio on kasvanut viime vuosina, eikä hidastumisen merkkejä ole havaittavissa lähiaikoina. Tyyppiturvallisen koodidynamiikan tuominen JavaScriptiin on osoittautunut villisti onnistuneeksi yritykseksi.
Nykyään uuden TypeScript-projektin määrittäminen tai olemassa olevan Node.js-projektin muuntaminen TypeScriptiksi on yksinkertaista, joskin hieman aikaa vievää.
TypeScript-tuen lisäämisestä on tullut niin suosittua, että useimmissa nykyaikaisissa kehyksissä on nyt jonkinlainen TypeScript-tuki. Angular osoitti tietä valmiilla TypeScript-tuella. Tänään jopa Reactilla on menetelmiä TypeScript-tuen määrittämiseen.
Deno on suunniteltu sisältämään TypeScript-tuen tuottavuuden parantamiseksi. Valmiin TypeScript-tuen ansiosta Denolta puuttuu edes Node.js: n vaatimat vähimmäisasetukset kirjoitetun JavaScript-koodin kehittämiseen.
Jos pidät TypeScriptistä, voit aloittaa nopeasti ja helposti Denon tuen avulla, mutta saatat huomata, että sinulta puuttuu joitain tavallisia Node.js-kirjastoja. Vaikka Deno tarjoaa nopeamman asennuksen, kehittyneen ekosysteemin puute voi haitata sinua rakennusprosessissasi.
Nukkaus puhtaamman koodin luomiseksi
Node.js: ssä on laaja valikoima linterejä, joista voit valita. Siellä on paljon hyvin kehitettyjä vaihtoehtoja, jotka voit asentaa ja määrittää nopeasti ja helposti. Aivan kuten TypeScriptin tapauksessa, sinun on kuitenkin tehtävä hieman jalkatyötä aloittaaksesi heidän valitsemansa linterin.
Deno valitsi hieman toisenlaisen reitin koodin muotoilussa, sillä mukana tuli oma sisäänrakennettu linting-ratkaisu .js-, .ts- ja .md-tiedostoille. "deno fmt" -komennon suorittaminen alustaa automaattisesti kaikki nykyisen työhakemiston tiedostot.
Jos et ole oletuslinterin fani, voit asentaa ja käyttää haluamaasi muotoilujärjestelmää, aivan kuten tekisit Noden kanssa. Järjestelmän vaihtaminen on yksinkertaista, koska Denon linteri toimii ulkoisen komennon kautta, ei osana oletuskoontiputkea.
Jos harkitset Denon linterin vaihtamista uuteen järjestelmään, sinun tulee olla tietoinen mahdollisista yhteensopivuusongelmista ja pitää ne mielessä. Useimmat JavaScript-linterit vaativat Noden asennuksen toimiakseen, vaikka se ei olisikaan järjestelmä, jossa alustettava projekti on käynnissä.
Paketinhallinta
Node-pakettien hallinta (npm) on hyvin tunnettu nykyaikaisten kehittäjien keskuudessa. Samankaltaisten järjestelmien, kuten Python's Pip ja Ruby's RubyGems, menestyksen pohjalta npm nousi nopeasti suosioon.
Viipyvät huolenaiheet johtavat kilpailevien johtajien, kuten pNPm ja Lanka, kehittymiseen. Joissakin tilanteissa voit jopa valita asennuksen ja käytön useita paketinhallintaohjelmia Noden kanssa.
Nykyään, jos päätät kehittää Node.js: ssä, olet jonkin verran runsaudenpula paketinhallinnan suhteen. Nodessa on kukoistava ekosysteemi, jossa on runsaasti asennusvaihtoehtoja. Tällä hetkellä npm-päärekisterissä on yli 1,3 miljoonaa.
Npm antaa sinun julkaista omia pakettejasi, joka johtaa hämmästyttävän suureen kirjastoon.
Deno otti täysin toisenlaisen lähestymistavan paketinhallintaan. Siinä ei ole eikä vaadi paketinhallintajärjestelmää. Sen sijaan Deno sallii ulkoisten kirjastojen suoran tuonnin kehittäjän järjestelmän lisäksi mistä tahansa paikasta, joka hyväksyy HTTP-pyynnöt.
Tämän avulla voit tuoda kirjastoja Denon arkistosta tai mistä tahansa CDN: stä verkossa suoraan niiden koodikannasta.
Denon virallinen pakettirekisteri ei ole niin täysin kehittynyt kuin Noden, kiitos Noden lähes yhdeksän vuoden etumatkan. Mahdollisuus tuoda kirjastoja mistä tahansa estää sinua kärsimästä sellaisen ekosysteemin seurauksista, jolla ei ole vielä ollut mahdollisuutta kasvaa täysikokoiseksi.
Yhteisön osallistuminen Nodeen ja Denoon
Node julkaisi alun perin Ryan Dahlin vuonna 2009, ja sillä on ollut runsaasti aikaa kehittäjäyhteisölle osallistua. Koska käytössäsi on runsaasti varhaisia käyttäjiä ja suuri pakettikirjasto, joka on tallennettu sen viralliseen arkistoon ja käytettävissäsi, yleisöllä on ollut paljon sananvaltaa Node.js: n kasvussa.
Itse alusta on täysin avoimen lähdekoodin lähde, jota ylläpitävät OpenJS Foundation ja monet avustajat.
Deno julkaistiin vuonna 2018, lähes 9 vuotta Noden jälkeen. Sen pääasiallisesti kehitti Ryan Dahl käsitelläkseen huolenaiheita ja katumuksia, joita hänellä oli Noden käyttöönotossa. Nykyään Deno on myös avoimen lähdekoodin MIT-lisenssillä.
Useiden avustajien ja kasvavan oman arkistonsa ansiosta Deno on saanut paljon kiinnostusta yhteisön taholta.
Kahden viitekehyksen suorituskykyä koskevat huolenaiheet
Koodaajille, jotka ovat kiinnostuneita näiden kahden kehyksen suhteellisista suorituskykyeroista, näiden kahden välillä on vain vähän eroa. Denon räätälöity Rust-kielellä kirjoitettu moottori peittää ydinkehyksen, joka on edelleen V8-moottori. Loppujen lopuksi sekä Deno että Node ovat vertailukelpoisia lähes kaikissa tapauksissa suorituskyvyn suhteen.
Näin näyttää olevan riippumatta siitä, suoritetaanko tuloksena oleva koodi palvelimella vai asiakkaalla. Koska suorituskyvyn tuottoa ei oteta huomioon päätöksessä, voit vapaasti valita puitteet, joissa tunnet itsesi mukavimmaksi.
Ryan Dahl, molempien puitteiden luoja, tarjosi useita syitä Denon luomiseen. Vaikka hän mainitsi useita tekijöitä, lupausten asianmukaisesta sisällyttämisestä moniin sovellusliittymiin hänen valitsemaansa rakennusjärjestelmään, suorituskyky ei ollut osa prosessia.
Node vs Deno: mikä on oikea valinta?
Konepellin alla sekä Node.js että Deno ovat huomattavan samanlaisia puitteita. Molemmat suorittavat JavaScriptin V8-moottorilla, jolla on sama suorituskyky ja ominaisuudet. Vaikka syntaksissa, paketinhallinnassa ja sisäänrakennetussa tuessa on joitain eroja, valitsemasi käyttö perustuu suurelta osin mieltymyksiisi.
Nodella on hämmästyttävän suuri ekosysteemi, mutta Denon avulla voit vetää riippuvuutesi mistä tahansa lähteestä. Viime kädessä sinun on tarkasteltava tarkasti omaa kehitystyyliäsi ja määritettävä, mikä alusta sopii sinulle paremmin.