Ang Deno JavaScript nga plataporma nahiuyon sa NPM modules

Ang Deno 1.28 gipagawas, usa ka balangkas alang sa sandboxing JavaScript ug TypeScript nga mga aplikasyon nga magamit sa paghimo sa mga tigdumala sa kilid sa server. Ang plataporma gimugna ni Ryan Dahl, ang tiglalang sa Node.js. Sama sa Node.js, gigamit ni Deno ang V8 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. Ang code sa proyekto giapod-apod ubos sa lisensya sa MIT. Ang mga pagtukod giandam alang sa Linux, Windows ug macOS.

Ang proyekto sa Deno gimugna aron mahatagan ang mga tiggamit og mas luwas nga palibot ug wagtangon ang mga sayop nga konsepto sa arkitektura sa Node.js. 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 memorya. Aron maproseso ang mga hangyo sa usa ka non-blocking mode, ang Tokio platform, nga gisulat usab sa Rust, gigamit. 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.

Usa ka hinungdanon nga pagbag-o sa bag-ong pagpagawas mao ang pagpalig-on sa pagkaangay sa mga pakete nga gi-host sa repositoryo sa NPM, nga gitugotan si Deno nga magamit ang labaw sa 1.3 milyon nga mga module nga gihimo alang sa platform sa Node.js. Pananglitan, ang Deno-based nga mga aplikasyon makagamit na karon sa padayon nga data access modules sama sa Prisma, Mongoose ug MySQL, ingon man sa front-end frameworks sama sa React ug Vue. Ang ubang NPM modules nagpabilin gihapon nga dili compatible sa Deno, pananglitan tungod sa mga binding sa Node.js-specific environment nga mga elemento sama sa package.json file. Dili pa usab posible nga gamiton ang "deno compile" nga mando sa mga module sa NPM. Ang umaabot nga mga pagpagawas nagplano sa pagsulbad niini nga mga incompatibilities ug mga limitasyon.

Ang suporta alang sa kaniadto gigamit nga ECMAScript module system ni Deno ug Web API nga modelo gipabilin sa samang lebel, ug ang pamilyar nga URL-based loading scheme ni Deno gigamit sa pag-import sa NPM modules. Aron ma-access ang mga module sa NPM, adunay usa ka espesyal nga prefix sa URL nga "npm:", nga magamit sa parehas nga paagi sama sa regular nga mga module sa Deno. Pananglitan, sa pag-import og NPM module, mahimo nimong ipiho ang 'import { chalk } gikan sa "npm: chalk@5";', ug sa pagpadagan og NPM script gikan sa command line - "deno run --allow-env --allow -basaha ang npm:create- vite-extra.

Ang paggamit sa mga pakete sa NPM sa Deno labi ka dali kaysa sa Node.js, tungod kay wala’y kinahanglan nga pre-install nga mga module (gi-install ang mga module sa una nga paglansad sa aplikasyon), wala’y package.json file, ug wala’y default node_modules direktoryo (ang mga module gi-cache sa gipaambit nga direktoryo, apan posible nga ibalik ang daan nga pamatasan gamit ang kapilian nga "--node-modules-dir").

Ang mga aplikasyon nga nakabase sa NPM nagpabilin ang katakus sa paggamit sa kontrol sa pag-access, pag-inusara, ug mga advanced nga kapabilidad nga sensitibo sa seguridad ni Deno. Aron masumpo ang mga pag-atake pinaagi sa kuwestiyonableng mga dependency, gibabagan ni Deno pinaagi sa default ang tanang pagsulay nga maka-access sa sistema gikan sa mga dependency ug nagpakita og pasidaan bahin sa mga nakitang problema. Pananglitan, kung ang usa ka module mosulay sa pag-angkon og access sa pagsulat sa /usr/bin/, usa ka hangyo sa kumpirmasyon alang niini nga operasyon ang ipakita: deno run npm:install-malware ⚠️ β”Œ Deno requests write access sa /usr/bin/. β”œ Gihangyo sa `install-malware` β”œ Dagan pag-usab gamit ang --allow-write aron malaktawan kini nga prompt. β”” Tugoti? [y/n] (y = oo, tugoti; n = dili, ilimod) >

Non-NPM improvements sa bag-ong bersyon naglakip sa pag-update sa V8 engine sa pagpagawas sa 10.9, automatic detection sa mga file nga adunay mga kandado, stabilization sa Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() ug Deno API. .uid(), pagdugang ug bag-ong dili lig-on nga API Deno.Command() para sa pagpadagan sa mga sugo (universal nga puli sa Deno.spawn, Deno.spawnSync ug Deno.spawnChild).

Panguna nga mga bahin sa 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. Para sa type checking ug JavaScript generation, gigamit ang standard TypeScript compiler, nga mosangpot sa pagkunhod sa performance kon itandi sa JavaScript parsing sa V8;
  • Ang runtime moabut sa porma sa usa ka self-contained executable file ("deno"). Aron makadagan ang mga aplikasyon gamit ang Deno, kinahanglan nimo nga mag-download usa ka executable file alang sa imong platform, mga 30 MB ang gidak-on, nga wala’y mga dependency sa gawas ug wala magkinahanglan bisan unsang espesyal nga pag-install sa sistema. Dugang pa, ang deno dili usa ka monolithic nga aplikasyon, apan usa ka koleksyon sa mga pakete sa Rust crate (deno_core, rusty_v8), nga mahimong magamit 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;
  • Ang presensya sa usa ka standard nga set sa mga module, 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 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". Gi-cache ang mga file nga gi-download gikan sa mga external server pinaagi sa URL. Ang pagbugkos sa mga bersyon sa module gitino pinaagi sa pagtino sa mga numero sa bersyon sa sulod sa URL, pananglitan, "https://unpkg.com/[protektado sa email]/dist/liltest.js";
  • 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.

Source: opennet.ru

Idugang sa usa ka comment