Umbhali weNode.js ubonise iqonga elikhuselekileyo leJavaScript iDeno 1.0

Emva kweminyaka emibini yophuhliso thaca ukukhululwa okukhulu kokuqala Ideno 1.0, iqonga lokuphunyezwa kokuma kwedwa kwezicelo kwiJavaScript kunye ne-TypeScript, enokusetyenziswa ukwenza abaphathi abaqhuba kumncedisi. Iqonga liphuhliswa nguRyan Dahl (URyan Dahl), umdali weNode.js. NjengeNode.js, iDeno isebenzisa injini yeJavaScript V8, ekwasetyenziswa kwizikhangeli ezisekwe kwiChromium. Kwangaxeshanye, iDeno ayiyofolokhwe yeNode.js, kodwa yiprojekthi entsha eyenziwe ukusuka ekuqaleni. Ikhowudi yeprojekthi isasazwa ngu phantsi kwelayisenisi ye-MIT. Iindibano ilungisiwe yeLinux, Windows kunye neMacOS.

Inombolo yenguqulelo ebalulekileyo idityaniswa nokuzinziswa kwee-APIs kwisithuba samagama seDeno, ezinoxanduva lokusebenzisana kwezicelo ne-OS. Ujongano lwesoftware olunayo ukuza kuthi ga ngoku azinziswanga, zifihlwa ngokungagqibekanga kwaye zifumaneka kuphela xa zisebenza kwimo ethi "--unstable". Njengoko kusenziwa iinguqulelo ezintsha, ezo APIs ziya kuzinza ngokuthe ngcembe. I-API kwindawo yamagama yehlabathi, equka imisebenzi eqhelekileyo efana ne-setTimeout () kunye ne-fetch (), isondele kangangoko kwi-API yeziphequluli zewebhu eziqhelekileyo kwaye iphuhliswe ngokuhambelana nemigangatho yeWebhu yeziphequluli. Ii-APIs ezibonelelwa nguRust, ezisetyenziswa ngokuthe ngqo kwikhowudi yesikhulumi, kunye ne-interface yokuphuhlisa iiplagi ze-Deno runtime, azikaqiniswa kwaye ziqhubeke nokuphuhlisa.

Ezona njongo ziphambili zokudala iqonga elitsha leJavaScript yayingumnqweno wokuphelisa iimpazamo zengqikelelo, yavuma kuyilo lweNode.js, kwaye unike abasebenzisi indawo ekhuselekileyo. Ukuphucula ukhuseleko, i-injini ye-V8 ibhalwe kwi-Rust, enqanda ubuthathaka obuninzi obuvela kulawulo lwememori ekwinqanaba elisezantsi, elifana nokufikelela emva kokukhululeka, ukuchaswa kwe-null pointer, kunye ne-buffer overruns. Iqonga lisetyenziselwa ukucubungula izicelo kwimodi yokungathinteli Tokio, nayo ibhalwe kwiRust. I-Tokio ikuvumela ukuba wenze izicelo zokusebenza eziphezulu ezisekelwe kwi-architecture eqhutywa yisiganeko, ukuxhasa ukuxutywa kwezinto ezininzi kunye nokucubungula izicelo zenethiwekhi kwimodi ye-asynchronous.

Siseko Iimbonakalo I-Deno:

  • Uqwalaselo olungagqibekanga olusekwe kukhuseleko. Ufikelelo lwefayile, uthungelwano, kunye nofikelelo kwizinto eziguquguqukayo zokusingqongileyo zivaliwe ngokungagqibekanga kwaye kufuneka zenziwe zisebenze ngokuthe gca. Usetyenziso ngokungagqibekanga luqhutywa kwindawo ekwanti yebhokisi yesanti kwaye ayikwazi ukufikelela kubuchule benkqubo ngaphandle kokunika iimvume ezicacileyo;
  • Inkxaso eyakhelwe-ngaphakathi ye-TypeScript ngaphaya kweJavaScript. Umqokeleli we-TypeScript oqhelekileyo usetyenziselwa ukujonga iindidi kunye nokuvelisa iJavaScript, ekhokelela ekusebenzeni kakuhle xa kuthelekiswa nokwahlulahlula kweJavaScript kwi-V8. Kwixesha elizayo, siceba ukulungiselela ukuphunyezwa kwethu uhlobo lwe-TypeScript yokujonga inkqubo, eya kuphucula ukusebenza kwe-TypeScript yokucubungula ngomyalelo wobukhulu;
  • Ixesha lokuqhuba liza ngokohlobo lwefayile enye ezimeleyo ephunyezwayo (β€œdeno”). Ukusebenzisa usetyenziso usebenzisa iDeno kwanele khuphela kwiqonga layo kukho ifayile enye ephunyeziweyo, malunga ne-20 MB ngobukhulu, engenazo ukuxhomekeka kwangaphandle kwaye ayifuni naluphi na ukufakelwa okukhethekileyo kwinkqubo. Ngapha koko, ideno ayisosicelo se-monolithic, kodwa yingqokelela yeepakethe zekhreyithi eRust (ideno_core, umhlwa_v8), enokusetyenziswa ngokwahlukileyo;
  • Xa uqalisa inkqubo, kunye nokulayisha iimodyuli, ungasebenzisa idilesi ye-URL. Umzekelo, ukuqhuba inkqubo ye-welcome.js, ungasebenzisa umyalelo othi "deno https://deno.land/std/examples/welcome.js". Ikhowudi esuka kwimithombo yangaphandle ikhutshelwa kwaye igcinwe kwinkqubo yendawo, kodwa ayihlaziywa ngokuzenzekelayo (uhlaziyo lufuna ukuqhuba ngokucacileyo usetyenziso nge "--reload" iflegi);
  • Ukusetyenzwa ngokufanelekileyo kwezicelo zenethiwekhi nge-HTTP kwizicelo; iqonga lenzelwe ukudala usetyenziso oluphezulu lwenethiwekhi;
  • Ukukwazi ukwenza izicelo zewebhu jikelele ezinokuthi zenziwe zombini kwiDeno kunye nakwi-browser yewebhu eqhelekileyo;
  • Ukufumaneka iseti esemgangathweni yeemodyuli, ukusetyenziswa okungafuneki ukubophelela kukuxhomekeka kwangaphandle. Iimodyuli ezisuka kwingqokelela esemgangathweni ziye zenziwa uphicotho olongezelelweyo kunye novavanyo lokuhambelana;
  • Ukongeza kwixesha lokusebenza, iqonga leDeno likwasebenza njengomphathi wephakheji kwaye ikuvumela ukuba ufikelele kwiimodyuli nge-URL ngaphakathi kwekhowudi. Umzekelo, ukulayisha imodyuli, ungacacisa kwikhowudi "import * njengelogi ukusuka "https://deno.land/std/log/mod.ts". Iifayile ezikhutshelweyo kwiiseva zangaphandle nge-URL zigcinwe kwi-cache. Ukubophelela kwiinguqulelo zemodyuli kumiselwa ngokuchaza amanani oguqulelo ngaphakathi kwe-URL, umzekelo, β€œhttps://unpkg.com/[imeyile ikhuselwe]/dist/liltest.js";
  • Ulwakhiwo lubandakanya inkqubo yokuhlola ukuxhomekeka okudibeneyo (umyalelo "we-deno info") kunye nesixhobo sokufomatha ikhowudi (deno fmt);
  • Zonke izikripthi zesicelo zinokudityaniswa zibe yifayile yeJavaScript enye.

Umahluko kwi-Node.js:

  • I-Deno ayisebenzisi umphathi wephakheji ye-npm
    kwaye ayibotshelelwanga kwii-repositories, iimodyuli zibhekiswe nge-URL okanye ngendlela yefayile, kwaye iimodyuli ngokwazo zinokubekwa kuyo nayiphi na iwebhusayithi;
  • IDeno ayisebenzisi "package.json" ukuchaza iimodyuli;
  • Umahluko we-API, zonke iintshukumo ezingahambelaniyo kwiDeno zibuyisela isithembiso;
  • I-Deno ifuna inkcazo ecacileyo yazo zonke iimvume eziyimfuneko zeefayile, inethiwekhi kunye noguquko lokusingqongileyo;
  • Zonke iimpazamo ezingabonelelwanga ngabaphathi zikhokelela ekuphelisweni kwesicelo;
  • IDeno isebenzisa inkqubo yemodyuli yeECMAScript kwaye ayixhasi ifuna();
  • Iseva ye-HTTP eyakhelwe-ngaphakathi ye-Deno ibhalwe kwi-TypeScript kwaye isebenza phezu kweesokethi ze-TCP zomthonyama, ngelixa i-Node.js iseva ye-HTTP ibhalwe kwi-C kwaye ibonelela ngezibophelelo zeJavaScript. Abaphuhlisi beDeno bagxile ekwandiseni yonke i-TCP socket layer kunye nokubonelela ngojongano olubanzi ngakumbi. Iseva ye-Deno ye-HTTP ibonelela nge-throughput ephantsi kodwa iqinisekisa ukubambezeleka okusezantsi okuqikelelweyo. Ngokomzekelo, kuvavanyo, isicelo esilula esisekelwe kwi-Deno HTTP iseva yakwazi ukucubungula izicelo eziliwaka le-25 ngesibini kunye ne-latency ephezulu ye-1.3 milliseconds. Kwi-Node.js, isicelo esifanayo siqhube izicelo ze-34 lamawaka ngesibini, kodwa i-latencies isuka kwi-2 kunye ne-300 milliseconds.
  • I-Deno ayihambelani neepakethe ze-Node.js (NPM), kodwa iphuhliswa ngokwahlukeneyo interlayer ngokuhambelana nelayibrari esemgangathweni yeNode.js, njengoko iphuhlisa, izicelo ezininzi ezibhalelwe iNode.js ziya kukwazi ukusebenza kwiDeno.
  • umthombo: opennet.ru

Yongeza izimvo