Platforma Deno JavaScript është e pajtueshme me modulet NPM

Deno 1.28 është lëshuar, një kornizë për sandboxing e aplikacioneve JavaScript dhe TypeScript që mund të përdoret për të krijuar mbajtës nga ana e serverit. Platforma është zhvilluar nga Ryan Dahl, krijuesi i Node.js. Ashtu si Node.js, Deno përdor motorin V8 JavaScript, i cili përdoret gjithashtu në shfletuesit e bazuar në Chromium. Në të njëjtën kohë, Deno nuk është një fork i Node.js, por është një projekt i ri i krijuar nga e para. Kodi i projektit shpërndahet nën licencën MIT. Ndërtesat janë përgatitur për Linux, Windows dhe macOS.

Projekti Deno u krijua për t'u ofruar përdoruesve një mjedis më të sigurt dhe për të eliminuar gabimet konceptuale në arkitekturën Node.js. Për të përmirësuar sigurinë, motori V8 është shkruar në Rust, i cili shmang shumë nga dobësitë që lindin nga manipulimi i memories në nivel të ulët. Për të përpunuar kërkesat në një modalitet jo-bllokues, përdoret platforma Tokio, e shkruar gjithashtu në Rust. Tokio ju lejon të krijoni aplikacione me performancë të lartë bazuar në arkitekturën e drejtuar nga ngjarjet, duke mbështetur kërkesat e rrjetit me shumë fije dhe përpunim në modalitetin asinkron.

Një ndryshim kryesor në versionin e ri është stabilizimi i përputhshmërisë me paketat e vendosura në depon e NPM, gjë që lejon Deno të përdorë më shumë se 1.3 milion module të krijuara për platformën Node.js. Për shembull, aplikacionet e bazuara në Deno tani mund të përdorin module të aksesit të vazhdueshëm të të dhënave si Prisma, Mongoose dhe MySQL, si dhe korniza të përparme si React dhe Vue. Disa module NPM mbeten ende të papajtueshme me Deno, për shembull për shkak të lidhjeve me elementët e mjedisit specifik të Node.js si skedari package.json. Gjithashtu nuk është ende e mundur të përdoret komanda "deno compile" me modulet NPM. Publikimet e ardhshme planifikojnë të adresojnë këto papajtueshmëri dhe kufizime.

Mbështetja për sistemin e modulit ECMAScript të përdorur më parë nga Deno dhe modelin Web API ruhet në të njëjtin nivel dhe skema e njohur e ngarkimit të bazuar në URL të Deno përdoret për të importuar module NPM. Për të hyrë në modulet NPM, ekziston një prefiks i veçantë URL "npm:", i cili mund të përdoret në të njëjtën mënyrë si modulet e rregullta Deno. Për shembull, për të importuar një modul NPM, mund të specifikoni 'import { chalk } nga "npm:chalk@5";', dhe për të ekzekutuar një skript NPM nga linja e komandës - "deno run --allow-env --allow -lexo npm:create- vite-extra.”

Përdorimi i paketave NPM në Deno është shumë më i lehtë sesa në Node.js, pasi nuk ka nevojë të instaloni paraprakisht module (modulet instalohen kur aplikacioni hapet për herë të parë), nuk ka skedar package.json dhe nuk ka node_modules të paracaktuar direktoriumi (modulet ruhen në memorien e fshehtë në drejtorinë e përbashkët, por është e mundur të ktheni sjelljen e vjetër duke përdorur opsionin "--node-modules-dir").

Aplikacionet e bazuara në NPM ruajnë aftësinë për të përdorur kontrollin e aksesit, izolimin dhe aftësitë e avancuara të ndjeshme ndaj sigurisë së Deno. Për të kundërshtuar sulmet përmes varësive të dyshimta, Deno bllokon si parazgjedhje të gjitha përpjekjet për të fituar akses në sistem nga varësitë dhe shfaq një paralajmërim për problemet e zbuluara. Për shembull, kur një modul përpiqet të fitojë akses shkrimi në /usr/bin/, do të shfaqet një kërkesë konfirmimi për këtë operacion: deno run npm:install-malware ⚠️ ┌ Deno kërkon qasje shkrimi në /usr/bin/. ├ Kërkohet nga "install-malware" ├ Ekzekutoni përsëri me --allow-write për të anashkaluar këtë kërkesë. └ Lejo? [y/n] (y = po, lejo; n = jo, moho) >

Përmirësimet jo-NPM në versionin e ri përfshijnë përditësimin e motorit V8 për lëshimin e 10.9, zbulimin automatik të skedarëve me kyçje, stabilizimin e Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() dhe Deno API. .uid(), duke shtuar API të re të paqëndrueshme Deno.Command() për ekzekutimin e komandave (zëvendësim universal për Deno.spawn, Deno.spawnSync dhe Deno.spawnChild).

Karakteristikat kryesore të Deno:

  • Konfigurimi i paracaktuar i orientuar nga siguria. Qasja në skedar, rrjetëzimi dhe qasja në variablat e mjedisit janë çaktivizuar si parazgjedhje dhe duhet të aktivizohen në mënyrë eksplicite. Aplikacionet si parazgjedhje ekzekutohen në mjedise të izoluara sandbox dhe nuk mund të qasen në aftësitë e sistemit pa dhënë leje të qarta;
  • Mbështetje e integruar për TypeScript përtej JavaScript. Për kontrollin e tipit dhe gjenerimin e JavaScript, përdoret përpiluesi standard TypeScript, i cili çon në një rënie të performancës në krahasim me analizimin e JavaScript në V8;
  • Runtime vjen në formën e një skedari të vetëm të ekzekutueshëm ("deno"). Për të ekzekutuar aplikacionet duke përdorur Deno, ju vetëm duhet të shkarkoni një skedar të ekzekutueshëm për platformën tuaj, me madhësi rreth 30 MB, i cili nuk ka varësi të jashtme dhe nuk kërkon ndonjë instalim të veçantë në sistem. Për më tepër, deno nuk është një aplikacion monolit, por është një koleksion i paketave Rust crate (deno_core, rusty_v8), të cilat mund të përdoren veçmas;
  • Kur filloni programin, si dhe për të ngarkuar module, mund të përdorni adresimin e URL-së. Për shembull, për të ekzekutuar programin Welcome.js, mund të përdorni komandën "deno https://deno.land/std/examples/welcome.js". Kodi nga burimet e jashtme shkarkohet dhe ruhet në memorie në sistemin lokal, por nuk përditësohet kurrë automatikisht (përditësimi kërkon ekzekutimin në mënyrë eksplicite të aplikacionit me flamurin "--reload");
  • Përpunimi efikas i kërkesave të rrjetit nëpërmjet HTTP në aplikacione; platforma është projektuar për krijimin e aplikacioneve të rrjetit me performancë të lartë;
  • Aftësia për të krijuar aplikacione universale në internet që mund të ekzekutohen si në Deno ashtu edhe në një shfletues të rregullt në internet;
  • Prania e një grupi standard modulesh, përdorimi i të cilave nuk kërkon lidhje me varësitë e jashtme. Modulet nga koleksioni standard i janë nënshtruar auditimit shtesë dhe testimit të përputhshmërisë;
  • Përveç kohës së funksionimit, platforma Deno vepron gjithashtu si menaxher i paketave dhe ju lejon të aksesoni modulet me URL brenda kodit. Për shembull, për të ngarkuar një modul, mund të specifikoni në kodin "import * si regjistër nga "https://deno.land/std/log/mod.ts". Skedarët e shkarkuar nga serverët e jashtëm nëpërmjet URL-së ruhen në memorie të fshehtë. Lidhja me versionet e modulit përcaktohet duke specifikuar numrat e versionit brenda URL-së, për shembull, "https://unpkg.com/[email mbrojtur]/dist/liltest.js";
  • Struktura përfshin një sistem të integruar të inspektimit të varësisë (komandën "deno info") dhe një mjet për formatimin e kodit (deno fmt);
  • Të gjithë skriptet e aplikacionit mund të kombinohen në një skedar JavaScript.

Burimi: opennet.ru

Shto një koment