Deno proiektua Node.js-en antzeko JavaScript plataforma seguru bat garatzen ari da

Eskuragarri proiektuaren kaleratzea Denoa 0.33, Javascript-en eta TypeScript-en aplikazio autonomoen exekuziorako Node.js antzeko plataforma bat eskaintzen duena, arakatzaile bati lotuta egon gabe aplikazioak exekutatzeko erabil daitekeena, esate baterako, zerbitzarian exekutatzen diren kudeatzaileak sortzeko. Denok JavaScript motor bat erabiltzen du V8, Chromium proiektuan oinarritutako Node.js eta arakatzaileetan ere erabiltzen dena. Proiektuaren kodea arabera banatuta MIT lizentziapean. Proiektua Ryan Dahl-ek garatzen ari da (Ryan Dahl), Node.js JavaScript plataformaren sortzailea.

JavaScript-erako exekuzio-denbora berri bat sortzearen helburu nagusietako bat ingurune seguruagoa eskaintzea da. Segurtasuna hobetzeko, V8 motorra Rust-en idatzita dago, eta horrek maila baxuko memoriaren manipulaziotik sortzen diren ahultasun asko saihesten ditu, hala nola, doako 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;
  • JavaScript-ez gain TypeScript lengoaiaren euskarria integratua;
  • Exekuzio-denbora fitxategi exekutagarri autonomo bakar baten moduan dator ("deno"). Deno erabiliz aplikazioak exekutatzeko nahikoa da deskargatu bere plataformarako fitxategi exekutagarri bat, 10 MB ingurukoa, kanpoko menpekotasunik ez duena eta sisteman instalazio berezirik behar ez duena;
  • 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;
  • 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) ditu.
  • Aplikazioen garatzaileentzat proposatu auditoria eta bateragarritasun proba osagarriak egin dituzten modulu estandar multzoa;
  • 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().

Iturria: opennet.ru

Gehitu iruzkin berria