Human sa duha ka tuig nga kalamboan unang mayor nga pagpagawas , usa ka plataporma alang sa stand-alone nga pagpatuman sa mga aplikasyon sa JavaScript ug TypeScript, nga magamit sa paghimo og mga tigdumala nga modagan sa server. Ang plataporma gimugna ni Ryan Dahl (), tiglalang sa Node.js. Sama sa Node.js, si Deno naggamit ug JavaScript engine , nga gigamit usab sa mga browser nga nakabase sa Chromium. Sa samang higayon, ang Deno dili usa ka tinidor sa Node.js, apan usa ka bag-ong proyekto nga gimugna gikan sa wala. Kodigo sa proyekto ubos sa lisensya sa MIT. Mga asembliya alang sa Linux, Windows и macOS.
Ang mahinungdanong numero sa bersyon nalangkit sa pagpalig-on sa mga API sa Deno namespace, nga maoy responsable sa interaksyon sa mga aplikasyon sa OS. Mga interface sa software nga hangtod karon , gitago sa default ug magamit ra kung nagdagan sa "--unstable" mode. Samtang naporma ang mga bag-ong bersyon, ang ingon nga mga API anam-anam nga mahimong lig-on. Ang API sa pangkalibutanon nga namespace, nga naglakip sa komon nga mga gimbuhaton sama sa setTimeout() ug fetch(), mao ang labing duol nga posible sa API sa conventional web browsers ug naugmad sumala sa mga sumbanan sa Web alang sa mga browser. Ang mga API nga gihatag sa Rust, nga gigamit direkta sa platform code, ingon man ang interface alang sa pagpalambo sa mga plugins alang sa Deno runtime, wala pa mapalig-on ug nagpadayon sa pag-uswag.
Ang yawe nga motibo sa paghimo og bag-ong JavaScript nga plataporma mao ang tinguha nga mawagtang ang mga sayop nga konsepto, sa arkitektura sa Node.js, ug maghatag sa mga tiggamit og mas luwas nga palibot. Aron mapauswag ang seguridad, ang V8 nga makina gisulat sa Rust, nga naglikay sa daghang mga kahuyangan nga naggikan sa ubos nga lebel sa pagmaniobra sa panumduman, sama sa pagkahuman sa libre nga pag-access, null pointer dereferences, ug buffer overruns. Ang plataporma gigamit sa pagproseso sa mga hangyo sa non-blocking mode , gisulat usab sa Rust. Gitugotan ka sa Tokio nga maghimo mga aplikasyon nga adunay taas nga pasundayag base sa arkitektura nga gipadagan sa panghitabo, pagsuporta sa mga hangyo sa multi-threading ug pagproseso sa network sa asynchronous mode.
nag-unang Deno:
- Default nga configuration nga nakabase sa seguridad. Ang pag-access sa file, networking, ug pag-access sa mga variable sa palibot gi-disable pinaagi sa default ug kinahanglan nga klaro nga magamit. Ang mga aplikasyon pinaagi sa default nagdagan sa nahilit nga mga palibot sa sandbox ug dili maka-access sa mga kapabilidad sa sistema nga wala maghatag klaro nga pagtugot;
- Gitukod-sa suporta alang sa TypeScript lapas sa JavaScript. Ang standard TypeScript compiler gigamit sa pagsusi sa mga tipo ug pagmugna og JavaScript, nga mosangpot sa performance hit itandi sa JavaScript parsing sa V8. Sa umaabot, kami nagplano sa pag-andam sa among kaugalingong pagpatuman sa TypeScript type checking system, nga makapauswag sa TypeScript processing performance sa usa ka han-ay sa gidak-on;
- Ang runtime moabut sa porma sa usa ka self-contained executable file ("deno"). Ang pagpadagan sa mga aplikasyon gamit ang Deno igo na alang sa plataporma niini adunay usa ka executable nga file, mga 20 MB ang gidak-on, nga walay mga dependency sa gawas ug wala magkinahanglan og bisan unsang espesyal nga pag-instalar sa sistema. Dugang pa, ang deno dili usa ka monolithic nga aplikasyon, apan usa ka koleksyon sa mga pakete sa crate sa Rust (, ), nga mahimong gamiton nga gilain;
- Sa pagsugod sa programa, ingon man sa pag-load sa mga module, mahimo nimong gamiton ang URL addressing. Pananglitan, sa pagpadagan sa welcome.js nga programa, mahimo nimong gamiton ang command "deno https://deno.land/std/examples/welcome.js". Ang code gikan sa gawas nga mga kahinguhaan gi-download ug gi-cache sa lokal nga sistema, apan dili awtomatik nga gi-update (ang pag-update nanginahanglan ug klaro nga pagpadagan sa aplikasyon gamit ang "--reload" nga bandila);
- Episyente nga pagproseso sa mga hangyo sa network pinaagi sa HTTP sa mga aplikasyon; ang plataporma gidisenyo alang sa paghimo og mga aplikasyon sa network nga adunay taas nga performance;
- Ang abilidad sa paghimo sa unibersal nga mga aplikasyon sa web nga mahimong ipatuman sa Deno ug sa usa ka regular nga web browser;
- anaa , ang paggamit niini wala magkinahanglan og pagbugkos sa mga eksternal nga dependency. Ang mga module gikan sa standard nga koleksyon miagi sa dugang nga audit ug compatibility testing;
- Dugang pa sa runtime, ang Deno platform naglihok usab isip package manager ug nagtugot kanimo sa pag-access sa mga module pinaagi sa URL sulod sa code. Pananglitan, aron ma-load ang usa ka module, mahimo nimong itakda sa code nga "import * ingon log gikan sa "https://deno.land/std/log/mod.ts". Ang mga file nga na-download gikan sa mga eksternal nga server pinaagi sa URL gi-cache. Ang pag-link sa mga bersyon sa module gitino pinaagi sa pagtino sa mga numero sa bersyon sa sulod sa URL, pananglitan, "https://unpkg.com/liltest@0.0.5/dist";liltest.
- Ang istruktura naglakip sa usa ka integrated dependency inspection system (ang "deno info" command) ug usa ka utility alang sa code formatting (deno fmt);
- Ang tanan nga mga script sa aplikasyon mahimong mahiusa sa usa ka file sa JavaScript.
Mga kalainan gikan sa Node.js:
- Si Deno wala mogamit sa npm package manager
ug wala gihigot sa mga repositoryo, ang mga module gitumong pinaagi sa URL o pinaagi sa file path, ug ang mga module mismo mahimong ibutang sa bisan unsang website; - Si Deno wala mogamit sa "package.json" aron ipasabut ang mga module;
- Ang kalainan sa API, ang tanan nga mga asynchronous nga aksyon sa Deno nagbalik usa ka saad;
- Ang Deno nanginahanglan ug tin-aw nga kahulugan sa tanan nga kinahanglan nga pagtugot alang sa mga file, network ug mga variable sa palibot;
- Ang tanan nga mga sayup nga wala gihatag sa mga tigdumala nagdala sa pagtapos sa aplikasyon;
- Gigamit ni Deno ang sistema sa module sa ECMAScript ug wala gisuportahan ang kinahanglan ();
- Ang built-in nga HTTP server ni Deno kay gisulat sa TypeScript ug nagdagan sa ibabaw sa lumad nga TCP socket, samtang ang Node.js HTTP server kay gisulat sa C ug naghatag ug binding para sa JavaScript. Ang mga developers ni Deno naka-focus sa pag-optimize sa tibuok TCP socket layer ug paghatag og mas kinatibuk-ang interface. Ang Deno HTTP Server naghatag og mas ubos nga throughput apan naggarantiya sa matag-an nga ubos nga latency. Pananglitan, sa pagsulay, ang usa ka yano nga aplikasyon nga gibase sa Deno HTTP server nakahimo sa pagproseso sa 25 ka libo nga mga hangyo matag segundo nga adunay labing taas nga latency nga 1.3 milliseconds. Sa Node.js, ang susama nga aplikasyon nagproseso sa 34 ka libo nga mga hangyo matag segundo, apan ang mga latency gikan sa 2 ug 300 milliseconds.
- Ang Deno dili compatible sa mga package para sa Node.js (NPM), apan gilain nga gi-develop alang sa pagpahiuyon sa standard Node.js library, samtang kini nag-uswag, mas daghang aplikasyon nga gisulat alang sa Node.js ang makahimo sa pagdagan sa Deno.
Source: opennet.ru
