Deno JavaScript plataforma NPM moduluekin bateragarria da

Deno 1.28, JavaScript eta TypeScript aplikazioak modu independentean exekutatzeko plataforma bat, zerbitzariaren aldeko kudeatzaileak sortzeko erabil daitekeena, kaleratu da. Plataforma Ryan Dahlek garatzen ari da, Node.js-ren sortzaileak. Node.js bezala, Denok V8 JavaScript motorra erabiltzen du, Chromium-en oinarritutako arakatzaileetan ere erabiltzen dena. Hala ere, Deno ez da Node.js-ren fork bat, hutsetik eraikitako proiektu berri bat baizik. Proiektuaren kodea MIT lizentziapean banatzen da. Eraikuntzak prestatuta daude... Linux, Windows и macOS.

Deno proiektua erabiltzaileei ingurune seguruagoa eskaintzeko eta Node.js arkitekturako akats kontzeptualak ezabatzeko sortu zen. Segurtasuna hobetzeko, V8 motorra Rust-en idatzita dago, eta horrek maila baxuko memoriaren manipulaziotik sortzen diren ahultasun asko saihesten ditu. Eskaerak blokeorik gabeko moduan prozesatzeko, Rust-ez idatzitako Tokio plataforma erabiltzen da. Tokiok errendimendu handiko aplikazioak sortzeko aukera ematen du, gertaerak gidatutako arkitekturan oinarrituta, hari anitzeko hariekin eta sare-eskaerak modu asinkronoan prozesatzeko.

Oharra berriaren funtsezko aldaketa bat NPM biltegian ostatatutako paketeekin bateragarritasuna egonkortzea da, eta horri esker, Denok Node.js plataformarako sortutako 1.3 milioi modulu baino gehiago erabil ditzake. Esate baterako, Deno-n oinarritutako aplikazioek orain Prisma, Mongoose eta MySQL bezalako datu-sarbide iraunkorrak erabil ditzakete, baita React eta Vue bezalako frontend-esparruak ere. NPM modulu batzuk Denorekin bateraezinak izaten jarraitzen dute, adibidez, Node.js-en ingurune espezifikoko elementuekin lotzen direlako, hala nola package.json fitxategia. Oraindik ezin da "deno compile" komandoa erabili NPM moduluekin. Etorkizuneko bertsioek bateraezintasun eta muga horiei aurre egiteko asmoa dute.

Lehen erabilitako Denoren ECMAScript modulu sistemaren eta Web API ereduaren euskarria maila berean mantentzen da, eta Denoren URLetan oinarritutako karga-eskema ezaguna erabiltzen da NPM moduluak inportatzeko. NPM moduluetara sartzeko, "npm:" URL aurrizki berezi bat dago, Deno modulu arrunten modu berean erabil daitekeena. Adibidez, NPM modulu bat inportatzeko, 'inportatu { chalk } "npm:chalk@5"-tik zehaztu dezakezu, eta NPM script bat komando-lerrotik exekutatzeko - "deno run --allow-env --allow -read npm:create- vite-extra.”

Deno-n NPM paketeak erabiltzea Node.js-en baino askoz errazagoa da, ez baitago moduluak aurrez instalatu beharrik (aplikazioa lehen aldiz abiarazten denean moduluak instalatzen dira), ez dago package.json fitxategirik eta ez dago node_modules lehenetsirik. direktorioa (moduluak direktorio partekatuan gordetzen dira, baina posible da portaera zaharra itzultzea "--node-modules-dir" aukera erabiliz).

NPMn oinarritutako aplikazioek Denoren sarbide-kontrola, isolamendua eta segurtasunarekiko sentikorrak diren gaitasun aurreratuak erabiltzeko gaitasuna mantentzen dute. Mendekotasun zalantzazkoen bidez erasoei aurre egiteko, Denok berez blokeatzen ditu mendekotasunetatik sistemara sartzeko saiakera guztiak eta detektatu diren arazoei buruzko abisua erakusten du. Adibidez, modulu bat /usr/bin/-ra idazteko sarbidea lortzen saiatzen denean, eragiketa honen berrespen-eskaera bat bistaratuko da: deno run npm:install-malware ⚠️ ┌ Deno-k /usr/bin/-ra idazteko sarbidea eskatzen du. ├ `install-malware`-k eskatuta ├ Exekutatu berriro --allow-write gonbita hau saihesteko. └ Baimendu? [y/n] (y = bai, onartu; n = ez, ukatu) >

Bertsio berrian NPM-ak ez diren hobekuntzak, besteak beste, V8 motorra eguneratzea 10.9 askatzeko, blokeoak dituzten fitxategiak automatikoki hautematea, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() egonkortzea. eta Deno APIak .uid(), komandoak exekutatzeko Deno.Command() API ezegonkor berriak gehituz (Deno.spawn, Deno.spawnSync eta Deno.spawnChild-en ordezkapen unibertsala).

Denoren ezaugarri nagusiak:

  • Segurtasunera bideratutako konfigurazio lehenetsia. Fitxategien sarbidea, sareak eta ingurune-aldagaietarako sarbidea lehenespenez desgaituta daude eta esplizituki gaituta egon behar dute. Aplikazioak lehenespenez sandbox ingurune isolatuetan exekutatzen dira eta ezin dira sistemaren gaitasunetara sartu baimen esplizituak eman gabe;
  • JavaScript-etik haratago TypeScript-erako laguntza integratua. Motak egiaztatzeko eta JavaScript sortzeko, TypeScript konpiladore estandarra erabiltzen da, eta horrek errendimenduaren jaitsiera dakar V8-n JavaScript analizatzearekin alderatuta;
  • Exekuzio-denbora fitxategi exekutagarri autonomo bakar baten moduan dator ("deno"). Deno erabiliz aplikazioak exekutatzeko, zure plataformarako fitxategi exekutagarri bat deskargatu besterik ez duzu behar, 30 MB ingurukoa, kanpoko menpekotasunik ez duena eta sisteman instalazio berezirik behar ez duena. Gainera, deno ez da aplikazio monolitiko bat, Rust crate paketeen bilduma bat da (deno_core, rusty_v8), bereizita erabil daitekeena;
  • Programa abiaraztean, baita moduluak kargatzeko ere, URL helbidea erabil dezakezu. Adibidez, welcome.js programa exekutatzeko, "deno https://deno.land/std/examples/welcome.js" komandoa erabil dezakezu. Kanpoko baliabideen kodea deskargatu eta cachean gordetzen da sistema lokalean, baina ez da inoiz automatikoki eguneratzen (eguneratzeko, aplikazioa esplizituki exekutatu behar da "--reload" markarekin);
  • Aplikazioetan HTTP bidez sareko eskaeren tratamendu eraginkorra; plataforma errendimendu handiko sareko aplikazioak sortzeko diseinatuta dago;
  • Denon zein ohiko web arakatzaile batean exekuta daitezkeen web aplikazio unibertsalak sortzeko gaitasuna;
  • Modulu multzo estandar baten presentzia, eta horien erabilerak ez du kanpoko menpekotasunekin lotzea eskatzen. Bilduma estandarreko moduluek auditoretza eta bateragarritasun proba osagarriak egin dituzte;
  • Exekuzio-denboraz gain, Deno plataformak pakete-kudeatzaile gisa ere funtzionatzen du eta zure kodearen barruko URL bidez moduluetara sartzeko aukera ematen dizu. Adibidez, modulu bat kargatzeko, "import * as log from "https://deno.land/std/log/mod.ts" zehaztu dezakezu zure kodean. Kanpoko fitxategietatik kargatutako fitxategiak zerbitzariak URL bidez, cachean gordeta. Moduluen bertsioetarako estekak URLaren barruan bertsio-zenbakiak zehaztuz zehazten dira, adibidez, "https://unpkg.com/liltest@0.0.5/dist/liltest.js";
  • Egiturak mendekotasun-ikuskapen sistema integratua («deno info» komandoa) eta kodea formateatzeko utilitate bat (deno fmt) barne hartzen ditu;
  • Aplikazio-script guztiak JavaScript fitxategi batean konbina daitezke.

Iturria: opennet.ru

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster