Panulis Node.js nampilkeun platform JavaScript anu aman Deno 1.0

Sanggeus dua taun pangwangunan ditepikeun release utama munggaran Pasihan abdi 1.0, platform pikeun palaksanaan mandiri tina aplikasi dina JavaScript na TypeScript, nu bisa dipaké pikeun nyieun pawang nu ngajalankeun on server. Platform ieu dikembangkeun ku Ryan Dahl (Ryan Dahl), panyipta Node.js. Kawas Node.js, Deno ngagunakeun mesin JavaScript V8, nu ogé dipaké dina browser 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 ku handapeun lisénsi MIT. Majelis disiapkeun pikeun Linux, Windows sareng macOS.

Jumlah vérsi anu signifikan pakait sareng stabilisasi API dina namespace Deno, anu tanggung jawab pikeun interaksi aplikasi sareng OS. Software interfaces nu geus jadi jauh teu stabilized, disumputkeun sacara standar sareng ngan sayogi nalika ngajalankeun dina modeu "--unstable". Nalika vérsi énggal kabentuk, API sapertos kitu laun-laun bakal stabil. API dina spasi ngaran global, nu ngawengku fungsi umum kayaning setTimeout () sarta dipulut (), nyaeta sacaket mungkin ka API tina web browser konvensional sarta dimekarkeun luyu jeung standar Web pikeun panyungsi. API anu disayogikeun ku Rust, anu dianggo langsung dina kode platform, ogé antarbeungeut pikeun ngembangkeun plugins pikeun runtime Deno, henteu acan stabil sareng terus berkembang.

Motif konci pikeun nyiptakeun platform JavaScript énggal nyaéta kahayang pikeun ngaleungitkeun kasalahan konseptual, ngaku dina arsitektur Node.js, sarta nyadiakeun pamaké kalawan lingkungan leuwih aman. Pikeun ningkatkeun kaamanan, mesin V8 ditulis dina Rust, anu ngahindarkeun seueur kerentanan anu timbul tina manipulasi mémori tingkat-rendah, sapertos aksés gratis saatosna, dereferences pointer nol, sareng overruns panyangga. Platformna dianggo pikeun ngolah pamundut dina modeu non-blocking Tokio, ogé ditulis dina Rust. Tokio ngidinan Anjeun pikeun nyieun aplikasi-kinerja tinggi dumasar kana arsitéktur acara-disetir, ngarojong multi-threading sarta ngolah requests jaringan dina modeu Asynchronous.

utama Fitur 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. Kompiler TypeScript standar dianggo pikeun mariksa jinis sareng ngahasilkeun JavaScript, anu nyababkeun kinerja hit dibandingkeun sareng parsing JavaScript dina V8. Dina mangsa nu bakal datang, urang rencanana nyiapkeun palaksanaan sorangan tina tipe TypeScript mariksa sistem, nu bakal ngaronjatkeun kinerja processing TypeScript ku urutan gedena;
  • Runtime asalna dina bentuk file laksana anu mandiri ("deno"). Pikeun ngajalankeun aplikasi nganggo Deno éta cekap unggah Pikeun platformna aya hiji file anu tiasa dieksekusi, ukuranana sakitar 20 MB, anu teu aya katergantungan éksternal sareng henteu ngabutuhkeun instalasi khusus dina sistem. Sumawona, deno sanés aplikasi monolitik, tapi mangrupikeun kumpulan bungkusan peti di Rust (deno_core, keyeng_v8), anu tiasa dianggo nyalira;
  • 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;
  • kasadiaan set baku tina 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.

Beda ti Node.js:

  • Deno henteu nganggo manajer pakét npm
    sarta teu dihijikeun ka repositories, modul nu kajawab via URL atawa ku jalur file, sarta modul sorangan bisa disimpen dina ramatloka wae;
  • Deno teu make "package.json" pikeun nangtukeun modul;
  • Beda API, sagala lampah Asynchronous di Deno balik jangji;
  • Deno merlukeun definisi eksplisit sadaya idin diperlukeun pikeun file, jaringan jeung variabel lingkungan;
  • Sadaya kasalahan anu henteu disayogikeun ku pawang ngarah kana terminasi aplikasi;
  • Deno ngagunakeun sistem modul ECMAScript jeung teu ngarojong merlukeun ();
  • server HTTP diwangun-di Deno urang ditulis dina TypeScript tur dijalankeun dina luhureun sockets TCP asli, sedengkeun server HTTP Node.js ditulis dina C jeung nyadiakeun bindings pikeun JavaScript. Pamekar Deno geus fokus kana optimalisasi sakabéh lapisan stop kontak TCP jeung nyadiakeun panganteur leuwih umum. Deno HTTP Server nyadiakeun throughput handap tapi ngajamin latency low bisa diprediksi. Contona, dina tés, aplikasi basajan dumasar kana server HTTP Deno éta bisa ngolah 25 sarébu requests per detik kalayan latency maksimum 1.3 milliseconds. Dina Node.js, aplikasi anu sami ngolah 34 rébu pamundut per detik, tapi laténna antara 2 sareng 300 milidetik.
  • Deno teu cocog jeung bungkusan pikeun Node.js (NPM), tapi keur dimekarkeun misah interlayer pikeun kasaluyuan jeung perpustakaan Node.js baku, sakumaha eta tumuwuh, beuki loba aplikasi ditulis pikeun Node.js bakal tiasa ngajalankeun di Deno.
  • sumber: opennet.ru

Tambahkeun komentar