Deno JavaScript -alusta on yhteensopiva NPM-moduulien kanssa

Deno 1.28 on julkaistu, kehys JavaScript- ja TypeScript-sovellusten hiekkalaatikolle, jota voidaan käyttää palvelinpuolen käsittelijöiden luomiseen. Alustan on kehittänyt Ryan Dahl, Node.js:n luoja. Kuten Node.js, Deno käyttää V8 JavaScript -moottoria, jota käytetään myös Chromium-pohjaisissa selaimissa. Samaan aikaan Deno ei ole Node.js:n haarukka, vaan uusi projekti, joka on luotu tyhjästä. Projektikoodia jaetaan MIT-lisenssillä. Koonnit on valmistettu Linuxille, Windowsille ja macOS:lle.

Deno-projekti luotiin tarjoamaan käyttäjille turvallisempi ympäristö ja eliminoimaan käsitteelliset virheet Node.js-arkkitehtuurissa. Turvallisuuden parantamiseksi V8-moottori on kirjoitettu Rust-kielellä, mikä välttää monet haavoittuvuudet, jotka johtuvat matalan tason muistin manipuloinnista. Pyyntöjen käsittelemiseen estotilassa käytetään Tokio-alustaa, joka on myös kirjoitettu rust-kielellä. Tokio antaa sinun luoda korkean suorituskyvyn sovelluksia, jotka perustuvat tapahtumapohjaiseen arkkitehtuuriin, jotka tukevat monisäikeistä ja prosessoivia verkkopyyntöjä asynkronisessa tilassa.

Keskeinen muutos uudessa julkaisussa on yhteensopivuuden vakauttaminen NPM-tietovarastossa olevien pakettien kanssa, minkä ansiosta Deno voi käyttää yli 1.3 miljoonaa Node.js-alustalle luotua moduulia. Esimerkiksi Deno-pohjaiset sovellukset voivat nyt käyttää pysyviä tiedonkäyttömoduuleja, kuten Prisma, Mongoose ja MySQL, sekä etupään kehyksiä, kuten React ja Vue. Jotkut NPM-moduulit eivät edelleenkään ole yhteensopivia Denon kanssa, esimerkiksi sidoksissa Node.js-spesifisiin ympäristöelementteihin, kuten package.json-tiedostoon. Ei myöskään ole vielä mahdollista käyttää "deno compile" -komentoa NPM-moduulien kanssa. Tulevien julkaisujen tarkoituksena on korjata nämä yhteensopimattomuudet ja rajoitukset.

Tuki Denon aiemmin käyttämälle ECMAScript-moduulijärjestelmälle ja Web API -mallille säilyy samalla tasolla, ja NPM-moduulien tuontiin käytetään Denon tuttua URL-pohjaista latausjärjestelmää. NPM-moduuleita varten on erityinen URL-etuliite "npm:", jota voidaan käyttää samalla tavalla kuin tavallisia Deno-moduuleja. Jos esimerkiksi haluat tuoda NPM-moduulin, voit määrittää "import { chalk } from "npm:chalk@5";' ja suorittaa NPM-komentosarjan komentoriviltä - "deno run --allow-env --allow -lue npm:create- vite-extra."

NPM-pakettien käyttäminen Denossa on paljon helpompaa kuin Node.js:ssa, koska moduuleja ei tarvitse esiasentaa (moduulit asennetaan sovelluksen ensimmäisen käynnistyksen yhteydessä), paketti.json-tiedostoa ei ole eikä oletusarvoista node_modules. hakemistoon (moduulit tallennetaan välimuistiin jaettuun hakemistoon, mutta on mahdollista palauttaa vanha toiminta "--node-modules-dir" -vaihtoehdolla).

NPM-pohjaisissa sovelluksissa on edelleen mahdollisuus käyttää Denon kulunvalvonta-, eristys- ja suojausherkkiä edistyneitä ominaisuuksia. Vastatakseen kyseenalaisten riippuvuuksien kautta tapahtuviin hyökkäyksiin Deno estää oletusarvoisesti kaikki yritykset päästä järjestelmään riippuvuuksista ja näyttää varoituksen havaituista ongelmista. Esimerkiksi kun moduuli yrittää saada kirjoitusoikeudet tiedostoon /usr/bin/, näyttöön tulee vahvistuspyyntö tälle toiminnolle: deno run npm:install-malware ⚠️ ┌ Deno pyytää kirjoitusoikeutta hakemistoon /usr/bin/. ├ `install-malware' pyytänyt ├ Ohita tämä kehote ajamalla uudelleen komennolla --allow-write. └ Sallitaanko? [y/n] (y = kyllä, salli; n = ei, kieltää) >

Ei-NPM-parannuksia uudessa versiossa ovat V8-moottorin päivittäminen versioon 10.9, tiedostojen automaattinen tunnistus lukkojen kanssa, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() stabilointi. ja Deno API:t..uid(), joka lisää uuden epävakaan API:n Deno.Command() komentojen suorittamiseen (Universaali korvaaminen Deno.spawnille, Deno.spawnSyncille ja Deno.spawnChildille).

Denon tärkeimmät ominaisuudet:

  • Turvallisuussuuntautunut oletuskokoonpano. Tiedostojen käyttö, verkkoyhteys ja pääsy ympäristömuuttujiin on oletuksena poistettu käytöstä, ja ne on otettava erikseen käyttöön. Sovellukset toimivat oletuksena eristetyissä hiekkalaatikkoympäristöissä eivätkä voi käyttää järjestelmän ominaisuuksia myöntämättä nimenomaisia ​​käyttöoikeuksia.
  • Sisäänrakennettu tuki TypeScriptille JavaScriptin lisäksi. Tyyppitarkistukseen ja JavaScriptin luomiseen käytetään tavallista TypeScript-kääntäjää, mikä johtaa suorituskyvyn laskuun verrattuna JavaScript-jäsennykseen V8:ssa;
  • Suoritusaika tulee yhden itsenäisen suoritettavan tiedoston ("deno") muodossa. Jotta voit käyttää Denoa käyttäviä sovelluksia, sinun tarvitsee vain ladata alustallesi yksi suoritettava tiedosto, joka on kooltaan noin 30 megatavua ja jolla ei ole ulkoisia riippuvuuksia eikä se vaadi erityistä asennusta järjestelmään. Lisäksi deno ei ole monoliittinen sovellus, vaan se on kokoelma Rust crate -paketteja (deno_core, rusty_v8), joita voidaan käyttää erikseen;
  • Ohjelmaa käynnistettäessä ja moduulien lataamisessa voidaan käyttää URL-osoitteita. Esimerkiksi welcome.js-ohjelman suorittamiseksi voit käyttää komentoa "deno https://deno.land/std/examples/welcome.js". Ulkoisista resursseista peräisin oleva koodi ladataan ja tallennetaan paikallisen järjestelmän välimuistiin, mutta sitä ei koskaan päivitetä automaattisesti (päivitys vaatii nimenomaisen sovelluksen suorittamisen "--reload"-lipulla);
  • Tehokas verkkopyyntöjen käsittely HTTP:n kautta sovelluksissa, alusta on suunniteltu luomaan korkean suorituskyvyn verkkosovelluksia;
  • Mahdollisuus luoda universaaleja verkkosovelluksia, jotka voidaan suorittaa sekä Denossa että tavallisessa verkkoselaimessa;
  • Vakiomoduulisarjan läsnäolo, jonka käyttö ei vaadi sitoutumista ulkoisiin riippuvuuksiin. Standardikokoelman moduuleille on tehty lisätarkastus ja yhteensopivuustestaus;
  • Ajonajan lisäksi Deno-alusta toimii myös paketinhallinnana ja mahdollistaa moduulien pääsyn koodin sisällä olevien URL-osoitteiden kautta. Voit esimerkiksi ladata moduulin määrittämällä koodiin "import * as log from "https://deno.land/std/log/mod.ts". Ulkoisilta palvelimilta URL-osoitteen kautta ladatut tiedostot tallennetaan välimuistiin. Sitoutuminen moduuliversioihin määritetään määrittämällä versionumerot URL-osoitteen sisällä, esimerkiksi "https://unpkg.com/[sähköposti suojattu]/dist/liltest.js";
  • Rakenne sisältää integroidun riippuvuuden tarkistusjärjestelmän ("deno info" -komento) ja apuohjelman koodin muotoiluun (deno fmt);
  • Kaikki sovellusskriptit voidaan yhdistää yhdeksi JavaScript-tiedostoksi.

Lähde: opennet.ru

Lisää kommentti