Ang proyekto ng Deno ay bumubuo ng isang secure na platform ng JavaScript na katulad ng Node.js

Magagamit pagpapalabas ng proyekto Bigyan mo ako ng 0.33, na nag-aalok ng platform na tulad ng Node.js para sa stand-alone na pagpapatupad ng application sa JavaScript at TypeScript na magagamit para magpatakbo ng mga application nang hindi nakatali sa isang browser, gaya ng paggawa ng mga handler na tumatakbo sa server. Gumagamit si Deno ng JavaScript engine V8, na ginagamit din sa Node.js at mga browser batay sa proyekto ng Chromium. Code ng proyekto ipinamahagi ni sa ilalim ng lisensya ng MIT. Ang proyekto ay binuo ni Ryan Dahl (Ryan Dahl), tagalikha ng Node.js JavaScript platform.

Ang isa sa mga pangunahing layunin ng paglikha ng bagong runtime para sa JavaScript ay ang magbigay ng mas secure na kapaligiran. Upang mapabuti ang seguridad, ang V8 engine ay nakasulat sa Rust, na nag-iwas sa marami sa mga kahinaan na nagmumula sa mababang antas ng pagmamanipula ng memorya, tulad ng after-free na pag-access, null pointer dereferences, at buffer overruns. Ang platform ay ginagamit upang iproseso ang mga kahilingan sa non-blocking mode Tokio, nakasulat din sa Rust. Binibigyang-daan ka ng Tokio na lumikha ng mga application na may mataas na pagganap batay sa arkitektura na hinimok ng kaganapan, na sumusuporta sa mga kahilingan sa multi-threading at pagproseso ng network sa asynchronous mode.

Ang pangunahing mga tampok Deno:

  • Default na configuration na nakatuon sa seguridad. Ang pag-access sa file, networking, at pag-access sa mga variable ng kapaligiran ay hindi pinagana bilang default at dapat na tahasang pinagana;
  • Built-in na suporta para sa TypeScript na wika bilang karagdagan sa JavaScript;
  • Ang runtime ay dumating sa anyo ng isang solong self-contained na maipapatupad na file ("deno"). Upang magpatakbo ng mga application gamit ang Deno ito ay sapat na mag-upload para sa platform nito isang executable file, mga 10 MB ang laki, na walang mga panlabas na dependencies at hindi nangangailangan ng anumang espesyal na pag-install sa system;
  • Kapag sinimulan ang programa, pati na rin ang pag-load ng mga module, maaari mong gamitin ang URL addressing. Halimbawa, upang patakbuhin ang welcome.js program, maaari mong gamitin ang command na β€œdeno https://deno.land/std/examples/welcome.js”. Ang code mula sa mga panlabas na mapagkukunan ay dina-download at naka-cache sa lokal na system, ngunit hindi kailanman awtomatikong na-update (ang pag-update ay nangangailangan ng tahasang pagpapatakbo ng application gamit ang flag na "--reload");
  • Mahusay na pagproseso ng mga kahilingan sa network sa pamamagitan ng HTTP sa mga aplikasyon, ang platform ay idinisenyo para sa paglikha ng mga aplikasyon ng network na may mataas na pagganap;
  • Ang kakayahang lumikha ng mga unibersal na web application na maaaring isagawa pareho sa Deno at sa isang regular na web browser;
  • Bilang karagdagan sa runtime, gumaganap din ang Deno platform bilang manager ng package at nagbibigay-daan sa iyo na ma-access ang mga module sa pamamagitan ng URL sa loob ng code. Halimbawa, para mag-load ng module, maaari mong tukuyin sa code na β€œimport * bilang log mula sa β€œhttps://deno.land/std/log/mod.ts”. Ang mga file na na-download mula sa mga panlabas na server sa pamamagitan ng URL ay naka-cache. Ang pagbubuklod sa mga bersyon ng module ay tinutukoy sa pamamagitan ng pagtukoy ng mga numero ng bersyon sa loob ng URL, halimbawa, β€œhttps://unpkg.com/[protektado ng email]/dist/liltest.js";
  • Kasama sa istraktura ang isang pinagsama-samang sistema ng inspeksyon ng dependency (ang command na "deno info") at isang utility para sa pag-format ng code (deno fmt).
  • Para sa mga developer ng application iminungkahi isang hanay ng mga karaniwang module na sumailalim sa karagdagang pag-audit at pagsubok sa pagiging tugma;
  • Ang lahat ng mga script ng application ay maaaring pagsamahin sa isang JavaScript file.

Mga pagkakaiba mula sa Node.js:

  • Hindi gumagamit si Deno ng npm package manager
    at hindi nakatali sa mga repositoryo, ang mga module ay tinutugunan sa pamamagitan ng isang URL o ng isang file path, at ang mga module mismo ay maaaring ilagay sa anumang website;

  • Hindi gumagamit si Deno ng "package.json" upang tukuyin ang mga module;
  • Ang pagkakaiba ng API, lahat ng asynchronous na pagkilos sa Deno ay nagbabalik ng pangako;
  • Nangangailangan ang Deno ng tahasang kahulugan ng lahat ng kinakailangang pahintulot para sa mga file, network at mga variable ng kapaligiran;
  • Ang lahat ng mga error na hindi ibinigay sa mga humahawak ay humahantong sa pagwawakas ng aplikasyon;
  • Ginagamit ni Deno ang ECMAScript module system at hindi sumusuporta sa require().

Pinagmulan: opennet.ru

Magdagdag ng komento