Thaisbean ùghdar Node.js an àrd-ùrlar tèarainte JavaScript Deno 1.0

Às deidh dà bhliadhna de leasachadh air a thaisbeanadh chiad fhoillseachadh mòr Chan eil 1.0, àrd-ùrlar airson tagraidhean a chuir an gnìomh leis fhèin ann an JavaScript agus TypeScript, a dh'fhaodar a chleachdadh gus luchd-làimhseachaidh a chruthachadh a bhios a 'ruith air an fhrithealaiche. Tha an àrd-ùrlar air a leasachadh le Ryan Dahl (Ryan Dahl), neach-cruthachaidh Node.js. Coltach ri Node.js, bidh Deno a’ cleachdadh einnsean JavaScript V8, a tha cuideachd air a chleachdadh ann am brobhsairean stèidhichte air Chromium. Aig an aon àm, chan e forc de Node.js a th’ ann an Deno, ach is e pròiseact ùr a th’ ann a chaidh a chruthachadh bhon fhìor thoiseach. Còd a ' phròiseact air a sgaoileadh le fo chead MIT. Co-chruinneachaidhean ullaichte airson Linux, Windows agus macOS.

Tha an àireamh tionndaidh chudromach co-cheangailte ri seasmhachd nan APIan ann an àrainn ainmean Deno, air a bheil uallach airson eadar-obrachadh thagraidhean leis an OS. Eadar-aghaidh bathar-bog a tha gu ruige seo nach seasmhach, falaichte gu bunaiteach agus chan fhaighear iad ach nuair a bhios iad a’ ruith ann am modh “--unstable”. Mar a bhios dreachan ùra gan cruthachadh, fàsaidh APIan mar sin seasmhach mean air mhean. Tha an API anns an ainm-àite cruinneil, a tha a’ toirt a-steach gnìomhan cumanta leithid setTimeout() agus fetch(), cho faisg ‘s a ghabhas air API brobhsairean lìn àbhaisteach agus air a leasachadh a rèir inbhean lìn airson brobhsairean. Chan eil na APIan a thug Rust seachad, a tha air an cleachdadh gu dìreach ann an còd an àrd-ùrlair, a bharrachd air an eadar-aghaidh airson plugins a leasachadh airson Deno runtime, air an socrachadh fhathast agus a ’leantainn air adhart a’ leasachadh.

B’ e na prìomh adhbharan airson àrd-ùrlar JavaScript ùr a chruthachadh am miann cuir às do mhearachdan bun-bheachdail, air aideachadh ann an ailtireachd Node.js, agus a’ toirt àrainneachd nas tèarainte do luchd-cleachdaidh. Gus tèarainteachd a leasachadh, tha an einnsean V8 air a sgrìobhadh ann an Rust, a tha a’ seachnadh mòran de na so-leòntachd a thig bho làimhseachadh cuimhne aig ìre ìosal, leithid ruigsinneachd às deidh an-asgaidh, ro-aithrisean puing null, agus cus bufair. Tha an àrd-ùrlar air a chleachdadh gus iarrtasan a làimhseachadh ann am modh neo-bacadh Tokio, cuideachd sgrìobhte ann an Rust. Leigidh Tokio leat tagraidhean àrd-choileanaidh a chruthachadh stèidhichte air ailtireachd air a stiùireadh le tachartas, a’ toirt taic do dh’ iarrtasan lìonra ioma-snàthainn agus giullachd ann am modh asyncronach.

prìomh feartan Deo:

  • Suidheachadh bunaiteach stèidhichte air tèarainteachd. Tha ruigsinneachd faidhle, lìonrachadh, agus ruigsinneachd gu caochladairean àrainneachd ciorramach gu bunaiteach agus feumaidh iad a bhith air an comasachadh gu soilleir. Bidh tagraidhean a’ ruith gu bunaiteach ann an àrainneachdan bogsa gainmhich iomallach agus chan urrainn dhaibh faighinn gu comasan siostam gun a bhith a’ toirt seachad ceadan soilleir;
  • Taic togte airson TypeScript taobh a-muigh JavaScript. Tha an inneal-cruinneachaidh TypeScript àbhaisteach air a chleachdadh gus seòrsaichean a sgrùdadh agus JavaScript a ghineadh, a tha a’ leantainn gu buille coileanaidh an coimeas ri parsadh JavaScript ann an V8. Anns an àm ri teachd, tha sinn an dùil ar buileachadh fhèin ullachadh den t-siostam sgrùdaidh seòrsa TypeScript, a leasaicheas coileanadh giollachd TypeScript le òrdugh meudachd;
  • Tha runtime a’ tighinn ann an cruth aon fhaidhle so-ghnìomhaichte fèin-chumanta (“deno”). Gus tagraidhean a ruith le Deno tha e gu leòr luchdachadh sìos airson an àrd-ùrlar aige tha aon fhaidhle so-ghnìomhaichte, timcheall air 20 MB ann am meud, aig nach eil eisimeileachd bhon taobh a-muigh agus nach eil feumach air stàladh sònraichte sam bith air an t-siostam. A bharrachd air an sin, chan e tagradh monolithic a th’ ann an deno, ach tha e na chruinneachadh de phasgan crate ann an Rust (deno_core, meirgeach_v8), a dh'fhaodar a chleachdadh air leth;
  • Nuair a thòisicheas tu air a’ phrògram, a bharrachd air modalan a luchdachadh, faodaidh tu seòladh URL a chleachdadh. Mar eisimpleir, gus am prògram welcome.js a ruith, faodaidh tu an àithne “deno https://deno.land/std/examples/welcome.js” a chleachdadh. Tha còd bho ghoireasan taobh a-muigh air a luchdachadh sìos agus air a thasgadh air an t-siostam ionadail, ach cha bhith e air ùrachadh gu fèin-ghluasadach (feumaidh ùrachadh an aplacaid a ruith gu soilleir leis a’ bhratach “--reload”);
  • Giullachd èifeachdach air iarrtasan lìonra tro HTTP ann an tagraidhean; tha an àrd-ùrlar air a dhealbhadh gus tagraidhean lìonra àrd-choileanaidh a chruthachadh;
  • Comas air tagraidhean lìn uile-choitcheann a chruthachadh a ghabhas an cur an gnìomh an dà chuid ann an Deno agus ann am brobhsair lìn cunbhalach;
  • ri fhaotainn seata àbhaisteach de mhodalan, nach eil feum air a chleachdadh ceangailte ri eisimeileachd bhon taobh a-muigh. Tha modalan bhon chruinneachadh àbhaisteach air a dhol tro sgrùdadh a bharrachd agus deuchainn co-chòrdalachd;
  • A bharrachd air ùine ruith, bidh an àrd-ùrlar Deno cuideachd ag obair mar mhanaidsear pacaid agus leigidh e leat faighinn gu modalan le URL taobh a-staigh a’ chòd. Mar eisimpleir, gus modal a luchdachadh, faodaidh tu sònrachadh sa chòd “Import * mar log bho“ https://deno.land/std/log/mod.ts ”. Tha faidhlichean air an luchdachadh sìos bho luchd-frithealaidh taobh a-muigh tro URL air an tasgadh. Tha ceangal ri dreachan modal air a dhearbhadh le bhith a’ sònrachadh àireamhan dreach taobh a-staigh an URL, mar eisimpleir, “https://unpkg.com/[post-d fo dhìon]/dist/liltest.js";
  • Tha an structar a’ toirt a-steach siostam sgrùdaidh eisimeileachd aonaichte (an àithne “deno info”) agus goireas airson cruth còd (deno fmt);
  • Faodar a h-uile sgriobt tagraidh a chur còmhla ann an aon fhaidhle JavaScript.

Eadar-dhealachaidhean bho Node.js:

  • Cha bhith Deno a’ cleachdadh manaidsear pacaid npm
    agus nach eil e ceangailte ri tasgaidhean, thèid dèiligeadh ri modalan tro URL no le slighe faidhle, agus faodar na modalan fhèin a chuir air làrach-lìn sam bith;
  • Cha chleachd Deno "package.json" gus modalan a mhìneachadh;
  • Eadar-dhealachadh API, bidh a h-uile gnìomh asyncronach ann an Deno a ’tilleadh gealladh;
  • Feumaidh Deno mìneachadh soilleir air a h-uile cead riatanach airson faidhlichean, caochladairean lìonra agus àrainneachd;
  • Bidh a h-uile mearachd nach eil air a thoirt seachad le luchd-làimhseachaidh a’ leantainn gu crìoch a chuir air an tagradh;
  • Bidh Deno a’ cleachdadh siostam modal ECMAScript agus chan eil e a’ toirt taic do fheum();
  • Tha frithealaiche HTTP togte Deno air a sgrìobhadh ann an TypeScript agus a’ ruith air mullach socaidean TCP dùthchasach, fhad ‘s a tha frithealaiche HTTP Node.js sgrìobhte ann an C agus a’ toirt seachad ceanglachan airson JavaScript. Tha luchd-leasachaidh Deno air fòcas a chuir air a bhith a’ dèanamh an ìre as fheàrr den t-sreath socaid TCP gu lèir agus a’ toirt seachad eadar-aghaidh nas fharsainge. Bidh Deno HTTP Server a ’toirt seachad trochur nas ìsle ach a’ gealltainn latency ìosal a tha dùil. Mar eisimpleir, anns an deuchainn, bha e comasach do thagradh sìmplidh stèidhichte air frithealaiche Deno HTTP 25 mìle iarrtas gach diog a phròiseasadh le latency as àirde de 1.3 milliseconds. Ann an Node.js, bha tagradh coltach ris a’ giullachd 34 mìle iarrtas gach diog, ach bha latencies eadar 2 agus 300 milliseconds.
  • Chan eil Deno co-chòrdail ri pacaidean airson Node.js (NPM), ach thathas ga leasachadh air leth eadar-fhigheadair airson co-chòrdalachd le leabharlann àbhaisteach Node.js, mar a bhios e a’ leasachadh, bidh e comasach dha barrachd is barrachd thagraidhean sgrìobhte airson Node.js ruith ann an Deno.
  • Source: fosgailtenet.ru

Cuir beachd ann