Ohjelmointi

Mikä on Deno? Parempi Node.js

Jos pidät Node.js: stä, mutta et sen paketinhallinta npm: stä, tai haluat turvallisemman JavaScript-ajonaikaisen ympäristön kuin Node.js, saatat löytää uuden avoimen lähdekoodin projektin Deno (kiinnostava sana Deno). Toisaalta, jos käytät Node.js: ää tuotannossa, täällä ei ole mitään nähtävää, siirry eteenpäin - Deno on edelleen "hyvin kehitteillä".

Deno on ohjelma, joka käyttää JavaScriptiä ja TypeScript-koodia selaimen ulkopuolella. Se on viimeisin ponnistelu, jonka johti Ryan Dahl, joka perusti Node.js-projektin vuonna 2009, ja se on yritys kuvitella Node.js uudelleen ottaen huomioon JavaScriptin kehitys vuodesta 2009 lähtien, mukaan lukien TypeScript-kääntäjä. Kuten Node.js, Deno on olennaisesti kuori Google V8 JavaScript-moottorin ympärillä, vaikka toisin kuin Node.js, se sisältää TypeScript-kääntäjän suoritettavaan kuvaansa.

Deno ja kehittynyt JavaScript

Vuonna 2009 JavaScriptiltä puuttui useita ominaisuuksia, joista olisi ollut hyötyä Node.js: lle Dahlin mukaan. Muutama näistä on lisätty JavaScriptiin vuosien varrella osana ECMAScript (ES) -standardia, ja TypeScript on käsitellyt muutamia muita.

JavaScriptillä on ollut tapahtumia ja takaisinsoittoja olennaisesti ikuisesti, mutta ne voivat johtaa melko monimutkaiseen koodiin, varsinkin kun haluat ketjuttaa asynkronisia toimintoja. Lupaukset tee syntaksista hieman luettavampi. A lupaus on palautettu objekti, joka edustaa asynkronisen operaation mahdollista loppuun saattamista tai epäonnistumista, johon voit liittää takaisinsoittoja, toisin kuin takaisinsoittojen välittäminen funktioon. Funktion ilmoittaminen asynkronoitu yksinkertaistaa edelleen syntaksia, jolloin voit käyttää odottaa toiminnossa pysäyttää estoa estämättä, kunnes lupaus täyttyy.

Kun Node.js luotiin, JavaScript-moduulien tosiasiallinen standardi oli CommonJS, jota npm tukee. Siitä lähtien ECMAScript-komitea siunasi virallisesti toisen standardin, ES-moduulit, jota jspm tukee. Deno tukee ES-moduuleja.

Kirjoitetut taulukot ovat ES6-sovellusliittymä binaaritietojen käsittelyyn, mitä Node.js olisi voinut käyttää; binaaritiedon tuen puute johti joihinkin Node.js-suunnitteluongelmiin. Deno käyttää kirjoitettuja taulukoita, kun sen on käsiteltävä raakaa binääridataa. Node.js tukee nyt kirjoitettuja taulukoita käyttäjäkoodille.

TypeScript on tyypillinen JavaScript-supersarja, joka kääntyy tavalliseen JavaScriptiin (ES3 tai uudempi; se on konfiguroitavissa). TypeScript lisää valinnaiset tyypit, luokat ja moduulit JavaScriptiin ja tukee työkaluja laajamittaisiin JavaScript-sovelluksiin. (Anders Hejlsberg kutsuu sitä "JavaScriptiä, joka skaalautuu".) Kuten aiemmin mainittiin, Deno sisältää TypeScript-kääntäjän kuvan osana sen ajonaikaa. Jos välität Denolle TypeScript-tiedoston, se kääntää sen ensin JavaScriptiin ja sitten sen V8-moottorille.

Node.js: n suunnittelupuutteet

Dahlin mukaan, joka kuitenkin suunnitteli sekä Node.js: n että Denon, Node.js kärsii kolmesta suuresta suunnittelukysymyksestä:

  • huonosti suunniteltu moduulijärjestelmä, keskitetty jakelu;
  • paljon vanhoja sovellusliittymiä, joita on tuettava;
  • ja turvallisuuden puute.

Deno korjaa kaikki kolme ongelmaa.

Deno turvallinen toteutus

Tapa, jolla Deno parantaa Node.js-tietoturvaa, on yksinkertainen: Oletuksena Deno ei anna ohjelman käyttää levyä, verkkoa, aliprosesseja tai ympäristömuuttujia. Kun haluat sallia minkä tahansa näistä, voit valita komentorivilipun, joka voi olla esimerkiksi rakeinen kuin haluat --allow-read = / tmp tai --allow-net = google.com. Toinen Denon turvallisuusparannus on, että se kuolee aina kiinni jääneisiin virheisiin, toisin kuin Node.js, joka sallii suorituksen etenemisen kiinni jäämättömän virheen jälkeen, ja tuloksia ei ehkä voida ennustaa.

Deno-moduulit

Node.js: ssä lataat CommonJS-moduulit vaatia avainsana, ja ne kaikki, sekä tavalliset että kolmannet osapuolet, tulevat implisiittisesti osoitteesta npmjs.com. Denossa lataat ES-moduulit tuonti avainsana ja täsmennä URL-osoite. Esimerkiksi:

tuo * lokina osoitteesta "//deno.land/std/log/mod.ts";

Deno-moduuleja voidaan isännöidä missä tahansa - kolmansien osapuolten moduuleille ei ole keskitettyä arkistoa. Lisäksi moduulit tallennetaan aina välimuistiin ja käännetään paikallisesti, eikä niitä päivitetä, ellet nimenomaisesti pyydä päivitystä. Siksi sinun pitäisi pystyä ajamaan Deno-ohjelmia, jotka ovat jo kannettavalla tietokoneellasi, kunhan kaikki tuonti on ratkaistu kerran, vaikka olisit lentokoneessa, jossa ei ole yhteyttä.

Denolla on keskitetty kokoelma vakiona moduulit, joilla ei ole ulkoisia riippuvuuksia ja jotka Denon ydintiimi tarkistaa se asuu deno.land-palvelimella. Deno_std-moduulikokoelma on Go: n tavallisen kirjaston portti.

Kirjastomallin valinnan takana on pieni historia. Dahl kirjoitti protonsa Denosta pääasiassa Go-kielellä, mutta löysi mahdollisia ristiriitoja Go- ja V8-jätteiden keräilijöiden välillä. Hän ja hänen yhteistyökumppaninsa kirjoittivat sitten oikean Denon V8: n, Rustin ja Rustin asynkronisen I / O-paketin Tokion kanssa. He ottivat käyttöön Deno-standardikirjaston TypeScriptissä.

Tässä vaiheessa Deno on kohtuullinen ja hauska ympäristö, jota voidaan käyttää pienten yksityisten komentosarjaprojektien rakentamiseen TypeScriptissä. Dahlin mukaan Deno ei koskaan vaikuta todella Node.js: n menestykseen. Siitä huolimatta, kun Deno saavuttaa version 1.0, siitä voi hyvinkin tulla kannattava valinta suurempien projektien rakentamiseen.

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