Wolemba Node.js adapereka nsanja yotetezedwa ya JavaScript Deno 1.0

Pambuyo pa zaka ziwiri za chitukuko zoperekedwa kutulutsidwa kwakukulu koyamba Ntchito 1.0, nsanja yopangira ntchito zodziyimira pawokha mu JavaScript ndi TypeScript, yomwe ingagwiritsidwe ntchito kupanga othandizira omwe amayenda pa seva. Pulogalamuyi imapangidwa ndi Ryan Dahl (Ryan Dahl), wopanga Node.js. Monga Node.js, Deno amagwiritsa ntchito injini ya JavaScript V8, yomwe imagwiritsidwanso ntchito pamasakatuli a Chromium. Panthawi imodzimodziyo, Deno si foloko ya Node.js, koma ndi polojekiti yatsopano yopangidwa kuchokera pachiyambi. Project kodi wogawidwa ndi pansi pa MIT layisensi. Misonkhano kukonzekera kwa Linux, Windows ndi macOS.

Nambala yofunikira kwambiri imalumikizidwa ndi kukhazikika kwa ma API mu Deno namespace, omwe amayang'anira kuyanjana kwa mapulogalamu ndi OS. Mapulogalamu olumikizirana omwe ali nawo mpaka pano osakhazikika, amabisika mwachisawawa ndipo amapezeka pokhapokha akuyenda mu "--unstable" mode. Pamene matembenuzidwe atsopano akupangidwa, ma API oterowo adzakhala okhazikika pang'onopang'ono. API yapadziko lonse namespace, yomwe imaphatikizapo ntchito zodziwika bwino monga setTimeout() ndi fetch(), ili pafupi kwambiri ndi API ya asakatuli wamba ndipo imapangidwa motsatira miyezo yapaintaneti ya asakatuli. Ma API operekedwa ndi Rust, omwe amagwiritsidwa ntchito mwachindunji pamakina a nsanja, komanso mawonekedwe opangira mapulagini a Deno nthawi yothamanga, sanakhazikitsidwebe ndipo akupitiriza kukula.

Zolinga zazikulu zopangira nsanja yatsopano ya JavaScript zinali kufuna kuthetsa zolakwika zamalingaliro, adavomereza mu zomangamanga za Node.js, ndikupatsa ogwiritsa ntchito malo otetezeka kwambiri. Kupititsa patsogolo chitetezo, injini ya V8 imalembedwa mu Rust, yomwe imapewa zovuta zambiri zomwe zimabwera chifukwa cha kusintha kwa kukumbukira kwapang'onopang'ono, monga kulowa kwaulere, kusokoneza null pointer, ndi buffer overruns. Pulatifomu imagwiritsidwa ntchito pokonza zopempha mumayendedwe osatsekereza Tokyo, yolembedwanso m’ChidziΕ΅i. Tokio imakulolani kuti mupange mapulogalamu apamwamba kwambiri potengera zomangamanga zomwe zimayendetsedwa ndi zochitika, kuthandizira maulendo angapo ndi kukonza zopempha za intaneti mumayendedwe asynchronous.

waukulu Mawonekedwe Deno:

  • Kusintha kokhazikika kokhazikika pachitetezo. Kufikira mafayilo, ma netiweki, ndi mwayi wazosintha zachilengedwe ndizozimitsidwa mwachisawawa ndipo ziyenera kuyatsidwa. Mapulogalamu amayendetsedwa mokhazikika m'malo a sandbox akutali ndipo sangathe kupeza kuthekera kwadongosolo popanda kupereka zilolezo zachidziwitso;
  • Thandizo lopangidwira la TypeScript kupitirira JavaScript. Wokhazikika wa TypeScript compiler amagwiritsidwa ntchito kuyang'ana mitundu ndikupanga JavaScript, yomwe imatsogolera kugunda kwa magwiridwe antchito poyerekeza ndi JavaScript parsing mu V8. M'tsogolomu, tikukonzekera kukonzekera kukhazikitsidwa kwathu kwa mtundu wa TypeScript wowunika dongosolo, zomwe zidzawongolere ntchito ya TypeScript potengera kukula kwake;
  • Runtime imabwera mu mawonekedwe a fayilo imodzi yokha yomwe ingathe kuchitidwa ("deno"). Kuyendetsa mapulogalamu pogwiritsa ntchito Deno ndikokwanira kupatula pa nsanja yake pali fayilo imodzi yotheka, pafupifupi 20 MB kukula, yomwe ilibe zodalira zakunja ndipo sizifuna unsembe wapadera pa dongosolo. Komanso, deno si ntchito ya monolithic, koma ndi gulu la mapaketi a crate ku Rust (deno_core, dzimbiri_v8), yomwe ingagwiritsidwe ntchito mosiyana;
  • Mukayamba pulogalamuyo, komanso pakutsitsa ma module, mutha kugwiritsa ntchito ma adilesi a URL. Mwachitsanzo, kuyendetsa pulogalamu ya welcome.js, mungagwiritse ntchito lamulo "deno https://deno.land/std/examples/welcome.js". Khodi yochokera kuzinthu zakunja imatsitsidwa ndikusungidwa pamakina akomweko, koma sikusinthidwa zokha (kukonzanso kumafuna kugwiritsa ntchito pulogalamuyo ndi mbendera ya "--reload");
  • Kukonzekera bwino kwa zopempha za intaneti kudzera pa HTTP muzogwiritsira ntchito; nsanjayi idapangidwa kuti ipange mapulogalamu apamwamba kwambiri;
  • Kutha kupanga mapulogalamu apadziko lonse lapansi omwe amatha kuchitidwa ku Deno komanso pasakatuli wamba;
  • kupezeka Standard seti ya modules, kugwiritsa ntchito komwe sikufuna kumangiriza kudalira kwakunja. Ma modules ochokera m'magulu okhazikika adayesedwa kowonjezera komanso kuyezetsa ngati kuli koyenera;
  • Kuphatikiza pa nthawi yothamanga, nsanja ya Deno imagwiranso ntchito ngati woyang'anira phukusi ndipo imakulolani kuti mupeze ma modules ndi URL mkati mwa code. Mwachitsanzo, kuti mutsegule gawo, mutha kufotokoza mu code "import * monga chipika kuchokera ku "https://deno.land/std/log/mod.ts". Mafayilo otsitsidwa kuchokera ku maseva akunja kudzera pa URL amasungidwa. Kumanga kumitundu yamagawo kumatsimikiziridwa ndikutchula manambala amtundu mkati mwa URL, mwachitsanzo, "https://unpkg.com/[imelo ndiotetezedwa]/dist/liltest.js";
  • Kapangidwe kameneka kakuphatikizanso dongosolo loyang'anira kudalira (lamulo la "deno info") ndi chida chothandizira kupanga ma code (deno fmt);
  • Zolemba zonse zitha kuphatikizidwa kukhala fayilo imodzi ya JavaScript.

Kusiyana kwa Node.js:

  • Deno sagwiritsa ntchito npm package manager
    ndipo sichimangirizidwa kuzinthu zosungira, ma modules amayankhidwa kudzera pa URL kapena njira ya fayilo, ndipo ma modules amatha kuikidwa pa webusaiti iliyonse;
  • Deno sagwiritsa ntchito "package.json" kutanthauzira ma module;
  • Kusiyana kwa API, zochita zonse za asynchronous ku Deno zimabwezera lonjezo;
  • Deno imafuna kutanthauzira momveka bwino kwa zilolezo zonse zofunika kwa mafayilo, maukonde ndi zosintha zachilengedwe;
  • Zolakwa zonse zomwe sizinaperekedwe ndi othandizira zimapangitsa kuti ntchitoyo ithe;
  • Deno amagwiritsa ntchito gawo la ECMAScript ndipo sichithandizira amafuna ();
  • Seva ya HTTP yopangidwa ndi Deno imalembedwa mu TypeScript ndipo imayenda pamwamba pa soketi za TCP, pomwe seva ya Node.js HTTP imalembedwa mu C ndipo imapereka zomangira za JavaScript. Madivelopa a Deno amayang'ana kwambiri kukhathamiritsa gawo lonse la socket la TCP ndikupereka mawonekedwe wamba. Seva ya Deno HTTP imapereka kutsika pang'ono koma imatsimikizira kuchedwa kochepa. Mwachitsanzo, muyeso, ntchito yosavuta yochokera ku seva ya Deno HTTP inatha kukonza zopempha 25 zikwi pamphindi imodzi ndi latency yochuluka ya 1.3 milliseconds. Mu Node.js, ntchito yofananayo inakonza zopempha za 34 zikwi pa sekondi imodzi, koma latencies inachokera ku 2 ndi 300 milliseconds.
  • Deno sagwirizana ndi phukusi la Node.js (NPM), koma likupangidwa mosiyana cholumikizira kuti zigwirizane ndi laibulale yokhazikika ya Node.js, pamene ikukula, mapulogalamu ochulukirapo olembedwa a Node.js adzatha kuthamanga ku Deno.
  • Source: opennet.ru

Kuwonjezera ndemanga