Na JavaScript platformi Deno je zagotovljena združljivost z moduli NPM

Izšla je različica Deno 1.28, platforme za samostojno izvajanje aplikacij v programskih jezikih JavaScript in TypeScript, ki se lahko uporablja za ustvarjanje strežniških obdelovalcev. Platformo razvija Ryan Dahl, ustvarjalec Node.js. Tako kot v Node.js Deno uporablja JavaScript motor V8, ki se uporablja tudi v brskalnikih, temelječih na Chromiumu. Deno pa ni razdružitev od Node.js, temveč predstavlja nov projekt, ki je bil zgrajen od začetka. Koda projekta se distribuira pod licenco MIT. Gradnje so pripravljene za Linux, Windows in macOS.

Projekt Deno je bil ustvarjen z namenom, da uporabnikom nudi bolj zaščiteno okolje in odpravi konceptualne napake, narejene v arhitekturi Node.js. Za povečanje varnosti je ovojnica okoli motorja V8 napisana v programskem jeziku Rust, ki omogoča izogibanje mnogim ranljivostim, ki izhajajo iz nizko nivojskega dela s pomnilnikom. Za obdelavo zahtevkov v neblokirnem načinu se uporablja platforma Tokio, prav tako napisana v jeziku Rust. Tokio omogoča ustvarjanje visoko zmogljivih aplikacij na osnovi dogodkovno usmerjene arhitekture (Event-driven), ki podpirajo večnavetnost in obdelavo omrežnih zahtevkov v asinhronem načinu.

Ključna sprememba v novi izdaji je stabilizacija združljivosti s paketi, ki so shranjeni v repozitoriju NPM, kar omogoča uporabo več kot 1,3 milijona modulov, ustvarjenih za platformo Node.js, v Denu. Na primer, v aplikacijah, ki temeljijo na Denu, je zdaj mogoče uporabljati take module za organizacijo stalnega dostopa do podatkov, kot so Prisma, Mongoose in MySQL, pa tudi okvire za zagotavljanje delovanja front-endov, kot sta React in Vue. Nekateri NPM-moduli zaenkrat ostajajo nezdružljivi z Deno, na primer zaradi vezav na specifične okoljske elemente Node.js, kot je datoteka package.json. Tudi zaslon za ukaz „deno compile“ z NPM moduli trenutno ni mogoč. V prihodnjih izdajah je predvideno odpravljanje teh nezdružljivosti in omejitev.

Podpora prejšnjega modela Deno, temelječega na sistemu modulov ECMAScript in Web API, ostaja na isti ravni, pri čemer se za uvoz modulov NPM uporablja znana shema nalaganja temelječa na URL-ju. Za dostop do NPM modulov je na voljo poseben URL-prefiks 'npm:', ki ga je mogoče uporabiti na enak način kot običajne Deno module. Na primer, za uvoz NPM modula lahko navedete 'import { chalk } from "npm:chalk@5";', za zagon NPM skripte iz ukazne vrstice pa 'deno run —allow-env —allow-read npm:create-vite-extra'.

Uporaba NPM paketov v Deno je bistveno preprostejša kot v Node.js, saj ni potrebno vnaprejšnje namestitve modulov (moduli se namestijo ob prvem zagonu aplikacije), ne uporablja se datoteka package.json, prav tako pa se privzeto ne uporablja imenik node_modules (moduli se predpomnijo v skupnem imeniku, vendar obstaja možnost vrnitve na prejšnje vedenje s pomočjo možnosti '—node-modules-dir').

V aplikacijah, temelječih na NPM, ostaja možnost uporabe mehanizmov za omejevanje dostopa, izolacije in aktiviranje razširjenih funkcij, ki vplivajo na varnost, ki jih ponuja Deno. Za preprečevanje napadov preko dvomljivih odvisnosti Deno privzeto blokira vse poizkuse dostopa do sistema iz odvisnosti in prikaže opozorilo o zaznanih težavah. Na primer, ob poizkusu modula, da pridobi pravice za pisanje v /usr/bin/, se prikaže zahteva za potrditev te operacije: deno run npm:install-malware ⚠️ ┌ Deno zahteva dostop za pisanje v /usr/bin/. ├ Zahteval `install-malware` ├ Ponovno zaženite s —allow-write, da prezrete to sporočilo. └ Dovoli? [y/n] (y = da, dovoli; n = ne, zajiči) >

Med neskladenimi izboljšavami v NPM nove različice se omenja nadgradnja motorja V8 na izdajo 10.9, samodejno prepoznavanje datotek z zaklepanjem, stabilizacija API Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() in Deno.uid(), dodajanje novega nestabilnega API Deno.Command() za zagon ukazov (univerzalna zamenjava Deno.spawn, Deno.spawnSync in Deno.spawnChild).

Glavne značilnosti Deno:

  • Usmerjenost na varnost v privzeti konfiguraciji. Dostopi do datotek, mrežne možnosti in dostop do spremenljivk okolja so privzeto blokirani in zahtevajo izrecno omogočitev. Aplikacije se privzeto zaženejo v izoliranih sandbox okoljih in ne morejo dostopati do sistemskih možnosti brez izrecnega dovoljenja.
  • Vgrajena podpora za jezik TypeScript poleg JavaScript. Za preverjanje tipov in generiranje JavaScript se uporablja vgrajeni prevajalnik TypeScript, kar povzroča upad zmogljivosti v primerjavi z razčlenitvijo JavaScript v V8.
  • Runtime je na voljo v obliki enega samostojnega izvršnega datoteka ('deno'). Za zagon aplikacij z Deno je dovolj, da prenesete en izvršni datotek za svojo platformo, ki je velik približno 30 MB, brez zunanjih odvisnosti in ne zahteva posebne namestitve v sistem. Deno ni monolitna aplikacija, temveč predstavlja zbirko crate paketov v Rustu (deno_core, rusty_v8), ki se lahko uporabljajo ločeno.
  • Pri zagonu programa in za nalaganje modulov je mogoče uporabiti naslovitev prek URL. Na primer, za zagon programa welcome.js lahko uporabite ukaz 'deno https://deno.land/std/examples/welcome.js'. Koda iz zunanjih virov se naloži in predpomni na lokalnem sistemu, nikoli pa se samodejno ne posodablja (za posodobitev je treba izrecno zagnati aplikacijo z zastavico '--reload').
  • Učinkovita obdelava omrežnih zahtevkov prek HTTP, platforma je zasnovana za ustvarjanje visoko zmogljivih omrežnih aplikacij.
  • Možnost ustvarjanja univerzalnih spletnih aplikacij, ki lahko delujejo tako v Deno kot v običajnem spletnih brskalnikih.
  • Zagotavljanje standardnega nabora modulov, katerih uporaba ne zahteva vezave na zunanje odvisnosti. Moduli iz standardne zbirke so šli skozi dodatni pregled in preverjanje združljivosti.
  • Poleg runtima igra platforma Deno tudi vlogo upravitelja paketov in omogoča dostop do modulov v kodi prek URL. Na primer, za nalaganje modula lahko v kodi navedete 'import * as log from "https://deno.land/std/log/mod.ts". Datoteke, naložene iz zunanjih strežnikov preko URL, se predpomnijo. Povezava na različice modulov se določi s številkami različic znotraj URL, na primer 'https://unpkg.com/liltest@0.0.5/dist/liltest.js'.
  • Vključuje sistem za pregled odvisnosti (ukaz „deno info“) in orodje za oblikovanje kode (deno fmt);
  • Vsi skripti aplikacije so lahko združeni v eno datoteko JavaScript.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster