Node.js gali būti gerai žinomas, tačiau nepamirškite Deno – panašios to paties kūrėjo sistemos.
Node.js yra ilgai veikianti sistema, leidžianti rašyti serverio kodą JavaScript. Iš pradžių 2009 m. išleista sistema pastaraisiais metais smarkiai išaugo ir sparčiai išaugo.
Deno skiriasi formatavimo stilius, importo sintaksė ir paketų valdymas, tačiau tas pats inžinierius sukūrė šias konkuruojančias sistemas tame pačiame variklyje.
Šiandien Deno egzistuoja pakankamai ilgai, kad užsitarnavo vietą daugelio kūrėjų būryje. Jei norite pradėti naują „JavaScript“ projektą, galite susimąstyti, kuris pasirinkimas yra tinkamas.
Mazgo ir Deno funkcijos
Praėjus beveik devyneriems metams po „Node“ išleidimo, jo kūrėjas Ryanas Dahlas paskelbė apie naują projektą: „Deno“. Kai „Node“ kadaise buvo vienintelė serverio pusės „JavaScript“ parinktis, „Deno“ suteikė mums alternatyvą.
Node.js ir Deno daugeliu atžvilgių yra gana panašūs. Dauguma šių dviejų skirtumų atsiranda po gaubtu. Ten, kur „Node“ veikia V8 „JavaScript“ varikliu, „Deno“ viršija pagal užsakymą sukurtą variklį, sukurtą „Rust“, daugiausia dėmesio skiriant našumui.
Dauguma pagrindinių skirtumų tarp šių dviejų yra pagrįsti funkcijomis, kurias palaiko kiekviena kalba. Moduliai, šlifavimas, mašinraštis ir paketų valdymas yra tvarkomi gana skirtingai.
Modulio importas: CommonJS vs. ES
Node.js pagal numatytuosius nustatymus naudoja CommonJS modulius su reikalavimo () sintaksė. „Node“ leidžia tai pakeisti pakeitus konfigūracijos failus, kad vietoj to būtų naudojami ECMAScript moduliai su importo () sintaksė, jei jie to pageidauja.
// Tai galiojantis „CommonJS“ modulio importavimas į Node.js
var _ = reikalauti("lodašas");
// Tai galiojantis ECMAScript modulio importavimas į Node.js
importuoti _ iš'lodash';
Dviejų ES modulių įkėlimo tipų sąveika yra ribota, kai kuriuos ECMAScript modulius galima įtraukti naudojant reikalavimo () sintaksę. Kiekvienas importavimo tipas modulius apdoroja šiek tiek skirtingai, tačiau daugeliu atvejų veiks bet kuris iš jų.
Tai leidžia pasirinkti pageidaujamą metodiką, kaip įtraukti išorinius modulius kuriant projektą.
Deno laikosi kitokio požiūrio, kai reikia įtraukti išorinius modulius į projektą. „Deno“ visiems moduliams naudoja „include()“ sintaksę, tačiau, skirtingai nei „Node“ importas, „Deno“ importuoti moduliai gali būti iš bet kurios vietos. Šiose vietose gali būti net nuotoliniai turinio pristatymo tinklai (CDN).
// Tai galiojantis Deno importo pareiškimas
importuoti" https://deno.land/x/[email protected]/dist/lodash.js";
Tai leidžia importuoti priklausomybes iš bet kurios vietos, vietinės ar nuotolinės, ir suteikia daug daugiau lankstumo. Jei norite dirbti su tradicine Node.js sintaksė, galite parašyti savo daugialypės terpės reikalavimo funkciją „Deno“ kaip problemos sprendimą.
„TypeScript“ kodo palaikymas
Per pastaruosius kelerius metus „TypeScript“ populiarumas auga ir nėra jokių požymių, kad greitu metu sulėtės. Įdiegti saugaus tipo kodo dinamiką „JavaScript“ pasirodė beprotiškai sėkminga.
Šiandien naujo „TypeScript“ projekto nustatymas arba esamo „Node.js“ projekto konvertavimas į „TypeScript“ yra paprastas, nors ir atima šiek tiek laiko.
„TypeScript“ palaikymo pridėjimas tapo pakankamai populiarus, kad dauguma šiuolaikinių sistemų dabar turi tam tikrą „TypeScript“ palaikymą. „Angular“ pirmavo su jau įdiegtu „TypeScript“ palaikymu. Šiandien net „React“ turi metodus, kaip nustatyti „TypeScript“ palaikymą.
„Deno“ buvo sukurta su „TypeScript“ palaikymu, kad padidėtų jūsų produktyvumas. Turėdamas „TypeScript“ palaikymą, „Deno“ neturi net minimalios sąrankos, reikalingos Node.js, kad būtų galima sukurti įvestą „JavaScript“ kodą.
Jei mėgstate „TypeScript“, galite greitai ir lengvai pradėti naudotis „Deno“ palaikymu, tačiau gali trūkti kai kurių standartinių Node.js bibliotekų. Nors „Deno“ siūlo greitesnę sąranką, išvystytos ekosistemos trūkumas gali trukdyti jūsų kūrimo procesui.
Pūkuotumas, kad būtų sukurtas valiklio kodas
Node.js turi platų linterų pasirinkimą, iš kurių galite rinktis. Yra daug gerai išvystytų parinkčių, kurias galite greitai ir lengvai įdiegti bei konfigūruoti. Tačiau, kaip ir „TypeScript“, turėsite šiek tiek pasistengti, kad pradėtumėte naudoti pasirinktą „Linter“.
„Deno“ pasirinko šiek tiek kitokį kodo formatavimo kelią – jis buvo įtrauktas į .js, .ts ir .md failų liniavimo sprendimą. Vykdant komandą „deno fmt“, visi failai dabartiniame darbiniame kataloge bus automatiškai suformatuoti.
Jei nesate numatytosios „Linter“ gerbėjas, yra galimybė įdiegti ir paleisti pasirinktą formatavimo sistemą, kaip tai darytumėte su „Node“. Sistemų perjungimas yra paprastas, nes Deno linteris veikia naudojant išorinę komandą, o ne kaip numatytojo kūrimo dujotiekio dalis.
Jei ketinate pakeisti Deno linterį į naują sistemą, turėtumėte žinoti apie galimas suderinamumo problemas ir jas nepamiršti. Daugeliui „JavaScript“ linijų reikės įdiegti mazgą, kad jis veiktų, net jei tai nėra sistema, kurioje vykdomas formatuojamas projektas.
Paketo valdymas
Node paketų tvarkyklė (npm) yra labai gerai žinoma tarp šiuolaikinių kūrėjų. Remdamiesi panašių sistemų, tokių kaip Python's Pip ir Ruby's RubyGems, sėkme, npm greitai išpopuliarėjo.
Dėl užsitęsusių rūpesčių atsiranda konkuruojančių vadovų, tokių kaip pNPm ir verpalai. Yra keletas situacijų, kai netgi galite pasirinkti įdiegti ir naudoti keli paketų tvarkytuvai su Node.
Šiandien, jei pasirenkate kurti naudojant Node.js, jūs esate šiek tiek išlepintas pasirinkimu, kai kalbama apie paketų valdymą. „Node“ gali pasigirti klestinčia ekosistema su daugybe paketų diegimo galimybių. Šiuo metu pagrindiniame npm registre yra per 1,3 mln.
Npm leidžia publikuoti savo paketus, vedantis į stulbinančiai didelę biblioteką.
Deno laikėsi visiškai kitokio požiūrio į paketų valdymą. Ji neturi ir nereikalauja paketų valdymo sistemos. Vietoj to, Deno leidžia tiesiogiai importuoti išorines bibliotekas ne tik iš kūrėjo sistemos, bet ir iš bet kurios vietos, kuri priima HTTP užklausas.
Tai leidžia importuoti bibliotekas iš Deno saugyklos arba bet kurio CDN internete tiesiai iš jų kodų bazės.
Oficialus „Deno“ paketų registras nėra toks pilnai išplėtotas kaip „Node“, nes „Node“ pradėjo veikti beveik devynerius metus. Galimybė importuoti bibliotekas iš bet kurios vietos apsaugo jus nuo ekosistemos, kuri dar neturėjo galimybės išaugti iki pilno dydžio, padarinių.
Bendruomenės dalyvavimas „Node“ ir „Deno“.
Iš pradžių 2009 m. išleistą Ryano Dahlio „Node“ turėjo daug laiko kūrėjų bendruomenei įsitraukti. Turėdami daugybę ankstyvųjų naudotojų ir didelę paketų biblioteką, saugomą jos oficialioje saugykloje ir turite galimybę naudotis jūsų žiniomis, visuomenė turėjo daug įtakos Node.js augimui.
Pati platforma yra visiškai atvirojo kodo, ją prižiūri OpenJS fondas ir daugelis bendradarbių.
„Deno“ buvo išleistas 2018 m., praėjus beveik 9 metams po „Node“. Ją iš esmės sukūrė Ryanas Dahlas, norėdamas išspręsti susirūpinimą ir apgailestavimą dėl „Node“ diegimo. Šiandien Deno taip pat yra atvirojo kodo pagal MIT licenciją.
Turėdamas daug bendraautorių ir augantį savo saugyklą, Deno sulaukė didžiulio bendruomenės susidomėjimo.
Dviejų rėmų veiklos susirūpinimas
Programuotojams, besidomintiems santykiniais dviejų sistemų našumo skirtumais, tarp jų nėra daug skirtumų. Deno pritaikytas variklis, parašytas Rust, perdengia pagrindinę sistemą, kuri vis dar yra V8 variklis. Galiausiai tiek Deno, tiek Node beveik visais atvejais yra palyginami našumo požiūriu.
Atrodo, kad taip yra neatsižvelgiant į tai, ar gautas kodas veikia serveryje, ar kliente. Kadangi našumo pajamingumas neatsižvelgia į sprendimą, galite laisvai pasirinkti sistemą, kuri jums labiausiai patinka.
Ryanas Dahlas, abiejų konstrukcijų kūrėjas, pasiūlė daugybę priežasčių, kodėl jis sukūrė „Deno“. Nors jis paminėjo kelis veiksnius, pradedant netinkamu pažadų įtraukimu į daugelį API ir baigiant pasirinkta kūrimo sistema, našumas nebuvo proceso dalis.
Node vs Deno: kuris yra teisingas pasirinkimas?
Po gaubtu Node.js ir Deno yra nepaprastai panašios sistemos. Abu vykdo „JavaScript“ naudodami V8 variklį, turintį panašų našumą ir galimybes. Nors yra tam tikrų sintaksės, paketų valdymo ir integruoto palaikymo skirtumų, jūsų pasirinkimas, kurį naudoti, daugiausia priklauso nuo jūsų pageidavimų.
„Node“ gali pasigirti stulbinančiai didele ekosistema, tačiau „Deno“ leidžia ištraukti savo priklausomybes iš bet kurio šaltinio. Galiausiai turėsite atidžiai išnagrinėti savo kūrimo stilių ir nuspręsti, kuri platforma jums labiau tinka.