Platform Deno JavaScript cocog sareng modul NPM

Deno 1.28 parantos dileupaskeun, kerangka pikeun sandboxing JavaScript sareng aplikasi TypeScript anu tiasa dianggo pikeun ngadamel panangan sisi-server. Platformna dikembangkeun ku Ryan Dahl, panyipta Node.js. Sapertos Node.js, Deno nganggo mesin JavaScript V8, anu ogé dianggo dina panyungsi basis Chromium. Dina waktos anu sami, Deno sanés garpu tina Node.js, tapi mangrupikeun proyék énggal anu didamel ti mimiti. Kodeu proyék disebarkeun dina lisénsi MIT. Wangunan disiapkeun pikeun Linux, Windows sareng macOS.

Proyék Deno dijieun pikeun nyadiakeun pamaké kalawan lingkungan leuwih aman tur ngaleungitkeun kasalahan konseptual dina arsitektur Node.js. Pikeun ningkatkeun kaamanan, mesin V8 ditulis dina Rust, anu ngahindarkeun seueur kerentanan anu timbul tina manipulasi mémori tingkat rendah. Pikeun ngolah pamundut dina modeu non-blocking, platform Tokio, ogé ditulis dina Rust, dipaké. Tokio ngidinan Anjeun pikeun nyieun aplikasi-kinerja tinggi dumasar kana arsitéktur acara-disetir, ngarojong multi-threading sarta ngolah requests jaringan dina modeu Asynchronous.

Parobihan konci dina sékrési énggal nyaéta stabilisasi kasaluyuan sareng pakét anu di-host di gudang NPM, anu ngamungkinkeun Deno ngagunakeun langkung ti 1.3 juta modul anu diciptakeun pikeun platform Node.js. Salaku conto, aplikasi basis Deno ayeuna tiasa nganggo modul aksés data anu terus-terusan sapertos Prisma, Mongoose sareng MySQL, ogé kerangka hareup-tungtung sapertos React sareng Vue. Sababaraha modul NPM masih tetep sauyunan jeung Deno, contona alatan beungkeutan elemen lingkungan Node.js-spésifik kayaning file package.json. Éta ogé henteu acan tiasa nganggo paréntah "deno compile" sareng modul NPM. Kaluaran anu bakal datang ngarencanakeun pikeun ngarengsekeun incompatibilities sareng watesan ieu.

Rojongan pikeun sistem modul ECMAScript Deno saméméhna dipaké sarta modél API Web dipikagaduh dina tingkat nu sarua, sarta skéma loading basis URL akrab Deno dipaké pikeun ngimpor modul NPM. Pikeun ngakses modul NPM, aya awalan URL husus "npm:", nu bisa dipaké dina cara nu sarua salaku modul Deno biasa. Contona, pikeun ngimpor modul NPM, anjeun tiasa netepkeun 'impor {kapur } tina "npm: kapur @ 5";', sareng ngajalankeun skrip NPM tina baris paréntah - "deno run --allow-env --allow -baca npm: create- vite-extra.

Ngagunakeun bungkusan NPM di Deno loba gampang ti di Node.js, saprak aya teu kudu pre-install modul (modul dipasang nalika aplikasi munggaran dibuka), euweuh file package.json, tur euweuh standar node_modules. diréktori (modul anu sindangan dina diréktori dibagikeun, tapi kasebut nyaéta dimungkinkeun pikeun mulangkeun kabiasaan heubeul ngagunakeun "--node-modules-dir" pilihan).

Aplikasi basis NPM nahan kamampuh ngagunakeun kontrol aksés Deno, isolasi, jeung kamampuhan canggih sénsitip-kaamanan. Pikeun ngalawan serangan ngaliwatan kagumantungan questionable, Deno meungpeuk sacara standar sadaya usaha pikeun meunangkeun aksés ka sistem tina dependensi jeung mintonkeun peringatan ngeunaan masalah kauninga. Salaku conto, nalika modul nyobian kéngingkeun aksés nulis kana /usr/bin/, pamundut konfirmasi pikeun operasi ieu bakal ditingalikeun: deno run npm:install-malware ⚠️ ┌ Deno requests write access to /usr/bin/. ├ Dipénta ku `install-malware` ├ Jalankeun deui nganggo --allow-write pikeun ngaliwat pituduh ieu. └ Ngidinan? [y/n] (y = enya, ngidinan; n = henteu, mungkir) >

Perbaikan non-NPM dina versi anyar kaasup ngamutahirkeun mesin V8 pikeun ngabebaskeun 10.9, deteksi otomatis file kalawan konci, stabilisasi Deno.bench (), Deno.gid (), Deno.networkInterfaces (), Deno.systemMemoryInfo () jeung API Deno.. .uid (), nambahkeun API anyar teu stabil Deno.Command () pikeun ngajalankeun paréntah (ngagantian universal pikeun Deno.spawn, Deno.spawnSync na Deno.spawnChild).

Fitur utama Deno:

  • Konfigurasi standar berorientasi kaamanan. Aksés file, jaringan, sareng aksés ka variabel lingkungan ditumpurkeun sacara standar sareng kedah diaktipkeun sacara eksplisit. Aplikasi sacara standar dijalankeun dina lingkungan sandbox terasing sareng teu tiasa ngaksés kamampuan sistem tanpa masihan idin eksplisit;
  • Diwangun-di rojongan pikeun TypeScript saluareun JavaScript. Pikeun mariksa tipe sareng generasi JavaScript, kompiler TypeScript standar dianggo, anu nyababkeun turunna kinerja dibandingkeun sareng parsing JavaScript dina V8;
  • Runtime asalna dina bentuk file laksana anu mandiri ("deno"). Pikeun ngajalankeun aplikasi nganggo Deno, anjeun ngan ukur kedah ngaunduh hiji file anu tiasa dieksekusi pikeun platform anjeun, ukuranana sakitar 30 MB, anu teu aya katergantungan éksternal sareng henteu ngabutuhkeun instalasi khusus dina sistem. Leuwih ti éta, deno sanes aplikasi monolithic, tapi mangrupakeun kumpulan bungkusan Karat crate (deno_core, rusty_v8), nu bisa dipaké misah;
  • Nalika ngamimitian program, kitu ogé pikeun ngamuat modul, anjeun tiasa nganggo alamat URL. Contona, pikeun ngajalankeun program welcome.js, anjeun tiasa nganggo paréntah "deno https://deno.land/std/examples/welcome.js". Kode tina sumber éksternal diundeur jeung sindangan dina sistem lokal, tapi teu pernah otomatis diropéa (ngamutahirkeun merlukeun eksplisit ngajalankeun aplikasi jeung bandéra "--reload");
  • Ngolah éfisién paménta jaringan via HTTP dina aplikasi, platform dirancang pikeun nyiptakeun aplikasi jaringan berkinerja tinggi;
  • Kamampuhan pikeun nyieun aplikasi wéb universal anu tiasa dieksekusi dina Deno sareng dina browser wéb biasa;
  • Ayana set standar modul, pamakéan nu teu merlukeun ngariung ka dependensi éksternal. Modul tina kumpulan standar parantos ngalaman audit tambahan sareng uji kasaluyuan;
  • Salian runtime, platform Deno ogé bertindak salaku manajer pakét sareng ngamungkinkeun anjeun ngaksés modul ku URL di jero kode. Contona, pikeun ngamuat modul a, Anjeun bisa nangtukeun dina kode "impor * sakumaha log ti "https://deno.land/std/log/mod.ts". Berkas anu diunduh tina pangladén éksternal via URL di-cache. Beungkeutan kana versi modul ditangtukeun ku nangtukeun nomer versi dina URL, contona, "https://unpkg.com/[email dijaga]/dist/liltest.js";
  • Strukturna ngawengku sistem inspeksi kagumantungan terpadu (paréntah "deno info") sareng utilitas pikeun pormat kode (deno fmt);
  • Sadaya skrip aplikasi tiasa digabungkeun kana hiji file JavaScript.

sumber: opennet.ru

Tambahkeun komentar