Lehet, hogy a Node.js jól bevált, de ne hagyja figyelmen kívül a Deno-t, egy hasonló keretrendszert ugyanattól a fejlesztőtől.

A Node.js egy régóta működő keretrendszer, amely lehetővé teszi szerveroldali kód írását JavaScriptben. Az eredetileg 2009-ben kiadott keretrendszer jelentős növekedést és robbanásszerű használatot tapasztalt az elmúlt években.

A Denonak vannak különbségei a formázási stílusban, az importálási szintaxisban és a csomagkezelésben, de ugyanaz a mérnök építette ezeket a versengő keretrendszereket ugyanarra a motorra.

Manapság a Deno elég régóta létezik ahhoz, hogy helyet szerezzen sok fejlesztő készletében. Ha új JavaScript-projektet szeretne indítani, azon tűnődhet, melyik a megfelelő választás.

Node és Deno funkciók

Közel kilenc évvel a Node megjelenése után fejlesztője, Ryan Dahl új projektet jelentett be: a Denót. Ahol egykor a Node volt az egyetlen lehetőség a szerveroldali JavaScript számára, a Deno alternatívát adott nekünk.

A Node.js és a Deno sok tekintetben nagyon hasonlóak. A kettő közötti különbségek többsége a motorháztető alatt található. Ahol a Node a V8 JavaScript-motoron fut, a Deno egy egyedileg írt, Rust-ba épített motoron fut, nagy hangsúlyt fektetve a teljesítményre.

instagram viewer

A kettő közötti fő különbségek többsége azon alapul, hogy az egyes nyelvek mely funkciókat támogatják. A modulok, a szöszölés, a gépírás és a csomagkezelés meglehetősen eltérő módon történik a kettő között.

Modulimportálás: CommonJS vs. ES

A Node.js alapértelmezés szerint CommonJS modulokat használ a request() szintaxissal. A Node lehetővé teszi ennek megváltoztatását úgy, hogy módosítja a konfigurációs fájlokat úgy, hogy ECMAScript modulokat használjon az import() szintaxissal, ha kívánják.

// Ez egy érvényes CommonJS-modul importálása a Node.js-ben
var _ = igényelnek("lodash");

// Ez egy érvényes ECMAScript-modul importálása a Node.js-ben
import _ tól től"lodash";

Az ES-modulok betöltésének két típusa között korlátozott az interoperabilitás, mivel egyes ECMAScript-modulok a request() szintaxis használatával beépíthetők. Mindegyik importálási típus kissé eltérően kezeli a modulokat, de az esetek többségében bármelyik működik.

Ez lehetővé teszi a kívánt módszer kiválasztását a külső modulok bevonásához a projekt létrehozásakor.

A Deno más megközelítést alkalmaz a külső modulok projektbe való bevonása tekintetében. A Deno az include() szintaxist használja minden modulhoz, azonban a Node importálásával ellentétben a Denoba importált modulok bárhonnan származhatnak. Ezek a helyek akár távoli tartalomszolgáltató hálózatokat (CDN) is tartalmazhatnak.

// Ez egy érvényes importálási nyilatkozat Deno-ban
import" https://deno.land/x/[email protected]/dist/lodash.js";

Ez lehetővé teszi a függőségek importálását bármilyen helyről, akár helyiről, akár távolról, ami sokkal nagyobb rugalmasságot biztosít. Ha inkább a Node.js hagyományos követelmény-szintaxisával szeretne dolgozni, megoldásként megírhatja saját polyfill request függvényét a Deno-ban.

TypeScript kód támogatása

A TypeScript népszerűsége az elmúlt néhány évben egyre nőtt, és nincs jele annak, hogy hamarosan lassulna. A típusbiztonságos kóddinamikának a JavaScriptbe való átültetése rendkívül sikeresnek bizonyult.

Ma egy új TypeScript-projekt beállítása vagy egy meglévő Node.js-projekt TypeScript-re konvertálása egyszerű, bár kissé időigényes.

A TypeScript támogatás hozzáadása elég népszerűvé vált ahhoz, hogy a legtöbb modern keretrendszer már rendelkezik valamilyen típusú TypeScript támogatással. Az Angular járt az élen, már kész TypeScript támogatással. Ma még A React rendelkezik módszerekkel a TypeScript-támogatás beállítására.

A Deno TypeScript-támogatással készült, hogy növelje a termelékenységet. Az azonnali TypeScript-támogatással a Deno még a Node.js által megkövetelt minimális beállítással sem rendelkezik a gépelt JavaScript-kód fejlesztéséhez.

Ha szereti a TypeScriptet, gyorsan és egyszerűen elkezdheti a Deno támogatásával, de előfordulhat, hogy hiányzik néhány szabványos Node.js könyvtár. Míg a Deno gyorsabb beállítást kínál, a fejlett ökoszisztéma hiánya hátráltathatja az építési folyamatot.

Szöszmélés a tisztító kód generálásához

A Node.js linterek széles választékát kínálja, amelyek közül választhat. Rengeteg jól kidolgozott opció áll rendelkezésre, amelyeket gyorsan és egyszerűen telepíthet és konfigurálhat. Csakúgy, mint a TypeScript esetében, egy kicsit meg kell dolgoznia, hogy elkezdhesse a választott lintert.

A Deno egy kicsit más utat járt be a kódformázás terén, saját beépített linting megoldással érkezett a .js, .ts és .md fájlokhoz. A "deno fmt" parancs futtatása automatikusan megformázza az aktuális munkakönyvtárban található fájlokat.

Ha nem rajong az alapértelmezett linterért, lehetőség van a tetszőleges formázási rendszer telepítésére és futtatására, akárcsak a Node esetében. A rendszerváltás egyszerű, mivel a Deno linter külső paranccsal fut, és nem az alapértelmezett build folyamat részeként.

Ha azt fontolgatja, hogy lecseréli a Deno linterét egy új rendszerre, akkor tisztában kell lennie a lehetséges kompatibilitási problémákkal, és ezeket szem előtt kell tartania. A legtöbb JavaScript-linter futtatásához szükség van a Node telepítésére, még akkor is, ha nem az a rendszer, amelyen a formázandó projekt fut.

Csomagkezelés

A Node csomagkezelő (npm) nagyon jól ismert a modern fejlesztők körében. A hasonló rendszerek, például a Python’s Pip és a Ruby’s RubyGems sikerére építve az npm gyorsan népszerűvé vált.

Az elhúzódó aggodalmak olyan versengő menedzserek kialakulásához vezetnek, mint a pNPm és a Yarn. Vannak olyan helyzetek, amikor akár a telepítés és a használat mellett is dönthet több csomagkezelő a Node-dal.

Ma, ha a Node.js-ben való fejlesztést választja, némileg el van kényeztetve a csomagkezelés. A Node virágzó ökoszisztémával büszkélkedhet, rengeteg lehetőséggel a csomagok telepítésére. Jelenleg több mint 1,3 millió van a fő npm-nyilvántartásban.

Az Npm lehetővé teszi saját csomagok közzétételét, ami egy elképesztően nagy könyvtárhoz vezet.

A Deno teljesen más megközelítést alkalmazott a csomagkezeléshez. Csomagkezelő rendszere nincs, és nem is igényel. Ehelyett a Deno lehetővé teszi a külső könyvtárak közvetlen importálását nem csak a fejlesztő rendszeréről, hanem minden olyan helyről, amely elfogadja a HTTP kéréseket.

Ez lehetővé teszi a könyvtárak importálását a Deno tárolójából vagy bármely online CDN-ből közvetlenül a kódbázisukból.

A Deno hivatalos csomagnyilvántartása nem olyan teljesen kidolgozott, mint a Node-é, köszönhetően a Node közel kilenc éves előnnyel. A könyvtárak bárhonnan történő importálása megóv attól, hogy elszenvedje egy olyan ökoszisztéma következményeit, amelynek még nem volt lehetősége teljes méretre növekedni.

Közösségi részvétel a Node-ban és a Denóban

Eredetileg 2009-ben, Ryan Dahl adta ki, a Node-nak bőven volt ideje, hogy a fejlesztői közösség bekapcsolódjon. A rengeteg korai alkalmazónak és a hivatalos tárházában tárolt és az Ön rendelkezésére álló csomagok tekintélyes könyvtárának köszönhetően a közönség bőven beleszólhat a Node.js növekedésébe.

Maga a platform teljesen nyílt forráskódú, az OpenJS Foundation és számos közreműködő karbantartja.

A Deno 2018-ban jelent meg, közel 9 évvel a Node után. Elsősorban Ryan Dahl fejlesztette ki, hogy kezelje a Node megvalósításával kapcsolatos aggályait és sajnálatait. Ma a Deno is nyílt forráskódú az MIT licence alatt.

A rengeteg közreműködővel és egyre növekvő saját tárházával a Deno nagy érdeklődést tapasztalt a közösség részéről.

A két keret teljesítménybeli aggályai

A két keretrendszer közötti relatív teljesítménybeli különbségek iránt érdeklődő kódolók számára alig van különbség a kettő között. A Deno Rust nyelven írt testreszabott motorja egy alapvető keretrendszert fed le, amely még mindig a V8-as motor. Végső soron a Deno és a Node is szinte minden esetben összehasonlítható teljesítmény szempontjából.

Úgy tűnik, hogy ez a helyzet függetlenül attól, hogy az eredményül kapott kód a kiszolgálón vagy az ügyfélen fut-e. Mivel a teljesítmény hozama nem számít bele a döntésbe, szabadon választhatja ki azt a keretet, amelyikben a legkényelmesebb.

Ryan Dahl, mindkét keretrendszer megalkotója többféle indokot is felvetett a Deno megalkotására. Noha számos tényezőt említett, a sok API-ba tett ígéretek megfelelő beépítésétől a választott buildrendszerig, a teljesítmény nem volt része a folyamatnak.

Node vs Deno: melyik a megfelelő választás?

A motorháztető alatt a Node.js és a Deno is rendkívül hasonló keretrendszer. Mindkettő a V8-as motor segítségével hajtja végre a JavaScriptet, hasonló teljesítménnyel és képességekkel. Bár vannak különbségek a szintaxisban, a csomagkezelésben és a beépített támogatásban, a választás, hogy melyiket használja, nagyrészt az Ön preferenciáitól függ.

A Node megdöbbentően nagy ökoszisztémával büszkélkedhet, de a Deno lehetővé teszi, hogy bármilyen forrásból levonja a függőségeit. Végső soron alaposan meg kell vizsgálnia saját fejlesztési stílusát, és meg kell határoznia, melyik platform illik jobban az Ön számára.