Deno JavaScript Platform issa hija kompatibbli mal-moduli NPM

Ġie rilaxxat Deno 1.28, qafas għall-applikazzjonijiet sandboxing JavaScript u TypeScript li jistgħu jintużaw biex jinħolqu handlers fuq is-server. Il-pjattaforma hija żviluppata minn Ryan Dahl, il-kreatur ta 'Node.js. Bħal Node.js, Deno juża l-magna JavaScript V8, li tintuża wkoll fil-browsers ibbażati fuq il-Kromju. Fl-istess ħin, Deno mhuwiex furketta ta 'Node.js, iżda huwa proġett ġdid maħluq mill-bidu. Il-kodiċi tal-proġett huwa mqassam taħt il-liċenzja MIT. Il-bini huma ppreparati għal Linux, Windows u macOS.

Il-proġett Deno inħoloq biex jipprovdi lill-utenti b'ambjent aktar sigur u jelimina żbalji kunċettwali fl-arkitettura Node.js. Biex tittejjeb is-sigurtà, il-magna V8 hija miktuba b'Rut, li tevita ħafna mill-vulnerabbiltajiet li jirriżultaw minn manipulazzjoni ta 'memorja ta' livell baxx. Biex tipproċessa t-talbiet f'mod li ma jimblokkax, tintuża l-pjattaforma Tokio, miktuba wkoll b'Rut. Tokio jippermettilek toħloq applikazzjonijiet ta 'prestazzjoni għolja bbażati fuq arkitettura mmexxija mill-avvenimenti, li tappoġġja talbiet ta' netwerk multi-threading u proċessar f'modalità asinkronika.

Bidla ewlenija fir-rilaxx il-ġdid hija l-istabbilizzazzjoni tal-kompatibilità ma 'pakketti ospitati fir-repożitorju tal-NPM, li tippermetti lil Deno juża aktar minn 1.3 miljun modulu maħluqa għall-pjattaforma Node.js. Pereżempju, l-applikazzjonijiet ibbażati fuq Deno issa jistgħu jużaw moduli persistenti ta 'aċċess għad-dejta bħal Prisma, Mongoose u MySQL, kif ukoll oqfsa front-end bħal React u Vue. Xi moduli NPM għadhom inkompatibbli ma 'Deno, pereżempju minħabba rbit ma' elementi tal-ambjent speċifiċi għal Node.js bħall-fajl package.json. Għadu mhux possibbli wkoll li tuża l-kmand "deno compile" b'moduli NPM. Ir-rilaxxi futuri jippjanaw li jindirizzaw dawn l-inkompatibbiltajiet u l-limitazzjonijiet.

L-appoġġ għas-sistema tal-modulu ECMAScript użata qabel ta 'Deno u l-mudell tal-Web API jinżammu fl-istess livell, u l-iskema ta' tagħbija bbażata fuq l-URL familjari ta 'Deno tintuża biex timporta moduli NPM. Biex taċċessa moduli NPM, hemm prefiss URL speċjali "npm:", li jista 'jintuża bl-istess mod bħall-moduli Deno regolari. Pereżempju, biex timporta modulu NPM, tista' tispeċifika 'import { chalk } minn "npm:chalk@5";', u biex tmexxi script NPM mil-linja tal-kmand - "deno run --allow-env --allow -read npm:create- vite-extra.”

L-użu ta' pakketti NPM f'Deno huwa ħafna aktar faċli milli f'Node.js, peress li m'hemmx bżonn li jiġu installati minn qabel il-moduli (il-moduli jiġu installati meta l-applikazzjoni titnieda għall-ewwel darba), m'hemm l-ebda fajl package.json, u m'hemm l-ebda node_modules default. direttorju (il-moduli huma miżmuma fil-cache f'direttorju kondiviż, iżda huwa possibbli li tirritorna l-imġieba l-antika billi tuża l-għażla "--node-modules-dir").

L-applikazzjonijiet ibbażati fuq NPM iżommu l-abbiltà li jużaw il-kontroll tal-aċċess, l-iżolament u l-kapaċitajiet avvanzati sensittivi għas-sigurtà ta 'Deno. Biex jiġġieled attakki permezz ta 'dipendenzi dubjużi, Deno jimblokka awtomatikament kull tentattiv biex jikseb aċċess għas-sistema minn dipendenzi u juri twissija dwar problemi skoperti. Pereżempju, meta modulu jipprova jikseb aċċess għall-kitba għal /usr/bin/, se tintwera talba ta' konferma għal din l-operazzjoni: deno run npm:install-malware ⚠️ ┌ Deno jitlob aċċess għall-kitba għal /usr/bin/. ├ Mitlub minn `install-malware` ├ Erġa' ħaddem b'--allow-write biex tevita dan il-pront. └ Ħalli? [y/n] (y = iva, ippermetti; n = le, iċħad) >

Titjib mhux NPM fil-verżjoni l-ġdida jinkludi l-aġġornament tal-magna V8 biex tirrilaxxa 10.9, skoperta awtomatika ta 'fajls b'serraturi, stabbilizzazzjoni tad-Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() u Deno APIs. .uid(), li żżid API instabbli ġdida Deno.Command() għat-tmexxija tal-kmandi (sostituzzjoni universali għal Deno.spawn, Deno.spawnSync u Deno.spawnChild).

Karatteristiċi ewlenin ta 'Deno:

  • Konfigurazzjoni default orjentata lejn is-sigurtà. L-aċċess għall-fajls, in-netwerking, u l-aċċess għall-varjabbli ambjentali huma diżattivati ​​b'mod awtomatiku u għandhom ikunu attivati ​​b'mod espliċitu. L-applikazzjonijiet awtomatikament jaħdmu f'ambjenti sandbox iżolati u ma jistgħux jaċċessaw il-kapaċitajiet tas-sistema mingħajr ma jagħtu permessi espliċiti;
  • Appoġġ integrat għal TypeScript lil hinn minn JavaScript. Għall-iċċekkjar tat-tip u l-ġenerazzjoni tal-JavaScript, jintuża l-kompilatur standard TypeScript, li jwassal għal tnaqqis fil-prestazzjoni meta mqabbel mal-parsing JavaScript f'V8;
  • Il-ħin tar-runtime jiġi fil-forma ta’ fajl eżekutibbli waħdu wieħed (“deno”). Biex tħaddem applikazzjonijiet bl-użu ta 'Deno, għandek bżonn biss tniżżel fajl eżekutibbli wieħed għall-pjattaforma tiegħek, madwar 30 MB fid-daqs, li m'għandux dipendenzi esterni u ma jeħtieġ ebda installazzjoni speċjali fuq is-sistema. Barra minn hekk, deno mhix applikazzjoni monolitika, iżda hija ġabra ta 'pakketti ta' ċestuni Rust (deno_core, rusty_v8), li jistgħu jintużaw separatament;
  • Meta tibda l-programm, kif ukoll għat-tagħbija tal-moduli, tista 'tuża l-indirizzar tal-URL. Pereżempju, biex tmexxi l-programm welcome.js, tista 'tuża l-kmand "deno https://deno.land/std/examples/welcome.js". Il-kodiċi minn riżorsi esterni jitniżżlu u jinżammu fil-cache fis-sistema lokali, iżda qatt ma jiġi aġġornat awtomatikament (l-aġġornament jeħtieġ li l-applikazzjoni titħaddem b'mod espliċitu bil-marka "--reload");
  • Ipproċessar effiċjenti ta 'talbiet tan-netwerk permezz ta' HTTP fl-applikazzjonijiet; il-pjattaforma hija mfassla biex toħloq applikazzjonijiet ta 'netwerk ta' prestazzjoni għolja;
  • Il-ħila li toħloq applikazzjonijiet web universali li jistgħu jiġu eżegwiti kemm f'Deno kif ukoll f'web browser regolari;
  • Il-preżenza ta 'sett standard ta' moduli, li l-użu tagħhom ma jeħtieġx vinkolanti ma 'dipendenzi esterni. Moduli mill-ġbir standard għaddew minn verifika addizzjonali u ttestjar ta 'kompatibilità;
  • Minbarra l-runtime, il-pjattaforma Deno taġixxi wkoll bħala maniġer tal-pakketti u tippermettilek taċċessa moduli permezz tal-URL ġewwa l-kodiċi. Per eżempju, biex tagħbija modulu, tista 'tispeċifika fil-kodiċi "importazzjoni * bħala log minn "https://deno.land/std/log/mod.ts". Fajls imniżżla minn servers esterni permezz tal-URL huma fil-cache. L-irbit mal-verżjonijiet tal-moduli huwa determinat billi jiġu speċifikati n-numri tal-verżjoni ġewwa l-URL, pereżempju, “https://unpkg.com/[protett bl-email]/dist/liltest.js";
  • L-istruttura tinkludi sistema integrata ta 'spezzjoni tad-dipendenza (il-kmand "deno info") u utilità għall-ifformattjar tal-kodiċi (deno fmt);
  • L-iskripts tal-applikazzjoni kollha jistgħu jingħaqdu f'fajl wieħed JavaScript.

Sors: opennet.ru

Żid kumment