Programmēšana

Kas ir Deno? ‘Labāks’ Node.js

Ja jums patīk Node.js, bet ne tā pakotņu pārvaldnieka npm, vai vēlaties drošāku JavaScript izpildlaika vidi nekā Node.js, iespējams, atradīsit jauno interesējošo atvērtā koda projektu Deno (vārds Deno ir mezgla anagramma). No otras puses, ja ražošanā izmantojat Node.js, šeit nekas nav redzams, pārvietojieties - Deno joprojām ir "ļoti izstrādes stadijā".

Deno ir programma JavaScript un TypeScript koda palaišanai ārpus pārlūka. Tās ir jaunākās pūles, kuras vadīja Raiens Dāls, kurš 2009. gadā nodibināja projektu Node.js, un tas ir mēģinājums pārdomāt Node.js, ņemot vērā JavaScript sasniegumus kopš 2009. gada, ieskaitot TypeScript kompilatoru. Tāpat kā Node.js, arī Deno ir čaula ap Google V8 JavaScript dzinēju, kaut arī atšķirībā no Node.js tā izpildāmajā attēlā ir iekļauts TypeScript kompilators.

Deno un uzlabots JavaScript

2009. gadā JavaScript trūka vairākas funkcijas, kas būtu noderējušas Node.js, uzskata Dāls. Daži no tiem gadu gaitā ir pievienoti JavaScript kā daļa no ECMAScript (ES) standarta, un TypeScript ir uzrunājis vēl dažus.

JavaScript ir notikumi un atzvanīšana būtībā uz visiem laikiem, taču tie var novest pie diezgan sarežģīta koda, it īpaši, ja vēlaties izveidot ķēdes asinhronas darbības. Solījumi padariet sintaksi mazliet lasāmāku. A apsolīt ir atgriezts objekts, kas apzīmē asinhronas darbības iespējamu pabeigšanu vai neveiksmi, kurai varat pievienot atzvanus, nevis atzvanīšanas nodošanu funkcijai. Funkcijas deklarēšana asinhronais vēl vairāk vienkāršo sintaksi, ļaujot jums izmantot gaidi funkcijas ietvaros pauze, kas nav bloķējoša, līdz solījums tiek izpildīts.

Kad tika izveidots Node.js, de facto JavaScript moduļu standarts bija CommonJS, ko atbalsta npm. Kopš tā laika ECMAScript komiteja oficiāli svētīja citu standartu - ES moduļus, ko arī atbalsta jspm. Deno atbalsta ES moduļus.

Ierakstītie masīvi ir ES6 API bināro datu apstrādei, kaut ko Node.js varēja izmantot; bināro datu atbalsta trūkums izraisīja dažas Node.js dizaina problēmas. Deno izmanto drukātus masīvus, kad nepieciešams manipulēt ar neapstrādātiem bināriem datiem. Node.js tagad atbalsta ierakstītus masīvus lietotāja kodam.

TypeScript ir tipizēts JavaScript kopums, kas tiek apkopots vienkāršā JavaScript valodā (ES3 vai jaunāks; to var konfigurēt). TypeScript pievieno JavaScript izvēles veidus, klases un moduļus un atbalsta rīkus liela mēroga JavaScript lietojumprogrammām. (Anderss Hejlsbergs to sauc par “JavaScript, kas mērogo”.) Kā jau minēts iepriekš, Deno izpildlaika laikā satur TypeScript kompilatora attēlu. Ja jūs nodosiet Deno TypeScript failu, tas vispirms to kompilēs JavaScript un pēc tam pārsūtīs to V8 motoram.

Node.js dizaina nepilnības

Pēc Dāla teiktā, kurš galu galā veidoja gan Node.js, gan Deno, Node.js cieš no trim galvenajiem dizaina jautājumiem:

  • slikti izstrādāta moduļu sistēma ar centralizētu izplatīšanu;
  • daudz mantotu API, kas jāatbalsta;
  • un drošības trūkums.

Deno novērš visas trīs problēmas.

Deno droša izpilde

Tas, kā Deno uzlabo Node.js drošību, ir vienkāršs: Pēc noklusējuma Deno neļaus programmai piekļūt diskam, tīklam, apakšprocesiem vai vides mainīgajiem. Ja jums ir jāatļauj kāds no šiem, varat izvēlēties komandrindas karodziņu, kas var būt tik detalizēts, cik vēlaties, piemēram, - ļaut lasīt = / tmp vai --allow-net = google.com. Vēl viens Deno drošības uzlabojums ir tāds, ka tas vienmēr mirst no nenotvertām kļūdām, atšķirībā no Node.js, kas ļaus izpildi turpināt pēc nenotvertas kļūdas, un rezultāti var nebūt paredzami.

Deno moduļi

Vietnē Node.js jūs ielādējat CommonJS moduļus, izmantojot pieprasīt atslēgvārds, un tie visi - gan standarta, gan trešās puses - netieši nāk no vietnes npmjs.com. Deno jūs ielādējat ES moduļus, izmantojot importēt atslēgvārdu un skaidri norādiet URL. Piemēram:

importēt * kā žurnālu no "//deno.land/std/log/mod.ts";

Deno moduļus var mitināt jebkur - trešās puses moduļiem nav centralizētas krātuves. Turklāt moduļi vienmēr tiek saglabāti kešatmiņā un kompilēti lokāli, un tie netiek atjaunināti, ja vien neprasāt atsvaidzināšanu. Tāpēc jums vajadzētu būt iespējai palaist Deno programmas, kas jau ir jūsu klēpjdatorā, ja vien visi importēšanas gadījumi ir atrisināti vienreiz, pat ja atrodaties lidmašīnā, kurai nav savienojuma.

Deno patiešām ir centralizēta kolekcija standarta moduļi, kuriem nav ārēju atkarību un kurus pārskata Deno galvenā komanda; tas dzīvo uz deno.land servera. Deno_std moduļu kolekcija ir brīvs Go standarta bibliotēkas ports.

Šīs bibliotēkas modeļa izvēles pamatā ir neliela vēsture. Dāls savu Deno prototipu rakstīja galvenokārt Go valodā, taču atklāja potenciālus konfliktus starp atkritumu savācējiem Go un V8. Pēc tam viņš un viņa līdzstrādnieki pārrakstīja pareizo Deno ar V8, Rust un Rust asinhrono I / O paketi Tokio. Viņi ieviesa Deno standarta bibliotēku TypeScript.

Šajā brīdī Deno ir saprātīga un jautra vide, ko izmantot nelielu privātu skriptu projektu veidošanai TypeScript. Pēc Dāla teiktā, Deno nekad īsti neietekmēs Node.js panākumus. Neskatoties uz to, tiklīdz Deno būs sasniedzis 1.0 versiju, tas var kļūt par reālu izvēli lielāku projektu veidošanai.

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