Node.js může být dobře zaveden, ale nepřehlédněte Deno, podobný framework od stejného vývojáře.

Node.js je dlouhotrvající framework, který vám umožňuje psát kód na straně serveru v JavaScriptu. Tento rámec, který byl původně vydán v roce 2009, zaznamenal v posledních letech značný růst a explozi v používání.

Deno má rozdíly ve stylu formátování, syntaxi importu a správě balíčků, ale stejný inženýr postavil tyto konkurenční rámce na stejném enginu.

Dnes Deno existuje dostatečně dlouho na to, aby si zasloužilo místo v hromadách mnoha vývojářů. Pokud se snažíte zahájit nový projekt JavaScript, možná se budete ptát, která volba je správná.

Funkce Node a Deno

Téměř devět let po vydání Node oznámil jeho vývojář Ryan Dahl nový projekt: Deno. Tam, kde byl Node kdysi jedinou možností pro JavaScript na straně serveru, nám Deno poskytlo alternativu.

Node.js a Deno jsou si v mnoha ohledech dost podobné. Většina rozdílů mezi těmito dvěma se nachází pod kapotou. Tam, kde Node běží na JavaScriptovém enginu V8, Deno převyšuje zakázkově napsaný engine postavený v Rustu se silným zaměřením na výkon.

Většina hlavních rozdílů mezi těmito dvěma je založena na tom, které funkce každý jazyk podporuje. Moduly, linting, strojopis a správa balíčků jsou mezi nimi řešeny zcela odlišně.

Import modulů: CommonJS vs. ES

Node.js standardně používá moduly CommonJS se syntaxí require(). Uzel vám to umožňuje změnit změnou konfiguračních souborů tak, aby místo toho používaly moduly ECMAScript se syntaxí import(), pokud si to přejí.

// Toto je platný import modulu CommonJS do Node.js
var _ = vyžadovat("lodash");

// Toto je platný import modulu ECMAScript do Node.js
import _ z'lodash';

Mezi těmito dvěma typy načítání modulů ES existuje určitá omezená interoperabilita, přičemž některé moduly ECMAScript lze zahrnout pomocí syntaxe require(). Každý typ importu zpracovává moduly mírně odlišně, ale ve většině případů bude fungovat kterýkoli z nich.

To vám umožní vybrat si preferovanou metodologii pro zahrnutí externích modulů při vytváření projektu.

Společnost Deno používá jiný přístup, pokud jde o zahrnutí externích modulů do projektu. Deno používá syntaxi include() pro všechny moduly, ale na rozdíl od importu Node mohou moduly importované do Deno pocházet z libovolného místa. Tato umístění mohou dokonce zahrnovat vzdálené sítě pro doručování obsahu (CDN).

// Toto je platné prohlášení o importu v Deno
import" https://deno.land/x/[email protected]/dist/lodash.js";

To vám umožní importovat závislosti z jakéhokoli místa, místního nebo vzdáleného, ​​což nabízí mnohem větší flexibilitu. Pokud dáváte přednost práci s tradiční syntaxí požadavku z Node.js, můžete si v Deno napsat vlastní funkci požadavku polyfill jako řešení.

Podpora kódu TypeScript

TypeScript za posledních několik let zaznamenal rostoucí popularitu, aniž by se v dohledné době objevily známky zpomalení. Vnesení dynamiky typově bezpečného kódu do JavaScriptu se ukázalo jako mimořádně úspěšné úsilí.

Dnes je nastavení nového projektu TypeScript nebo převod existujícího projektu Node.js na TypeScript jednoduché, i když poněkud časově náročné.

Přidání podpory TypeScript se stalo natolik populární, že většina moderních frameworků má nyní nějakou formu podpory TypeScript. Angular vedl cestu, s přímou podporou TypeScript. Dnes dokonce React má metody pro nastavení podpory TypeScript.

Deno bylo navrženo s podporou TypeScript, aby pomohla zvýšit vaši produktivitu. Díky přednastavené podpoře TypeScriptu Deno postrádá i minimální nastavení, které vyžaduje Node.js pro vývoj typovaného kódu JavaScript.

Pokud máte rádi TypeScript, můžete s podporou společnosti Deno začít rychle a snadno, ale možná zjistíte, že vám chybí některé ze standardních knihoven Node.js. Zatímco Deno nabízí rychlejší nastavení, nedostatek rozvinutého ekosystému vám může bránit v procesu sestavování.

Linting pro generování čistšího kódu

Node.js má širokou škálu linterů, ze kterých si můžete vybrat. Existuje spousta dobře vyvinutých možností, které můžete rychle a snadno nainstalovat a nakonfigurovat. Podobně jako v případě TypeScript však budete muset udělat trochu práce, abyste mohli začít s jejich výběrem.

Deno se vydalo trochu jinou cestou ve formátování kódu a přišlo s vlastním vestavěným řešením pro linting pro soubory .js, .ts a .md. Spuštěním příkazu "deno fmt" se automaticky naformátují všechny soubory v aktuálním pracovním adresáři.

Pokud nejste fanouškem výchozího linteru, existuje možnost nainstalovat a spustit formátovací systém podle vašeho výběru, stejně jako u Node. Přepínání systémů je jednoduché, protože linter společnosti Deno běží prostřednictvím externího příkazu a nikoli jako součást výchozího kanálu sestavení.

Pokud uvažujete o výměně Deno's linter za nový systém, měli byste si být vědomi potenciálních problémů s kompatibilitou a mít je na paměti. Většina JavaScriptových linterů vyžaduje ke spuštění instalaci Node, i když to není systém, na kterém běží formátovaný projekt.

Správa balíků

Správce balíčků uzlů (npm) je mezi moderními vývojáři velmi známý. Na základě úspěchu podobných systémů jako Python's Pip a Ruby's RubyGems si npm rychle získal popularitu.

Přetrvávající obavy vedou k rozvoji konkurenčních manažerů, jako jsou pNPm a Yarn. V některých situacích se dokonce můžete rozhodnout nainstalovat a používat více správců balíčků s Node.

Pokud se dnes rozhodnete vyvíjet v Node.js, máte poněkud rozmazlený výběr, pokud jde o správu balíčků. Node se může pochlubit prosperujícím ekosystémem se spoustou možností pro instalaci balíčků. V hlavním registru npm je aktuálně přes 1,3 milionu.

Npm vám umožňuje publikovat vlastní balíčky, což vede k neuvěřitelně velké knihovně.

Deno zvolil zcela odlišný přístup ke správě balíčků. Nemá ani nevyžaduje systém správy balíčků. Místo toho Deno umožňuje přímý import externích knihoven nejen ze systému vývojáře, ale z jakéhokoli umístění, které přijímá požadavky HTTP.

To vám umožňuje importovat knihovny z úložiště Deno nebo libovolného CDN online přímo z jejich kódové základny.

Oficiální registr balíčků společnosti Deno není tak plně vyvinutý jako společnost Node, a to díky téměř devítiletému náskoku společnosti Node. Možnost importovat knihovny odkudkoli vás chrání před následky ekosystému, který ještě neměl šanci dorůst do plné velikosti.

Zapojení komunity do Node a Deno

Node, původně vydaný v roce 2009 Ryanem Dahlem, měl spoustu času na to, aby se zapojila vývojářská komunita. Se spoustou prvních osvojitelů a rozsáhlou knihovnou balíčků uložených v jeho oficiálním úložišti a které máte k dispozici, má veřejnost k růstu Node.js spoustu slov.

Samotná platforma je zcela open-source, spravovaná OpenJS Foundation a mnoha přispěvateli.

Deno vyšlo v roce 2018, téměř 9 let po Node. Byl vyvinut především Ryanem Dahlem, aby reagoval na obavy a výčitky, které měl s implementací Node. Dnes je Deno také open source pod licencí MIT.

Se spoustou přispěvatelů a rostoucím vlastním úložištěm zaznamenalo Deno velký zájem komunity.

Obavy o výkon dvou rámců

Pro kodéry, kteří se zajímají o relativní výkonnostní rozdíly mezi těmito dvěma frameworky, je mezi nimi malý rozdíl. Přizpůsobený engine Deno napsaný v Rustu překrývá základní rámec, který je stále motorem V8. V konečném důsledku jsou Deno i Node výkonově téměř ve všech případech srovnatelné.

Zdá se, že tomu tak je bez ohledu na to, zda výsledný kód běží na serveru nebo klientovi. Vzhledem k tomu, že při rozhodování nejsou zohledněny výnosy z výkonu, můžete si svobodně vybrat rámec, se kterým se cítíte nejpohodlněji.

Ryan Dahl, tvůrce obou frameworků, nabídl řadu důvodů pro jeho vytvoření Deno. I když zmínil několik faktorů, od toho, že se nepodařilo správně začlenit sliby do mnoha rozhraní API, až po zvolený systém sestavování, výkon nebyl součástí procesu.

Node vs Deno: Která je správná volba?

Pod kapotou jsou Node.js i Deno pozoruhodně podobné frameworky. Oba spouštějí JavaScript pomocí motoru V8 s podobným výkonem a schopnostmi. I když existují určité rozdíly v syntaxi, správě balíčků a vestavěné podpoře, váš výběr, který chcete použít, závisí do značné míry na vašich preferencích.

Node se může pochlubit ohromně velkým ekosystémem, ale Deno vám umožňuje získat své závislosti z jakéhokoli zdroje. Nakonec se budete muset blíže podívat na svůj vlastní vývojový styl a určit, která platforma je pro vás vhodnější.