Deno JavaScript platforma ir saderīga ar NPM moduļiem

Ir izlaists Deno 1.28 — ietvars JavaScript un TypeScript lietojumprogrammu smilškastes izveidei, ko var izmantot, lai izveidotu servera puses apdarinātājus. Platformu izstrādā Raiens Dāls, Node.js radītājs. Tāpat kā Node.js, Deno izmanto V8 JavaScript dzinēju, kas tiek izmantots arī pārlūkprogrammās, kuru pamatā ir Chromium. Tajā pašā laikā Deno nav Node.js dakša, bet gan jauns projekts, kas izveidots no nulles. Projekta kods tiek izplatīts saskaņā ar MIT licenci. Build ir sagatavoti operētājsistēmām Linux, Windows un macOS.

Deno projekts tika izveidots, lai nodrošinātu lietotājiem drošāku vidi un novērstu konceptuālās kļūdas Node.js arhitektūrā. Lai uzlabotu drošību, V8 dzinējs ir rakstīts Rust, kas ļauj izvairīties no daudzām ievainojamībām, kas rodas no zema līmeņa atmiņas manipulācijām. Lai apstrādātu pieprasījumus nebloķējošā režīmā, tiek izmantota Tokio platforma, kas rakstīta arī Rust valodā. Tokio ļauj jums izveidot augstas veiktspējas lietojumprogrammas, kuru pamatā ir notikumu vadīta arhitektūra, atbalstot vairāku vītņu veidošanu un apstrādājot tīkla pieprasījumus asinhronā režīmā.

Galvenās izmaiņas jaunajā laidienā ir saderības stabilizēšana ar NPM repozitorijā mitinātajām pakotnēm, kas ļauj Deno izmantot vairāk nekā 1.3 miljonus Node.js platformai izveidoto moduļu. Piemēram, uz Deno balstītās lietojumprogrammas tagad var izmantot pastāvīgus datu piekļuves moduļus, piemēram, Prisma, Mongoose un MySQL, kā arī priekšgala ietvarus, piemēram, React un Vue. Daži NPM moduļi joprojām ir nesaderīgi ar Deno, piemēram, saistīšanas ar Node.js specifiskiem vides elementiem, piemēram, faila package.json dēļ. Tāpat vēl nav iespējams izmantot komandu "deno compile" ar NPM moduļiem. Nākotnes izlaidumos ir paredzēts novērst šīs nesaderības un ierobežojumus.

Atbalsts Deno iepriekš izmantotajai ECMAScript moduļu sistēmai un Web API modelim tiek saglabāts tajā pašā līmenī, un Deno pazīstamā URL ielādes shēma tiek izmantota NPM moduļu importēšanai. Lai piekļūtu NPM moduļiem, ir īpašs URL prefikss “npm:”, ko var izmantot tāpat kā parastos Deno moduļus. Piemēram, lai importētu NPM moduli, varat norādīt 'import { chalk } no "npm:chalk@5";' un palaist NPM skriptu no komandrindas - "deno run --allow-env --allow -lasīt npm:create- vite-extra.

NPM pakotņu izmantošana programmā Deno ir daudz vienkāršāka nekā Node.js, jo nav nepieciešams iepriekš instalēt moduļus (moduļi tiek instalēti, pirmo reizi palaižot programmu), nav faila package.json un nav noklusējuma node_modules. direktorijā (moduļi tiek saglabāti kešatmiņā koplietotajā direktorijā, taču ir iespējams atgriezt veco uzvedību, izmantojot opciju “--node-modules-dir”).

Uz NPM balstītas lietojumprogrammas saglabā iespēju izmantot Deno piekļuves kontroles, izolācijas un drošības jutīgas uzlabotās iespējas. Lai cīnītos pret uzbrukumiem apšaubāmu atkarību dēļ, Deno pēc noklusējuma bloķē visus mēģinājumus piekļūt sistēmai no atkarībām un parāda brīdinājumu par atklātajām problēmām. Piemēram, kad modulis mēģina iegūt rakstīšanas piekļuvi /usr/bin/, tiks parādīts šīs darbības apstiprinājuma pieprasījums: deno palaist npm:install-malware ⚠️ ┌ Deno pieprasa rakstīšanas piekļuvi /usr/bin/. ├ Pieprasīja `install-malware`. ├ Palaidiet vēlreiz ar --allow-write, lai apietu šo uzvedni. └ Atļaut? [y/n] (y = jā, atļaut; n = nē, noliegt) >

Ne-NPM uzlabojumi jaunajā versijā ietver V8 dzinēja atjaunināšanu, lai atbrīvotu versiju 10.9, automātisku failu noteikšanu ar bloķēšanu, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() stabilizāciju. un Deno API. .uid(), pievienojot jaunu nestabilu API Deno.Command() komandu palaišanai (universāls Deno.spawn, Deno.spawnSync un Deno.spawnChild aizstājējs).

Galvenās Deno iezīmes:

  • Uz drošību orientēta noklusējuma konfigurācija. Piekļuve failiem, tīklošana un piekļuve vides mainīgajiem pēc noklusējuma ir atspējota, un tie ir skaidri jāiespējo. Lietojumprogrammas pēc noklusējuma darbojas izolētās smilškastes vidēs un nevar piekļūt sistēmas iespējām, nepiešķirot nepārprotamas atļaujas;
  • Iebūvēts TypeScript atbalsts ārpus JavaScript. Tipa pārbaudei un JavaScript ģenerēšanai tiek izmantots standarta TypeScript kompilators, kas noved pie veiktspējas krituma salīdzinājumā ar JavaScript parsēšanu V8;
  • Izpildlaiks tiek nodrošināts viena atsevišķa izpildāmā faila (“deno”) formā. Lai palaistu lietojumprogrammas, izmantojot Deno, jums vienkārši jālejupielādē viens izpildāmais fails savai platformai, apmēram 30 MB, kuram nav ārēju atkarību un nav nepieciešama īpaša instalēšana sistēmā. Turklāt deno nav monolīta lietojumprogramma, bet gan Rust crate pakotņu kolekcija (deno_core, rusty_v8), ko var izmantot atsevišķi;
  • Startējot programmu, kā arī lai ielādētu moduļus, var izmantot URL adresēšanu. Piemēram, lai palaistu programmu welcome.js, varat izmantot komandu “deno https://deno.land/std/examples/welcome.js”. Kods no ārējiem resursiem tiek lejupielādēts un saglabāts lokālajā sistēmā kešatmiņā, taču tas nekad netiek automātiski atjaunināts (atjaunināšanai ir skaidri jāpalaiž lietojumprogramma ar karogu “--reload”);
  • Efektīva tīkla pieprasījumu apstrāde, izmantojot HTTP lietojumprogrammās; platforma ir paredzēta augstas veiktspējas tīkla lietojumprogrammu izveidei;
  • Iespēja izveidot universālas tīmekļa lietojumprogrammas, kuras var izpildīt gan Deno, gan parastā tīmekļa pārlūkprogrammā;
  • Standarta moduļu komplekta klātbūtne, kuras izmantošanai nav nepieciešama saistīšanās ar ārējām atkarībām. Standarta kolekcijas moduļiem ir veikta papildu audita un saderības pārbaude;
  • Papildus izpildlaikam Deno platforma darbojas arī kā pakotņu pārvaldnieks un ļauj piekļūt moduļiem pēc koda URL. Piemēram, lai ielādētu moduli, kodā var norādīt “import * as log no “https://deno.land/std/log/mod.ts”. Faili, kas lejupielādēti no ārējiem serveriem, izmantojot URL, tiek saglabāti kešatmiņā. Saistīšana ar moduļa versijām tiek noteikta, vietrādī URL norādot versiju numurus, piemēram, “https://unpkg.com/[e-pasts aizsargāts]/dist/liltest.js";
  • Struktūra ietver integrētu atkarības pārbaudes sistēmu (komanda "deno info") un utilītu koda formatēšanai (deno fmt);
  • Visus lietojumprogrammu skriptus var apvienot vienā JavaScript failā.

Avots: opennet.ru

Pievieno komentāru