Node.js-en egileak Deno 1.0 JavaScript plataforma segurua aurkeztu zuen

Bi urteko garapenaren ostean aurkeztu lehen argitalpen handia Denoa 1.0, JavaScript eta TypeScript-eko aplikazioen exekuzio autonomorako plataforma, zerbitzarian exekutatzen diren kudeatzaileak sortzeko erabil daitekeena. Plataforma Ryan Dahl-ek garatu du (Ryan Dahl), Node.js-en sortzailea. Node.js bezala, Denok JavaScript motor bat erabiltzen du V8, Chromium oinarritutako arakatzaileetan ere erabiltzen dena. Aldi berean, Deno ez da Node.js-en sardexka bat, hutsetik sortutako proiektu berria baizik. Proiektuaren kodea arabera banatuta MIT lizentziapean. Batzarrak prestatuta Linux, Windows eta macOSentzat.

Bertsio-zenbaki esanguratsua Deno izen-espazioko APIen egonkortzearekin lotuta dago, aplikazioek OSarekin duten elkarrekintzaz arduratzen direnak. Orain arte izan duten software interfazeak egonkortu gabe, lehenespenez ezkutatuta daude eta soilik erabilgarri "--unstable" moduan exekutatzen denean. Bertsio berriak sortzen diren heinean, horrelako APIak egonkortuko dira pixkanaka. Izen-espazio globaleko APIa, setTimeout() eta fetch() bezalako funtzio arruntak biltzen dituena, ohiko web arakatzaileen APItik ahalik eta hurbilen dago eta arakatzaileentzako Web estandarren arabera garatzen da. Rust-ek emandako APIak, plataformaren kodean zuzenean erabiltzen direnak, baita Deno exekuziorako pluginak garatzeko interfazea ere, oraindik ez dira egonkortu eta garatzen jarraitzen dute.

JavaScript plataforma berri bat sortzeko arrazoi nagusiak akats kontzeptualak ezabatzeko nahia izan ziren, onartu Node.js arkitekturan, eta erabiltzaileei ingurune seguruagoa eskaintzen die. Segurtasuna hobetzeko, V8 motorra Rust-en idatzita dago, eta horrek maila baxuko memoriaren manipulaziotik sortzen diren ahultasun asko saihesten ditu, hala nola, askearen ondorengo sarbidea, erakusle nuluaren deserreferentziak eta buffer gainditzeak. Plataforma ez blokeatzeko moduan eskaerak prozesatzeko erabiltzen da Tokyo, herdoiluz ere idatzia. Tokiok errendimendu handiko aplikazioak sortzeko aukera ematen du, gertaerak gidatutako arkitekturan oinarrituta, hari anitzeko hariekin eta sare-eskaerak modu asinkronoan prozesatzeko.

Nagusia Ezaugarriak Deno:

  • Segurtasunera bideratutako konfigurazio lehenetsia. Fitxategien sarbidea, sareak eta ingurune-aldagaietarako sarbidea lehenespenez desgaituta daude eta esplizituki gaituta egon behar dute. Aplikazioak lehenespenez sandbox ingurune isolatuetan exekutatzen dira eta ezin dira sistemaren gaitasunetara sartu baimen esplizituak eman gabe;
  • JavaScript-etik haratago TypeScript-erako laguntza integratua. TypeScript konpilatzaile estandarra motak egiaztatzeko eta JavaScript sortzeko erabiltzen da, eta horrek errendimendu arrakastatsua dakar V8-n JavaScript analizatzearekin alderatuta. Etorkizunean, TypeScript motak egiaztatzeko sistemaren inplementazio propioa prestatzeko asmoa dugu, eta TypeScript prozesatzeko errendimendua neurri handi batean hobetuko du;
  • Exekuzio-denbora fitxategi exekutagarri autonomo bakar baten moduan dator ("deno"). Deno erabiliz aplikazioak exekutatzeko nahikoa da deskargatu bere plataformarako fitxategi exekutagarri bat dago, 20 MB ingurukoa, kanpoko menpekotasunik ez duena eta sisteman instalazio berezirik behar ez duena. Gainera, deno ez da aplikazio monolitiko bat, Rust-eko kaxa paketeen bilduma bat da (deno_core, herdoildua_v8), bereiz erabil daitekeena;
  • Programa abiaraztean, baita moduluak kargatzeko ere, URL helbidea erabil dezakezu. Adibidez, welcome.js programa exekutatzeko, "deno https://deno.land/std/examples/welcome.js" komandoa erabil dezakezu. Kanpoko baliabideen kodea deskargatu eta cachean gordetzen da sistema lokalean, baina ez da inoiz automatikoki eguneratzen (eguneratzeko, aplikazioa esplizituki exekutatu behar da "--reload" markarekin);
  • Aplikazioetan HTTP bidez sareko eskaeren tratamendu eraginkorra; plataforma errendimendu handiko sareko aplikazioak sortzeko diseinatuta dago;
  • Denon zein ohiko web arakatzaile batean exekuta daitezkeen web aplikazio unibertsalak sortzeko gaitasuna;
  • erabilgarritasuna moduluen multzo estandarra, zeinaren erabilerak ez du kanpoko menpekotasunekin lotzea eskatzen. Bilduma estandarreko moduluek auditoretza eta bateragarritasun proba osagarriak egin dituzte;
  • Exekuzio-denboraz gain, Deno plataformak paketeen kudeatzaile gisa ere jarduten du eta kodearen barruko URL bidez moduluetara sartzeko aukera ematen du. Adibidez, modulu bat kargatzeko, kodean zehaztu dezakezu "inportatu * "https://deno.land/std/log/mod.ts"-tik erregistro gisa. URL bidez kanpoko zerbitzarietatik deskargatutako fitxategiak cachean gordetzen dira. Moduluaren bertsioekin lotzea URLaren barruan bertsio-zenbakiak zehaztuta zehazten da, adibidez, "https://unpkg.com/[posta elektroniko bidez babestua]/dist/liltest.js";
  • Egiturak mendekotasun-ikuskapen sistema integratua (Β«deno infoΒ» komandoa) eta kodea formateatzeko utilitate bat (deno fmt) barne hartzen ditu;
  • Aplikazio-script guztiak JavaScript fitxategi batean konbina daitezke.

Node.js-en desberdintasunak:

  • Denok ez du npm pakete kudeatzailea erabiltzen
    eta ez dago biltegietara lotuta, moduluak URL baten bidez edo fitxategi-bide baten bidez zuzentzen dira, eta moduluak beraiek edozein webgunetan jar daitezke;
  • Denok ez du "package.json" erabiltzen moduluak definitzeko;
  • API desberdintasuna, Denoko ekintza asinkrono guztiek promesa bat itzultzen dute;
  • Denok fitxategi, sare eta ingurune-aldagaietarako beharrezko baimen guztien definizio esplizitua eskatzen du;
  • Kudeatzaileekin ematen ez diren akats guztiek aplikazioa amaitzea dakar;
  • Denok ECMAScript modulu sistema erabiltzen du eta ez du onartzen require();
  • Denoren HTTP zerbitzaria TypeScript-en idatzita dago eta jatorrizko TCP socketen gainean exekutatzen da, eta Node.js HTTP zerbitzaria C-n idatzita dago eta JavaScript-erako loturak eskaintzen ditu. Denoren garatzaileek TCP socket geruza osoa optimizatzera eta interfaze orokorrago bat eskaintzera bideratu dira. Deno HTTP zerbitzariak errendimendu txikiagoa eskaintzen du, baina aurreikus daitekeen latentzia baxua bermatzen du. Adibidez, proban, Deno HTTP zerbitzarian oinarritutako aplikazio sinple batek segundoko 25 mila eskaera prozesatu ahal izan zituen 1.3 milisegundoko gehienezko latentziarekin. Node.js-en, antzeko aplikazio batek segundoko 34 mila eskaera prozesatu zituen, baina latentzia 2 eta 300 milisegundo bitartekoa zen.
  • Deno ez da Node.js (NPM) paketeekin bateragarria, baina aparte garatzen ari da tarteko geruza Node.js liburutegi estandarrarekin bateragarri izateko, garatzen doan heinean, Node.js-erako idatzitako gero eta aplikazio gehiago exekutatu ahal izango dira Denon.
  • Iturria: opennet.ru

Gehitu iruzkin berria