Deno JavaScript platforma je kompatibilna s NPM modulima

Izdan je Deno 1.28, okvir za sandboxing JavaScript i TypeScript aplikacija koje se mogu koristiti za stvaranje rukovatelja na strani poslužitelja. Platformu je razvio Ryan Dahl, tvorac Node.js. Kao i Node.js, Deno koristi V8 JavaScript mehanizam, koji se također koristi u preglednicima baziranim na Chromiumu. U isto vrijeme, Deno nije fork Node.js, već je novi projekt stvoren od nule. Kod projekta se distribuira pod licencom MIT-a. Buildovi su pripremljeni za Linux, Windows i macOS.

Projekt Deno stvoren je kako bi korisnicima pružio sigurnije okruženje i eliminirao konceptualne pogreške u arhitekturi Node.js. Kako bi se poboljšala sigurnost, motor V8 napisan je u Rustu, čime se izbjegavaju mnoge ranjivosti koje proizlaze iz manipulacije memorijom niske razine. Za obradu zahtjeva u načinu rada bez blokiranja koristi se platforma Tokio, također napisana u Rustu. Tokio vam omogućuje stvaranje visokoučinkovitih aplikacija temeljenih na arhitekturi vođenoj događajima, podržavajući multi-threading i obradu mrežnih zahtjeva u asinkronom načinu rada.

Ključna promjena u novom izdanju je stabilizacija kompatibilnosti s paketima koji se nalaze u NPM repozitoriju, što Denu omogućuje korištenje više od 1.3 milijuna modula stvorenih za Node.js platformu. Na primjer, aplikacije temeljene na Denou sada mogu koristiti module za trajni pristup podacima kao što su Prisma, Mongoose i MySQL, kao i front-end okvire kao što su React i Vue. Neki NPM moduli i dalje ostaju nekompatibilni s Denom, na primjer zbog vezanja na elemente okruženja specifične za Node.js, kao što je datoteka package.json. Također još nije moguće koristiti naredbu "deno compile" s NPM modulima. Buduća izdanja planiraju riješiti te nekompatibilnosti i ograničenja.

Podrška za Denoov prethodno korišten ECMAScript sustav modula i Web API model zadržana je na istoj razini, a Denoova poznata shema učitavanja temeljena na URL-u koristi se za uvoz NPM modula. Za pristup NPM modulima postoji poseban URL prefiks “npm:”, koji se može koristiti na isti način kao i obični Deno moduli. Na primjer, za uvoz NPM modula možete navesti 'import {chalk } from "npm:chalk@5";', a za pokretanje NPM skripte iz naredbenog retka - "deno run --allow-env --allow -read npm:create- vite-extra.”

Korištenje NPM paketa u Denu mnogo je lakše nego u Node.js, budući da nema potrebe za predinstaliranjem modula (moduli se instaliraju kada se aplikacija prvi put pokrene), ne postoji datoteka package.json i ne postoje zadani node_modules direktorij (moduli su pohranjeni u predmemoriji u zajedničkom direktoriju, ali je moguće vratiti staro ponašanje pomoću opcije “--node-modules-dir”).

Aplikacije temeljene na NPM-u zadržavaju mogućnost korištenja Deno kontrole pristupa, izolacije i naprednih mogućnosti osjetljivih na sigurnost. Kako bi se suprotstavio napadima kroz upitne ovisnosti, Deno prema zadanim postavkama blokira sve pokušaje pristupa sustavu iz ovisnosti i prikazuje upozorenje o otkrivenim problemima. Na primjer, kada modul pokuša dobiti pristup za pisanje u /usr/bin/, bit će prikazan zahtjev za potvrdu ove operacije: deno run npm:install-malware ⚠️ ┌ Deno zahtijeva pristup za pisanje u /usr/bin/. ├ Zahtijeva `install-malware` ├ Ponovno pokrenite s --allow-write da zaobiđete ovaj upit. └ Dopustiti? [y/n] (y = da, dopustiti; n = ne, odbiti) >

Poboljšanja koja nisu povezana s NPM-om u novoj verziji uključuju ažuriranje V8 motora na izdanje 10.9, automatsko otkrivanje datoteka s zaključavanjem, stabilizaciju Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() i Deno API-ji. .uid(), dodajući novi nestabilni API Deno.Command() za pokretanje naredbi (univerzalna zamjena za Deno.spawn, Deno.spawnSync i Deno.spawnChild).

Glavne značajke Denoa:

  • Zadana konfiguracija orijentirana na sigurnost. Pristup datotekama, umrežavanje i pristup varijablama okoline onemogućeni su prema zadanim postavkama i moraju biti izričito omogućeni. Aplikacije se prema zadanim postavkama izvode u izoliranim sandbox okruženjima i ne mogu pristupiti mogućnostima sustava bez davanja eksplicitnih dozvola;
  • Ugrađena podrška za TypeScript izvan JavaScripta. Za provjeru tipa i generiranje JavaScripta koristi se standardni prevodilac TypeScript, što dovodi do pada izvedbe u usporedbi s JavaScript raščlanjivanjem u V8;
  • Runtime dolazi u obliku jedne samostalne izvršne datoteke ("deno"). Da biste pokretali aplikacije koristeći Deno, samo trebate preuzeti jednu izvršnu datoteku za svoju platformu, veličine oko 30 MB, koja nema vanjskih ovisnosti i ne zahtijeva nikakvu posebnu instalaciju na sustav. Štoviše, deno nije monolitna aplikacija, već je zbirka Rust crate paketa (deno_core, rusty_v8), koji se mogu koristiti zasebno;
  • Prilikom pokretanja programa, kao i za učitavanje modula, možete koristiti URL adresiranje. Na primjer, za pokretanje programa welcome.js možete koristiti naredbu “deno https://deno.land/std/examples/welcome.js”. Kod iz vanjskih resursa se preuzima i pohranjuje u predmemoriju na lokalnom sustavu, ali se nikada ne ažurira automatski (ažuriranje zahtijeva eksplicitno pokretanje aplikacije s oznakom “--reload”);
  • Učinkovita obrada mrežnih zahtjeva putem HTTP-a u aplikacijama, platforma je dizajnirana za izradu mrežnih aplikacija visokih performansi;
  • Sposobnost stvaranja univerzalnih web aplikacija koje se mogu izvršavati i u Denou i u običnom web pregledniku;
  • Prisutnost standardnog skupa modula, čija upotreba ne zahtijeva vezanje na vanjske ovisnosti. Moduli iz standardne kolekcije prošli su dodatnu reviziju i testiranje kompatibilnosti;
  • Osim vremena izvođenja, platforma Deno također djeluje kao upravitelj paketa i omogućuje vam pristup modulima putem URL-a unutar koda. Na primjer, za učitavanje modula možete navesti u kodu “uvezi * kao dnevnik iz “https://deno.land/std/log/mod.ts”. Datoteke preuzete s vanjskih poslužitelja putem URL-a pohranjuju se u predmemoriju. Vezanje na verzije modula određuje se navođenjem brojeva verzija unutar URL-a, na primjer, “https://unpkg.com/[e-pošta zaštićena]/dist/liltest.js";
  • Struktura uključuje integrirani sustav inspekcije zavisnosti (naredba “deno info”) i uslužni program za formatiranje koda (deno fmt);
  • Sve skripte aplikacije mogu se kombinirati u jednu JavaScript datoteku.

Izvor: opennet.ru

Dodajte komentar