Programavimas

Kas yra Deno? „Geresnis“ mazgas.js

Jei jums patinka „Node.js“, bet ne jo paketų tvarkyklė „npm“ arba norite saugesnės „JavaScript“ vykdymo laiko aplinkos nei „Node.js“, galite rasti naują dominančią atvirojo kodo projektą „Deno“ (žodis „Deno“ yra „Node“ anagrama). Kita vertus, jei gamyboje naudojate „Node.js“, čia nėra ką matyti, judėkite toliau - „Deno“ vis dar „labai kuriama“.

„Deno“ yra programa, skirta „JavaScript“ ir „TypeScript“ kodams paleisti ne naršyklėje. Tai naujausios pastangos, kurias vedė Ryanas Dahlas, įkūręs „Node.js“ projektą 2009 m., Ir tai yra bandymas iš naujo įsivaizduoti „Node.js“, atsižvelgiant į „JavaScript“ pažangą nuo 2009 m., Įskaitant „TypeScript“ kompiliatorių. Kaip ir „Node.js“, „Deno“ iš esmės yra „Google V8“ „JavaScript“ variklio apvalkalas, nors, skirtingai nei „Node.js“, į vykdomąjį vaizdą įtraukia „TypeScript“ kompiliatorių.

„Deno“ ir išplėstinė „JavaScript“

2009 m. „JavaScript“ trūko kelių funkcijų, kurios būtų naudingos „Node.js“, teigia Dahlas. Keletas jų per keletą metų buvo pridėti prie „JavaScript“ kaip dalis ECMAScript (ES) standarto, o „TypeScript“ atkreipė dėmesį į dar kelis.

„JavaScript“ turėjo įvykių ir atgalinių skambučių iš esmės visam laikui, tačiau jie gali sukelti gana sudėtingą kodą, ypač kai norite susieti asinchroninius veiksmus. Pažadai padaryti sintaksę šiek tiek lengviau skaitomą. A pažadas yra grąžinamas objektas, reiškiantis galimą asinchroninės operacijos užbaigimą ar gedimą, prie kurio galite pridėti atgalinius skambučius, o ne atgalinius perduoti į funkciją. Funkcijos deklaravimas asinchroninis dar labiau supaprastina sintaksę, leidžiančią naudoti laukti funkcijos ribose sustabdyti neužblokuojantį būdą, kol pažadas bus įvykdytas.

Kai buvo sukurtas „Node.js“, de facto „JavaScript“ modulių standartas buvo „CommonJS“, o tai palaiko „npm“. Nuo tada ECMAScript komitetas oficialiai palaimino kitokį standartą - ES modulius, o tai palaiko jspm. „Deno“ palaiko ES modulius.

Įvestos masyvai yra ES6 API, skirta tvarkyti dvejetainius duomenis, ką „Node.js“ galėjo naudoti; trūksta dvejetainių duomenų palaikymo, kilo tam tikrų „Node.js“ dizaino problemų. „Deno“ naudoja įveskite masyvus, kai reikia manipuliuoti neapdorotais dvejetainiais duomenimis. „Node.js“ dabar palaiko įveskite masyvus vartotojo kodui.

„TypeScript“ yra tipinis „JavaScript“ rinkinys, kompiliuojamas į paprastą „JavaScript“ (ES3 ar naujesnę versiją; jį galima konfigūruoti). „TypeScript“ prideda pasirinktinius tipus, klases ir modulius prie „JavaScript“ ir palaiko didelio masto „JavaScript“ programų įrankius. (Andersas Hejlsbergas tai vadina „JavaScript, kuris keičia mastelį“.) Kaip minėta anksčiau, „Deno“ yra vykdymo laiko dalis „TypeScript“ kompiliatoriaus atvaizdas. Jei perduosite „Deno“ „TypeScript“ failą, jis pirmiausia sukompiliuos jį į „JavaScript“, o tada perduos V8 varikliui.

„Node.js“ dizaino trūkumai

Pasak Dahlio, kuris vis dėlto kūrė „Node.js“ ir „Deno“, „Node.js“ kenčia nuo trijų pagrindinių dizaino problemų:

  • blogai suprojektuota modulių sistema su centralizuotu paskirstymu;
  • daug senų API, kurias reikia palaikyti;
  • ir saugumo trūkumas.

Deno išsprendžia visas tris problemas.

Deno saugus vykdymas

Deno būdas pagerinti „Node.js“ saugumą yra paprastas: Pagal numatytuosius nustatymus „Deno“ neleis programai pasiekti disko, tinklo, antrinių procesų ar aplinkos kintamųjų. Kai jums reikia leisti bet kurį iš šių variantų, galite pasirinkti naudodami komandų eilutės vėliavą, kuri gali būti tokia grubi kaip jums patinka, pavyzdžiui --allow-read = / tmp arba --allow-net = google.com. Kitas „Deno“ saugumo patobulinimas yra tas, kad jis visada miršta dėl nesuvoktų klaidų, skirtingai nei „Node.js“, kuris leis vykdyti vykdymą po neužfiksuotos klaidos, o rezultatai gali būti nenuspėjami.

„Deno“ moduliai

Iš „Node.js“ įkeliate „CommonJS“ modulius naudodami reikalauti raktinį žodį ir jie visi, tiek standartiniai, tiek trečiosios šalys, netiesiogiai kilę iš npmjs.com. Denoje ES modulius įkeliate naudodami importas raktinį žodį ir aiškiai nurodykite URL. Pavyzdžiui:

importuoti * kaip žurnalą iš „//deno.land/std/log/mod.ts“;

„Deno“ modulius galima talpinti bet kur - nėra centralizuotos trečiųjų šalių modulių talpyklos. Be to, moduliai visada yra talpykloje ir kompiliuojami vietoje ir nėra atnaujinami, nebent aiškiai prašote atnaujinti. Todėl turėtumėte galėti paleisti „Deno“ programas, kurios jau yra jūsų nešiojamame kompiuteryje, jei visi importai buvo išspręsti vieną kartą, net jei esate lėktuve, kuriame nėra ryšio.

„Deno“ turi centralizuotą kolekciją standartas moduliai, kurie neturi išorinių priklausomybių ir kuriuos peržiūri „Deno“ pagrindinė komanda; jis gyvena deno.land serveryje. Modulio „deno_std“ kolekcija yra laisvas „Go“ standartinės bibliotekos prievadas.

Pasirinkus bibliotekos modelį slypi nedidelė istorija. Dahlas savo „Deno“ prototipą parašė pirmiausia „Go“ kalba, tačiau atrado galimus „Go“ ir „V8“ šiukšlių surinkėjų konfliktus. Tada jis ir jo bendradarbiai perrašė „Deno“ su V8, „Rust“ ir „Rust“ asinchroniniu įvesties / išvesties paketu „Tokio“. Jie įdiegė „Deno“ standartinę biblioteką „TypeScript“.

Šiuo metu „Deno“ yra tinkama ir linksma aplinka, naudojama statant nedidelius privačius scenarijų projektus „TypeScript“. Pasak Dahlo, Deno niekada tikrai neturės įtakos „Node.js“ sėkmei. Nepaisant to, kai „Deno“ pasieks 1.0 versiją, tai gali tapti perspektyviu pasirinkimu kuriant didesnius projektus.

$config[zx-auto] not found$config[zx-overlay] not found