JavaScript platformā Deno ir nodrošināta saderība ar NPM moduļiem.

Ir ieviests Deno 1.28 laidens, platforma atsevišķu aplikāciju izpildei JavaScript un TypeScript valodās, ko var izmantot servera darbības nodrošināšanai. Platformu attīsta Raijs Dahls (Ryan Dahl), Node.js radītājs. Tāpat kā Node.js, Deno izmanto JavaScript dzinēju V8, kas tiek izmantots arī Chromium balstītajos pārlūkos. Tomēr Deno nav Node.js atvasinājums, bet gan no nulles radīts jauns projekts. Projekta kods tiek izplatīts saskaņā ar MIT licenci. Izstrādes modeļi ir sagatavoti Linux, Windows un macOS operētājsistēmām.

Deno projekts tika radīts, lai lietotājiem nodrošinātu drošākus apstākļus un novērstu koncepcijas kļūdas, kas pieļautas Node.js arhitektūrā. Lai palielinātu drošību, apvalks ap V8 dzinēju ir rakstīts Rust valodā, kas ļauj izvairīties no daudzām ievainojamībām, kas rodas no zema līmeņa darbības ar atmiņu. Negaidošu pieprasījumu apstrādei tiek izmantota Tokio platforma, kas arī ir rakstīta Rust valodā. Tokio ļauj veidot augstas veiktspējas lietotnes, kas balstītas uz notikumu virzītu arhitektūru (Event-driven), atbalstot daudzprocesu un asinkronu tīkla pieprasījumu apstrādi.

Galvenā izmaiņa jaunajā laidienā ir saderības stabilizācija ar pakotnēm, kas izvietotas NPM krātuvē, kas ļauj Deno izmantot vairāk nekā 1.3 miljonus moduļu, kas izstrādāti Node.js platformai. Piemēram, Deno bāzētajās lietotnēs tagad var izmantot tādus moduļus kā Prisma, Mongoose un MySQL, lai nodrošinātu pastāvīgu datu piekļuvi, kā arī ietvarus, kas nodrošina frontend darbību, piemēram, React un Vue. Daži NPM moduļi joprojām paliek nesaderīgi ar Deno, piemēram, saistībā ar Node.js specifiskajām vides sastāvdaļām, piemēram, failu package.json. Tāpat pagaidām nav iespējams izmantot komandu „deno compile” ar NPM moduļiem. Nākamajos laidienos plānots novērst līdzīgas nesaderības un ierobežojumus.

Iepriekšējās Deno modelī balstītās ECMAScript moduļu sistēmas un Web API atbalsts ir saglabāts tajā pašā līmenī, kā arī NPM moduļu importam tiek izmantota ierastā Deno URL ielādes shēma. NPM moduļiem ir paredzēts īpašs URL-prefikss "npm:", kuru var izmantot analogi ikdienas Deno moduļiem. Piemēram, lai importētu NPM moduli, var norādīt ‘import { chalk } from "npm:chalk@5";’, bet, lai palaistu NPM skriptu no komandrindas — "deno run —allow-env —allow-read npm:create-vite-extra".

NPM iepakojumu izmantošana Deno ir daudz vienkāršāka nekā Node.js, jo nav nepieciešama moduļu iepriekšēja uzstādīšana (moduļi tiek uzstādīti pie pirmās lietojumprogrammas palaišanas), netiek izmantots package.json fails, kā arī pēc noklusējuma netiek izmantota katalogs node_modules (moduļi tiek kešoti kopējā katalogā, bet ir iespēja atgriezt iepriekšējo uzvedību ar opciju "—node-modules-dir").

NPM balstītajās lietojumprogrammās saglabājas iespēja izmantot Deno sniegtos piekļuves ierobežošanas, izolācijas un drošības uzlaboto iespēju mehānismus. Lai novērstu uzbrukumus caur aizdomīgiem atkarībām, Deno pēc noklusējuma bloķē visas mēģinājumus piekļūt sistēmai no atkarībām un izvada brīdinājumu par identificētām problēmām. Piemēram, mēģinot moduļa piekļūt rakstīšanai uz /usr/bin/, tiks izsniegts apstiprinājuma pieprasījums par šo darbību: deno run npm:install-malware ⚠️ ┌ Deno pieprasa rakstīšanas piekļuvi uz /usr/bin/. ├ Pieprasījusi `install-malware` ├ Palaidiet vēlreiz ar —allow-write, lai apietu šo uzvedni. └ Atļaut? [y/n] (y = jā, atļaut; n = nē, liegt) >

No NPM nesaistītajiem uzlabojumiem jaunajā versijā minēta V8 dzinēja atjaunināšana līdz versijai 10.9, automātiska bloku failu noteikšana, API stabilizācija Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() un Deno.uid(), jauna nestabilā API Deno.Command() pievienošana komandu izpildei (universāls aizstājējs Deno.spawn, Deno.spawnSync un Deno.spawnChild).

Galvenās Deno iezīmes:

  • Piemērošana drošībai pēc noklusējuma konfigurācijā. Piekļuve failiem, tīkla iespējām un vides mainīgajiem pēc noklusējuma ir bloķēta un prasa izteiktu apstiprinājumu. Pieteikumi pēc noklusējuma tiek palaisti izolētos sandbox vidēs un nevar piekļūt sistēmas iespējām bez izteikta pilnvarojuma;
  • Iebūvēta TypeScript atbalsts, papildus JavaScript. Tipu pārbaudei un JavaScript ģenerēšanai tiek izmantots standarts TypeScript kompilators, kas noved pie veiktspējas krituma salīdzinājumā ar JavaScript parsēšanu V8;
  • Deno tiek piedāvāts kā viena pašpietiekama izpildfaila forma («deno»). Lai palaistu lietotnes, izmantojot Deno, pietiek lejupielādēt vienu izpildfailu savai platformai, kura izmērs ir apmēram 30 MB un kurai nav ārēju atkarību un nav nepieciešama īpaša instalācija sistēmā. Turklāt deno nav monolīts lietojums, bet gan kolekcija crate pakotņu Rust valodā (deno_core, rusty_v8), kuras var izmantot atsevišķi;
  • Programmas palaišanai, kā arī moduļu lejupielādei var izmantot adresēšanu caur URL. Piemēram, lai palaistu programmu welcome.js, var izmantot komandu «deno https://deno.land/std/examples/welcome.js». Kods no ārējiem avotiem tiek lejupielādēts un kešots vietējā sistēmā, taču nekad automātiski netiek atjaunināts (lai atjauninātu, ir skaidri jāpalaid aplikācija ar frāzi «—reload»);
  • Efektīva HTTP tīkla pieprasījumu apstrāde, platforma ir paredzēta, lai izveidotu augstas veiktspējas tīkla lietojumprogrammas;
  • Iespēja izveidot vispārīgas tīmekļa lietojumprogrammas, kas var darboties gan Deno, gan parastajā tīmekļa pārlūkprogrammā;
  • Standarta moduļu komplekta pieejamība, kuru lietošana neprasa piesaisti ārējām atkarībām. Standarta kolekcijas moduļi ir izgājuši papildu auditu un saderības pārbaudi;
  • Papildus runtime platforma Deno arī pilda pakotņu pārvaldnieka lomu un ļauj iekš koda piekļūt moduļiem pa URL. Piemēram, lai lejupielādētu moduli, var norādīt kodā «import * as log from "https://deno.land/std/log/mod.ts". Faili, kas lejupielādēti no ārējiem serveriem pa URL, tiek kešoti. Versiju pieķeršana moduļiem tiek noteikta, norādot versiju numurus URL, piemēram, «https://unpkg.com/liltest@0.0.5/dist/liltest.js»;
  • Iekļauta atkarību inspekcijas sistēma (komanda «deno info») un kodu formatēšanas utilīta (deno fmt);
  • Visus aplikācijas skriptus var apvienot vienā JavaScript failā.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster