Node.js môže byť dobre zavedený, ale neprehliadnite Deno, podobný rámec od rovnakého vývojára.
Node.js je dlhotrvajúci rámec, ktorý vám umožňuje písať kód na strane servera v JavaScripte. Tento rámec, ktorý bol pôvodne vydaný v roku 2009, zaznamenal v posledných rokoch značný rast a explóziu v používaní.
Deno má rozdiely v štýle formátovania, syntaxe importu a správe balíkov, ale rovnaký inžinier postavil tieto konkurenčné rámce na rovnakom engine.
Dnes Deno existuje dostatočne dlho na to, aby si získal miesto medzi mnohými vývojármi. Ak sa snažíte spustiť nový projekt JavaScript, možno sa pýtate, ktorá je tá správna voľba.
Funkcie Node a Deno
Takmer deväť rokov po vydaní Node ohlásil jeho vývojár Ryan Dahl nový projekt: Deno. Tam, kde bol Node kedysi jedinou možnosťou pre JavaScript na strane servera, nám Deno poskytlo alternatívu.
Node.js a Deno sú si v mnohých ohľadoch dosť podobné. Väčšina rozdielov medzi nimi sa vyskytuje pod kapotou. Tam, kde Node beží na V8 JavaScript engine, Deno beží nad vlastným napísaným motorom postaveným v Ruste so silným zameraním na výkon.
Väčšina hlavných rozdielov medzi nimi je založená na tom, ktoré funkcie každý jazyk podporuje. Moduly, linting, strojopis a správa balíkov sú medzi nimi úplne odlišné.
Import modulov: CommonJS vs. ES
Node.js štandardne používa moduly CommonJS so syntaxou require(). Node vám to umožňuje zmeniť zmenou vašich konfiguračných súborov tak, aby namiesto toho používali moduly ECMAScript so syntaxou import(), ak chcú.
// Toto je platný import modulu CommonJS do Node.js
var _ = vyžadovať("lodash");
// Toto je platný import modulu ECMAScript do Node.js
importovať _ od"lodash";
Existuje určitá obmedzená interoperabilita medzi dvoma typmi načítania modulu ES, pričom niektoré moduly ECMAScript je možné zahrnúť pomocou syntaxe require(). Každý typ importu narába s modulmi trochu inak, ale vo väčšine prípadov bude fungovať ktorýkoľvek z nich.
To vám umožní vybrať si preferovanú metodiku pre zahrnutie externých modulov pri vytváraní projektu.
Deno má iný prístup, pokiaľ ide o zahrnutie externých modulov do projektu. Deno používa syntax include() pre všetky moduly, avšak na rozdiel od importu Node môžu moduly importované do Deno pochádzať z akéhokoľvek miesta. Tieto miesta môžu dokonca zahŕňať vzdialené siete na doručovanie obsahu (CDN).
// Toto je platné vyhlásenie o dovoze v Deno
importovať" https://deno.land/x/[email protected]/dist/lodash.js";
To vám umožňuje importovať závislosti z akéhokoľvek miesta, lokálneho alebo vzdialeného, čo ponúka oveľa väčšiu flexibilitu. Ak uprednostňujete prácu s tradičnou vyžadovanou syntaxou z Node.js, môžete si v Deno napísať vlastnú funkciu vyžadujúca polyfill ako riešenie.
Podpora kódu TypeScript
TypeScript zaznamenal za posledných niekoľko rokov rastúci nárast popularity, pričom v dohľadnej dobe nie sú žiadne známky spomalenia. Prinesenie dynamiky typovo bezpečného kódu do JavaScriptu sa ukázalo ako mimoriadne úspešné úsilie.
Dnes je nastavenie nového projektu TypeScript alebo konverzia existujúceho projektu Node.js na TypeScript jednoduché, aj keď trochu časovo náročné.
Pridanie podpory TypeScript sa stalo natoľko populárnym, že väčšina moderných rámcov má teraz nejakú formu podpory TypeScript. Angular viedol cestu s priamou podporou TypeScript. Dnes dokonca React má metódy na nastavenie podpory TypeScript.
Deno bol navrhnutý s podporou TypeScript, aby pomohol zvýšiť vašu produktivitu. Vďaka predpripravenej podpore TypeScript chýba Deno aj minimálne nastavenie, ktoré vyžaduje Node.js na vývoj písaného kódu JavaScript.
Ak máte radi TypeScript, s podporou spoločnosti Deno môžete začať rýchlo a jednoducho, no možno zistíte, že vám chýbajú niektoré zo štandardných knižníc Node.js. Aj keď Deno ponúka rýchlejšie nastavenie, nedostatok rozvinutého ekosystému vám môže brániť v procese zostavovania.
Linting na generovanie čistiaceho kódu
Node.js má širokú škálu linterov, z ktorých si môžete vybrať. Existuje veľa dobre vyvinutých možností, ktoré môžete rýchlo a jednoducho nainštalovať a nakonfigurovať. Podobne ako v prípade TypeScript však budete musieť urobiť trochu práce, aby ste mohli začať s ich výberom.
Deno sa vydalo trochu inou cestou vo formátovaní kódu a prichádza s vlastným vstavaným riešením na vytváranie liningu pre súbory .js, .ts a .md. Spustenie príkazu "deno fmt" automaticky naformátuje všetky súbory v aktuálnom pracovnom adresári.
Ak nie ste fanúšikom predvoleného linteru, existuje možnosť nainštalovať a spustiť systém formátovania podľa výberu, rovnako ako v prípade Node. Prepínanie systémov je jednoduché, pretože linter spoločnosti Deno beží prostredníctvom externého príkazu a nie ako súčasť predvoleného kanála zostavovania.
Ak uvažujete o výmene Deno's linter za nový systém, mali by ste si byť vedomí potenciálnych problémov s kompatibilitou a mať ich na pamäti. Väčšina JavaScript linters bude vyžadovať inštaláciu Node na spustenie, aj keď to nie je systém, na ktorom beží formátovaný projekt.
Správa balíkov
Správca balíkov uzlov (npm) je medzi modernými vývojármi veľmi známy. Na základe úspechu podobných systémov ako Python's Pip a Ruby's RubyGems si npm rýchlo získal popularitu.
Pretrvávajúce obavy vedú k rozvoju konkurenčných manažérov, ako sú pNPm a Yarn. Existujú situácie, v ktorých sa môžete dokonca rozhodnúť nainštalovať a používať viacerých správcov balíkov s Node.
Ak sa dnes rozhodnete pre vývoj v Node.js, máte trochu rozmaznaný výber, pokiaľ ide o správu balíkov. Node sa môže pochváliť prosperujúcim ekosystémom s množstvom možností na inštaláciu balíkov. V hlavnom registri npm je v súčasnosti viac ako 1,3 milióna.
Npm vám umožňuje publikovať vlastné balíčky, čo vedie k ohromujúco veľkej knižnici.
Deno zaujal úplne odlišný prístup k správe balíkov. Nemá ani nevyžaduje systém správy balíkov. Namiesto toho Deno umožňuje priamy import externých knižníc nielen zo systému vývojára, ale z akéhokoľvek miesta, ktoré prijíma požiadavky HTTP.
To vám umožňuje importovať knižnice z úložiska Deno alebo akéhokoľvek CDN online priamo z ich kódovej základne.
Oficiálny register balíkov spoločnosti Deno nie je tak úplne vyvinutý ako register spoločnosti Node, a to vďaka takmer deväťročnému náskoku spoločnosti Node. Možnosť importovať knižnice odkiaľkoľvek vás chráni pred dôsledkami ekosystému, ktorý ešte nemal šancu narásť do plnej veľkosti.
Zapojenie komunity do Node a Deno
Pôvodne vydaný v roku 2009 Ryanom Dahlom, Node mal dostatok času na to, aby sa zapojila vývojárska komunita. S množstvom prvých používateľov a rozsiahlou knižnicou balíkov uložených v jeho oficiálnom úložisku, ktoré máte k dispozícii, má verejnosť veľa možností vyjadriť sa k rastu Node.js.
Samotná platforma je úplne open-source, spravovaná OpenJS Foundation a mnohými prispievateľmi.
Deno vyšlo v roku 2018, takmer 9 rokov po Node. Hlavne ho vyvinul Ryan Dahl, aby riešil obavy a výčitky, ktoré mal s implementáciou Node. Dnes je Deno aj open source pod licenciou MIT.
S množstvom prispievateľov a rastúcim vlastným úložiskom zaznamenalo Deno veľký záujem komunity.
Obavy o výkon dvoch rámcov
Pre programátorov, ktorí sa zaujímajú o relatívne výkonnostné rozdiely medzi týmito dvoma rámcami, je medzi nimi malý rozdiel. Prispôsobený motor spoločnosti Deno napísaný v jazyku Rust prekrýva základný rámec, ktorý je stále motorom V8. V konečnom dôsledku sú Deno aj Node z hľadiska výkonu takmer vo všetkých prípadoch porovnateľné.
Zdá sa, že je to tak bez ohľadu na to, či výsledný kód beží na serveri alebo klientovi. Vzhľadom na to, že pri rozhodovaní nezohľadňujú výnosy z výkonu, môžete si slobodne vybrať rámec, ktorý vám najviac vyhovuje.
Ryan Dahl, tvorca oboch rámcov, ponúkol rôzne dôvody pre jeho vytvorenie Deno. Aj keď spomenul niekoľko faktorov, od nesprávneho začlenenia sľubov do mnohých rozhraní API až po jeho vybraný systém zostavovania, výkon nebol súčasťou procesu.
Node vs Deno: Ktorá je správna voľba?
Pod kapotou sú Node.js aj Deno pozoruhodne podobné rámce. Oba spúšťajú JavaScript pomocou motora V8 s podobným výkonom a schopnosťami. Aj keď existujú určité rozdiely v syntaxi, správe balíkov a vstavanej podpore, váš výber, ktorý chcete použiť, závisí vo veľkej miere od vašich preferencií.
Node sa môže pochváliť úžasne veľkým ekosystémom, ale Deno vám umožňuje získať svoje závislosti z akéhokoľvek zdroja. Nakoniec sa budete musieť dôkladne pozrieť na svoj vlastný štýl vývoja a určiť, ktorá platforma je pre vás vhodnejšia.