Programiranje

Kaj je Deno? "Boljši" Node.js

Če vam je všeč Node.js, ne pa tudi upravitelja paketov npm, ali če želite varnejše okolje izvajanja JavaScript kot Node.js, boste morda našli nov odprtokodni projekt Deno, ki vas zanima (beseda Deno je anagram Node). Po drugi strani pa, če uporabljate Node.js v produkciji, tukaj ni ničesar videti, nadaljujte - Deno je še vedno v "zelo velikem razvoju".

Deno je program za izvajanje kode JavaScript in TypeScript zunaj brskalnika. Gre za najnovejši napor, ki ga je vodil Ryan Dahl, ki je leta 2009 ustanovil projekt Node.js, in je poskus ponovne zamisli Node.js glede na napredek v JavaScript od leta 2009, vključno s prevajalnikom TypeScript. Tako kot Node.js je tudi Deno v bistvu lupina okoli mehanizma Google V8 JavaScript, čeprav za razliko od Node.js v izvršljivo sliko vključuje prevajalnik TypeScript.

Deno in napredni JavaScript

Po mnenju Dahla leta 2009 JavaScript ni imel več funkcij, ki bi bile koristne za Node.js. Nekaj ​​teh je bilo v preteklih letih dodanih v JavaScript kot del standarda ECMAScript (ES), TypeScript pa jih je obravnaval še nekaj.

JavaScript je imel dogodke in povratne klice v bistvu za vedno, vendar lahko vodijo do precej zapletene kode, še posebej, če želite povezati asinhrona dejanja. Obljube naredite sintakso nekoliko bolj berljivo. A obljubi je vrnjeni objekt, ki predstavlja morebitno dokončanje ali neuspeh asinhrone operacije, ki ji lahko pritrdite povratne klice, v nasprotju s posredovanjem povratnih klicev v funkcijo. Razglasitev funkcije asinh nadalje poenostavi sintakso in vam omogoča uporabo čakati znotraj funkcije, da se zaustavi na način, ki ne blokira, dokler obljuba ne poravna.

Ko je bil ustvarjen Node.js, je bil dejanski standard za module JavaScript CommonJS, kar podpira npm. Od takrat je odbor ECMAScript uradno blagoslovil drug standard, ES Modules, kar podpira jspm. Deno podpira ES-module.

Tipkana polja so ES6 API za obdelavo binarnih podatkov, kar bi lahko uporabil Node.js; pomanjkanje podpore za binarne podatke je privedlo do nekaterih težav z načrtovanjem Node.js. Deno uporablja tipkane nize, kadar mora manipulirati s surovimi binarnimi podatki. Node.js zdaj podpira vtipkane nize za uporabniško kodo.

TypeScript je tipkani nabor JavaScript, ki se prevede v navaden JavaScript (ES3 ali novejši; nastavljiv je). TypeScript doda JavaScript neobvezne vrste, razrede in module ter podpira orodja za obsežne aplikacije JavaScript. (Anders Hejlsberg ga imenuje »JavaScript, ki se prilagaja.«) Kot smo že omenili, Deno vsebuje sliko prevajalnika TypeScript kot del svojega izvajanja. Če Deno prenesete datoteko TypeScript, jo bo najprej prevedel v JavaScript, nato pa jo posredoval motorju V8.

Pomanjkljivosti oblikovanja Node.js

Po mnenju Dahla, ki je navsezadnje oblikoval Node.js in Deno, Node.js trpi zaradi treh glavnih težav z oblikovanjem:

  • slabo zasnovan modulni sistem s centralizirano distribucijo;
  • veliko starejših API-jev, ki jih je treba podpirati;
  • in pomanjkanje varnosti.

Deno odpravi vse tri težave.

Deno varna izvedba

Način, kako Deno izboljša varnost nad Node.js, je preprost: Deno privzeto ne dovoli programu dostopa do diska, omrežja, podprocesov ali spremenljivk okolja. Ko morate dovoliti katero koli od teh, se lahko na primer prijavite z zastavico ukazne vrstice, ki je lahko na primer tako natančna, kot želite, na primer - allow-read = / tmp ali --allow-net = google.com. Druga varnostna izboljšava v Deno je, da vedno umira zaradi neznanih napak, za razliko od Node.js, kar bo omogočilo nadaljevanje izvajanja po neznani napaki, rezultati pa morda ne bodo predvidljivi.

Deno moduli

V Node.js naložite module CommonJS z uporabo zahtevajo ključna beseda in vsi, tako standardni kot neodvisni, implicitno prihajajo iz npmjs.com. V Deno nalagate ES module z uporabo uvoz in izrecno navedite URL. Na primer:

uvoz * kot dnevnik iz "//deno.land/std/log/mod.ts";

Module Deno lahko gosti kjer koli - ni centraliziranega repozitorija za module drugih proizvajalcev. Poleg tega se moduli vedno predpomnijo in prevedejo lokalno ter se ne posodabljajo, razen če izrecno zaprosite za osvežitev. Zato bi morali imeti možnost zagnati programe Deno, ki so že na vašem prenosnem računalniku, če so vsi uvozi enkrat razrešeni, tudi če ste na letalu brez povezave.

Deno ima centralizirano zbirko standard moduli, ki nimajo zunanjih odvisnosti in jih pregleda jedrna skupina Deno; živi na strežniku deno.land. Zbirka modulov deno_std je ohlapna vrata standardne knjižnice Go.

Za to izbiro modela knjižnice je malo zgodovine. Dahl je svoj prototip Deno napisal predvsem v jeziku Go, vendar je odkril morebitne konflikte med zbiralci smeti v Go in V8. Nato je skupaj s sodelavci Deno pravilno napisal z V8, Rust in Rust asinhroni V / I paket Tokio. Uvedli so standardno knjižnico Deno v TypeScript.

Na tej točki je Deno razumno in zabavno okolje za gradnjo majhnih zasebnih skriptnih projektov v TypeScript-u. Po mnenju Dahla Deno nikoli ne bo zares vplival na uspeh Node.js. Kljub temu pa lahko Deno, ko doseže različico 1.0, postane izvedljiva izbira za gradnjo večjih projektov.

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