Server-side JavaScript platform Node.js 20.0 iripo

Node.js 20.0 yakaburitswa, chikuva chekushandisa network application muJavaScript. Node.js 20.0 inorondedzerwa sebazi rekutsigira kwenguva refu, asi chimiro ichi chichagoverwa muna Gumiguru chete, mushure mekugadzirisa. Node.js 20.x ichatsigirwa kusvika Kubvumbi 30, 2026. Kuchengetwa kwebazi reLTS rapfuura reNode.js 18.x richagara kusvika Kubvumbi 2025, uye gore risati rapfuura LTS bazi 16.x kusvika Gunyana 2023. Bazi re14.x LTS richamiswa musi wa30 Kubvumbi, uye bazi reNode.js 19.x richamiswa musi waChikumi 1st.

Mabhindauko makuru:

  • Injini yeV8 yakagadziridzwa kune shanduro 11.3, yakashandiswa muChromium 113. Shanduko dzakaenzaniswa nebazi reNode.js 19, rakashandisa Chromium 107 injini, inosanganisira String.prototype.isWellFormed uye kuWellFormed mabasa, Array.prototype uye TypedArray. prototype nzira dzekushanda nekopi kana uchichinja Array uye TypedArray zvinhu, iyo "v" mureza muRegExp, tsigiro yekuisa saizi yeArrayBuffer uye kuwedzera saizi yeSharedArrayBuffer, tail recursion (muswe-kufona) muWebAssembly.
  • Yekuyedza Permission Model meshini yakapihwa inobvumira kudzikamisa kuwana kune zvimwe zviwanikwa panguva yekuuraya. Rutsigiro rweMvumo Model runogoneswa nekutsanangura mureza we "-experimental-permission" paunenge uchimhanya. Kuitwa kwekutanga kunopa sarudzo dzekudzikamisa kunyora (--bvumira-fs-nyora) uye verenga (--bvumira-fs-verenga) kuwana kune zvimwe zvikamu zvefaira system, maitiro emwana (--bvumira-mwana-maitiro), uye add-ons (--no-addons)) neshinda (--bvumira-mushandi). Semuenzaniso, kubvumira kunyora kune /tmp dhairekitori uye kuverenga iyo /home/index.js faira, unogona kutsanangura: node -experimental-permission -allow-fs-write=/tmp/ -bvumira-fs-read=/home /index.js index .js

    Kuti utarise mapindiro, zvinokurudzirwa kushandisa nzira.permission.has(), semuenzaniso, "process.permission.has('fs.write',"/tmp/test").

  • ECMAScript External Module (ESM) vanobata vakaremerwa kuburikidza ne "--experimental-loader" sarudzo ikozvino inomhanya mune imwe tambo, yakaparadzaniswa netambo huru, ichibvisa mharadzano yekodhi yekushandisa uye yakarodha ESM modules. Zvakafanana nemabhurawuza, iyo import.meta.resolve() nzira yave kuitwa synchronously kana yadaidzwa kubva kune application. Mune rimwe rematavi anotevera eNode.js, tsigiro yekurodha ESM inorongwa kuti iendeswe kuchikamu chezvimiro zvakagadzikana.
  • Iyo module node: bvunzo (test_runner), yakagadzirirwa kugadzira uye kumhanya bvunzo muJavaScript inodzosa mhedzisiro muTAP (Test Anything Protocol) fomati, yakatsiga.
  • Chikwata chakasiyana chekusimudzira chakaumbwa chine basa rekuita optimization, iyo, pakugadzirira bazi idzva, yakashanda kuti ikurumidze kumhanyisa zvinhu zvakasiyana-siyana zvekumhanya, kusanganisira URL parsing, fetch() uye ChiitikoTarget. Semuyenzaniso, pamusoro peKutanga kweChiitikoTarget kwave nepakati, kushanda kweiyo URL.canParse() nzira yakavandudzwa zvakanyanya, uye kugona kwezviyereso kwakavandudzwa. Inosanganisirawo kuburitswa kwepamusoro-inoita URL parser, Ada 2.0, yakanyorwa muC++.
  • Kuvandudzwa kwehunyanzvi hwekuyedza kuendesa zvikumbiro muchimiro chefaira rimwechete rinoitwa (SEA, Single Executable Applications) yakaenderera. Kugadzira faira rinogoneka ikozvino kunoda kutsiva blob rakagadzirwa kubva mufaira rekugadzirisa muJSON fomati (panzvimbo yekutsiva JavaScript faira).
  • Yakavandudzwa kuenderana kweWebhu Crypto API nekuita kubva kune mamwe mapurojekiti.
  • Yakawedzera rutsigiro rwepamutemo rweWindows pane ARM64 masisitimu.
  • Kuitwa kwerutsigiro rweWASI (WebAssembly System Interface) yekuwedzera yekugadzira yakamira-yega WebAssembly application yaenderera mberi. Yakabvisa kukosha kwekutsanangura yakakosha mutsara wemutsara mureza kuti ugonese WASI rutsigiro.

Iyo Node.js chikuva inogona kushandiswa ese ari maviri sevha-padivi rutsigiro rweWebhu maapplication, uye kugadzira akajairwa mutengi uye server network zvirongwa. Kuti uwedzere kushanda kwezvikumbiro zveNode.js, muunganidzwa wakakura wemamodule wakagadzirirwa, umo iwe unogona kuwana mamodule nekushandiswa kweHTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 maseva uye vatengi, ma module ekubatanidza. ine akasiyana webhu masisitimu, WebSocket uye Ajax vanobata, zvinobatanidza kuDBMS (MySQL, PostgreSQL, SQLite, MongoDB), template injini, CSS injini, kuitiswa kwecryptographic algorithms uye mvumo masisitimu (OAuth), XML parsers.

Kuti ive nechokwadi chekugadziriswa kwenhamba huru yezvikumbiro zvakafanana, Node.js inoshandisa asynchronous code execution modhi yakavakirwa pane isiri-kuvhara chiitiko kubata uye tsananguro yevanobata callback. Nzira dzinotsigirwa dzekubatanidza kuwanda ndeye epoll, kqueue, /dev/poll, uye sarudza. Nekubatanidza kuwanda, raibhurari ye libuv inoshandiswa, inova yekuwedzera ye libev pane Unix masisitimu uye IOCP paWindows. Raibhurari yelibeio inoshandiswa kugadzira dziva reshinda, uye c-ares inosanganiswa kuita mibvunzo yeDNS mune isiri-yekuvharisa mode. Yese inofona system inokonzeresa kuvharika inoitwa mukati medziva reshinda uyezve, sevabati vechiratidzo, vanoendesa mhedzisiro yebasa ravo kumashure kuburikidza nepombi isina zita (pombi). Kuitwa kweJavaScript code kunopiwa kuburikidza nekushandiswa kweV8 injini yakagadzirwa neGoogle (nekuwedzera, Microsoft iri kugadzira shanduro yeNode.js neChakra-Core injini).

Pakati payo, Node.js yakafanana nePerl AnyEvent, Ruby Event Machine, Python Twisted frameworks, uye Tcl chiitiko chekuita, asi chiitiko loop muNode.js yakavanzwa kubva kumugadziri uye yakafanana nekubata chiitiko muwebhu application inoshanda. mubrowser. Paunenge uchinyora zvikumbiro zve node.js, iwe unofanirwa kufunga nezve chaiyo-inofambiswa nechiitiko chirongwa, semuenzaniso, pane kuita "var result = db.query("select..");" nekumirira kupedzwa kwebasa uye kunotevera kugadziriswa kwemigumisiro, Node.js inoshandisa nheyo yeasynchronous execution, i.e. iyo code inoshandurwa kuita "db.query("select..", function (result) {result processing});", umo kutonga kuchapfuura pakarepo kune imwe kodhi, uye mhinduro yemubvunzo ichagadziriswa kana data yasvika.

Source: opennet.ru

Voeg