Platfòm JavaScript bò sèvè Node.js 20.0 disponib

Node.js 20.0 te lage, yon platfòm pou kouri aplikasyon rezo nan JavaScript. Node.js 20.0 klase kòm yon branch sipò alontèm, men estati sa a pral plase sèlman nan mwa Oktòb, apre estabilizasyon. Node.js 20.x pral sipòte jiska 30 avril 2026. Antretyen branch LTS anvan Node.js 18.x pral dire jiska avril 2025, ak youn nan anvan dènye branch LTS 16.x jiska septanm 2023. Branch 14.x LTS yo pral sispann nan dat 30 avril, epi yo pral sispann branch nan staging Node.js 19.x nan 1ye jen.

Gwo amelyorasyon:

  • Motè V8 la te mete ajou nan vèsyon 11.3, yo itilize nan Chromium 113. Chanjman konpare ak branch Node.js 19 la, ki te itilize motè Chromium 107 la, gen ladan fonksyon String.prototype.isWellFormed ak toWellFormed, Array.prototype ak TypedArray. metòd pwototip pou travay ak yon kopi lè w ap chanje objè Array ak TypedArray, drapo "v" nan RegExp, sipò pou redimansyonman ArrayBuffer ak ogmante gwosè SharedArrayBuffer, ke recursion (ke-call) nan WebAssembly.
  • Yo te pwopoze yon mekanis modèl pèmisyon eksperimantal ki pèmèt limite aksè a sèten resous pandan ekzekisyon. Pèmisyon Modèl sipò pèmèt lè w presize drapo "--experimental-permission" lè w ap kouri. Inisyal aplikasyon an ofri opsyon pou limite ekri (--allow-fs-write) ak lekti (--allow-fs-read) aksè a sèten pati nan sistèm fichye a, pwosesis timoun yo (--allow-child-process), ak add-ons (--no-addons) ) ak fil (--allow-worker). Pa egzanp, pou pèmèt ekri nan anyè /tmp ak li fichye /home/index.js la, ou ka presize: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home. /index.js endèks .js

    Pou tcheke aksè, li sijere pou itilize metòd process.permission.has(), pou egzanp, "process.permission.has('fs.write',"/tmp/test").

  • ECMAScript External Module (ESM) moun kap okipe yo chaje atravè opsyon "--experimental-loader" kounye a kouri nan yon fil separe, izole nan fil prensipal la, elimine entèseksyon kòd aplikasyon an ak modil ESM chaje. Menm jan ak navigatè, metòd import.meta.resolve() la kounye a egzekite synchrone lè yo rele nan yon aplikasyon. Nan youn nan branch kap vini yo nan Node.js, sipò pou chaje ESM te planifye yo dwe transfere nan kategori a nan karakteristik ki estab.
  • Modil node:test (test_runner), ki fèt pou kreye ak kouri tès nan JavaScript ki retounen rezilta nan fòma TAP (Test Anything Protocol) te vin estab.
  • Yon ekip devlopman separe te fòme responsab pou optimize pèfòmans, ki, lè w ap prepare yon nouvo branch, te travay akselere konpozan ègzekutabl divès kalite, ki gen ladan analiz URL, fetch() ak EventTarget. Pou egzanp, anlè a nan inisyalizasyon EventTarget te redwi mwatye, pèfòmans nan metòd URL.canParse() yo te siyifikativman amelyore, ak efikasite nan timers yo te amelyore. Li gen ladan tou liberasyon an nan yon analizeur URL segondè-pèfòmans, Ada 2.0, ekri nan C++.
  • Devlopman kapasite eksperimantal pou livrezon aplikasyon nan fòm yon sèl dosye ègzekutabl (SEA, Single Executable Applications) kontinye. Kreye yon dosye ègzèkutabl kounye a mande pou ranplase yon blob ki te pwodwi nan yon fichye konfigirasyon nan fòma JSON (olye pou yo ranplase yon fichye JavaScript).
  • Amelyore konpatibilite Web Crypto API a ak aplikasyon lòt pwojè yo.
  • Te ajoute sipò ofisyèl pou Windows sou sistèm ARM64.
  • Aplikasyon sipò pou ekstansyon WASI (WebAssembly System Interface) pou kreye aplikasyon otonòm WebAssembly kontinye. Retire nesesite pou presize yon drapo liy kòmand espesyal pou pèmèt sipò WASI.

Platfòm Node.js la ka itilize tou de pou sipò bò sèvè nan aplikasyon entènèt, ak pou kreye pwogram rezo kliyan ak sèvè òdinè. Pou elaji fonksyonalite aplikasyon pou Node.js, yo te prepare yon gwo koleksyon modil, kote ou ka jwenn modil ak aplikasyon HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serveurs ak kliyan, modil pou entegrasyon. ak plizyè kad entènèt, WebSocket ak Ajax, konektè nan DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motè modèl, motè CSS, aplikasyon algoritm kriptografik ak sistèm otorizasyon (OAuth), analizeur XML.

Pou okipe yon gwo kantite demann paralèl, Node.js sèvi ak yon modèl ekzekisyon kòd asynchrone ki baze sou pwosesis evènman ki pa bloke ak defini moun kap okipe apèl. Metòd ki sipòte pou koneksyon multiplexage yo enkli epoll, kqueue, /dev/poll, epi chwazi. Pou koneksyon multiplexing, yo itilize bibliyotèk libuv la, ki se yon sipleman libev sou sistèm Unix ak IOCP sou Windows. Libeio bibliyotèk la itilize pou kreye yon pisin fil, epi c-ares entegre pou fè demann DNS nan yon mòd ki pa bloke. Tout apèl sistèm ki lakòz bloke yo egzekite nan pisin fil la epi answit, tankou moun k ap okipe siyal yo, pase rezilta travay yo tounen nan yon tiyo san non. Egzekisyon kòd JavaScript asire atravè itilizasyon motè V8 Google devlope (anplis de sa, Microsoft ap devlope yon vèsyon Node.js ak motè Chakra-Core).

Nan nwayo li yo, Node.js sanble ak Perl AnyEvent, Ruby Evènman Machine, Python Twisted kad ak aplikasyon evènman nan Tcl, men bouk evènman an nan Node.js kache nan pwomotè a epi li sanble ak pwosesis evènman nan yon aplikasyon entènèt. kouri nan navigatè a. Lè w ap ekri aplikasyon pou node.js, li nesesè pou w pran an kont spesifik pwogramasyon ki baze sou evènman an, pa egzanp, olye pou w fè "var result = db.query ("select..");" ak ap tann pou fini an nan travay ak pwosesis ki vin apre nan rezilta yo, Node.js sèvi ak prensip la nan ekzekisyon asynchrone, i.e. se kòd la transfòme nan "db.query ("select..", fonksyon (rezilta) {pwosesis rezilta});", nan ki kontwòl pral imedyatman pase nan plis kòd, epi rezilta rechèch la pral trete kòm done rive.

Sous: opennet.ru

Add nouvo kòmantè