Onkọwe ti Node.js ṣafihan pẹpẹ JavaScript to ni aabo Deno 1.0

Lẹhin ọdun meji ti idagbasoke gbekalẹ akọkọ pataki Tu Fun mi 1.0, Syeed fun ipaniyan imurasilẹ-nikan ti awọn ohun elo ni JavaScript ati TypeScript, eyiti o le ṣee lo lati ṣẹda awọn olutọju ti o nṣiṣẹ lori olupin naa. Syeed jẹ idagbasoke nipasẹ Ryan Dahl (Ryan Dahl), Eleda ti Node.js. Bii Node.js, Deno nlo ẹrọ JavaScript kan V8, eyiti o tun lo ninu awọn aṣawakiri orisun Chromium. Ni akoko kanna, Deno kii ṣe orita ti Node.js, ṣugbọn jẹ iṣẹ akanṣe tuntun ti a ṣẹda lati ibere. koodu ise agbese pin nipasẹ labẹ MIT iwe-ašẹ. Awọn apejọ pese sile fun Linux, Windows ati macOS.

Nọmba ẹya pataki ni nkan ṣe pẹlu imuduro ti awọn API ni aaye orukọ Deno, eyiti o jẹ iduro fun ibaraenisepo awọn ohun elo pẹlu OS. Software atọkun ti o ni bẹ jina ko duro, ti wa ni ipamọ nipasẹ aiyipada ati pe o wa nikan nigbati o nṣiṣẹ ni ipo "--unstable". Bi awọn ẹya tuntun ti ṣe agbekalẹ, iru awọn API yoo di iduroṣinṣin diẹdiẹ. API ti o wa ni aaye orukọ agbaye, eyiti o pẹlu awọn iṣẹ ti o wọpọ gẹgẹbi setTimeout() ati bu(), wa nitosi bi o ti ṣee ṣe si API ti awọn aṣawakiri wẹẹbu ti aṣa ati pe o ni idagbasoke ni ibamu pẹlu awọn iṣedede wẹẹbu fun awọn aṣawakiri. Awọn API ti a pese nipasẹ Rust, eyiti o lo taara ni koodu pẹpẹ, bakanna bi wiwo fun idagbasoke awọn afikun fun akoko asiko Deno, ko tii diduro ati tẹsiwaju lati dagbasoke.

Awọn idi pataki fun ṣiṣẹda pẹpẹ JavaScript tuntun ni ifẹ lati yọkuro awọn aṣiṣe imọran, gba ni Node.js faaji, ki o si pese awọn olumulo pẹlu kan diẹ ni aabo ayika. Lati mu aabo dara sii, ẹrọ V8 ti wa ni kikọ ni Rust, eyiti o yago fun ọpọlọpọ awọn ailagbara ti o dide lati ifọwọyi iranti ipele kekere, gẹgẹbi iraye si lẹhin-ọfẹ, awọn ifasilẹ itọka asan, ati awọn agbekọja buffer. Syeed jẹ lilo lati ṣe ilana awọn ibeere ni ipo ti kii ṣe idinamọ Tokyo, tun kọ ni ipata. Tokio ngbanilaaye lati ṣẹda awọn ohun elo iṣẹ ṣiṣe giga ti o da lori faaji ti o dari iṣẹlẹ, n ṣe atilẹyin titẹ-pupọ ati ṣiṣe awọn ibeere nẹtiwọọki ni ipo asynchronous.

akọkọ awọn ẹya Deno:

  • Aabo-Oorun iṣeto ni aiyipada. Wiwọle faili, netiwọki, ati iraye si awọn oniyipada ayika jẹ alaabo nipasẹ aiyipada ati pe o gbọdọ ṣiṣẹ ni gbangba. Awọn ohun elo nipasẹ aiyipada ṣiṣẹ ni awọn agbegbe apoti iyanrin ti o ya sọtọ ati pe ko le wọle si awọn agbara eto laisi fifun awọn igbanilaaye fojuhan;
  • Atilẹyin ti a ṣe sinu fun TypeScript kọja JavaScript. Akopọ TypeScript boṣewa ni a lo lati ṣayẹwo awọn oriṣi ati ṣe ipilẹṣẹ JavaScript, eyiti o yori si kọlu iṣẹ kan ni akawe si sisọ JavaScript ni V8. Ni ọjọ iwaju, a gbero lati mura imuse tiwa ti eto ṣiṣe ayẹwo iru TypeScript, eyiti yoo mu ilọsiwaju iṣẹ ṣiṣe TypeScript ṣiṣẹ nipasẹ aṣẹ titobi;
  • Akoko ṣiṣe wa ni irisi faili ti o le ṣiṣẹ ti ara-ẹni kan ṣoṣo (“deno”). Lati ṣiṣẹ awọn ohun elo nipa lilo Deno o ti to download fun Syeed rẹ faili kan ti o le ṣiṣẹ wa, nipa iwọn 20 MB, eyiti ko ni awọn igbẹkẹle ita ati pe ko nilo eyikeyi fifi sori ẹrọ pataki lori eto naa. Pẹlupẹlu, deno kii ṣe ohun elo monolithic, ṣugbọn jẹ ikojọpọ ti awọn idii apoti ni ipata (deno_core, rusty_v8), eyi ti o le ṣee lo lọtọ;
  • Nigbati o ba bẹrẹ eto naa, bakannaa lati gbe awọn modulu, o le lo adirẹsi URL. Fun apẹẹrẹ, lati ṣiṣẹ eto welcome.js, o le lo aṣẹ “deno https://deno.land/std/examples/welcome.js”. Koodu lati awọn orisun ita jẹ igbasilẹ ati fipamọ sori eto agbegbe, ṣugbọn kii ṣe imudojuiwọn laifọwọyi (imudojuiwọn nilo ṣiṣe ohun elo ni gbangba pẹlu asia “--tun gbee”);
  • Ṣiṣẹ daradara ti awọn ibeere nẹtiwọọki nipasẹ HTTP ni awọn ohun elo; Syeed jẹ apẹrẹ fun ṣiṣẹda awọn ohun elo nẹtiwọọki iṣẹ giga;
  • Agbara lati ṣẹda awọn ohun elo wẹẹbu agbaye ti o le ṣe mejeeji ni Deno ati ni aṣawakiri wẹẹbu deede;
  • Wiwa boṣewa ṣeto ti modulu, lilo eyiti ko nilo abuda si awọn igbẹkẹle ita. Awọn modulu lati ikojọpọ boṣewa ti ṣe ayewo afikun ati idanwo ibamu;
  • Ni afikun si akoko asiko, pẹpẹ Deno tun ṣe bi oluṣakoso package ati gba ọ laaye lati wọle si awọn modulu nipasẹ URL inu koodu naa. Fun apẹẹrẹ, lati fifuye a module, o le pato ninu awọn koodu "gbe wọle * bi log lati "https://deno.land/std/log/mod.ts". Awọn faili ti a ṣe igbasilẹ lati awọn olupin ita nipasẹ URL ti wa ni ipamọ. Isopọmọ si awọn ẹya module jẹ ipinnu nipasẹ sisọ awọn nọmba ẹya inu URL naa, fun apẹẹrẹ, “https://unpkg.com/[imeeli ni idaabobo]/dist/liltest.js";
  • Eto naa pẹlu eto ayewo igbẹkẹle iṣọpọ (aṣẹ “deno info”) ati ohun elo fun kika koodu (deno fmt);
  • Gbogbo awọn iwe afọwọkọ ohun elo le ni idapo sinu faili JavaScript kan.

Awọn iyatọ lati Node.js:

  • Deno ko lo oluṣakoso package npm
    ati pe ko ni asopọ si awọn ibi ipamọ, awọn modulu ti wa ni idojukọ nipasẹ URL tabi nipasẹ ọna faili, ati awọn modulu funrararẹ le gbe sori aaye ayelujara eyikeyi;
  • Deno ko lo "package.json" lati setumo awọn module;
  • Iyatọ API, gbogbo awọn iṣe asynchronous ni Deno pada ileri kan;
  • Deno nilo alaye ti o fojuhan ti gbogbo awọn igbanilaaye pataki fun awọn faili, nẹtiwọọki ati awọn oniyipada ayika;
  • Gbogbo awọn aṣiṣe ti a ko pese pẹlu awọn olutọpa yori si ifopinsi ohun elo naa;
  • Deno nlo ECMAScript module eto ati ki o ko ni atilẹyin beere ();
  • Olupin HTTP ti a ṣe sinu Deno ti kọ sinu TypeScript ati ṣiṣe lori oke awọn iho TCP abinibi, lakoko ti olupin HTTP Node.js ti kọ sinu C ati pese awọn abuda fun JavaScript. Awọn olupilẹṣẹ Deno ti dojukọ lori iṣapeye gbogbo ipele iho iho TCP ati pese wiwo gbogbogbo diẹ sii. Deno HTTP Server n pese iṣelọpọ kekere ṣugbọn ṣe iṣeduro lairi kekere asọtẹlẹ. Fun apẹẹrẹ, ninu idanwo naa, ohun elo ti o rọrun ti o da lori olupin Deno HTTP ni anfani lati ṣe ilana 25 ẹgbẹrun awọn ibeere fun iṣẹju kan pẹlu lairi ti o pọju ti 1.3 milliseconds. Ni Node.js, ohun elo ti o jọra ṣe ilana awọn ibeere 34 ẹgbẹrun fun iṣẹju kan, ṣugbọn awọn latencies wa lati 2 ati 300 milliseconds.
  • Deno ko ni ibamu pẹlu awọn idii fun Node.js (NPM), ṣugbọn ti wa ni idagbasoke lọtọ interlayer fun ibamu pẹlu bošewa Node.js ìkàwé, bi o ti ndagba, siwaju ati siwaju sii awọn ohun elo ti a kọ fun Node.js yoo ni anfani lati ṣiṣe ni Deno.
  • orisun: opennet.ru

Fi ọrọìwòye kun