Ang server-side nga JavaScript nga plataporma Node.js 20.0 anaa

Ang pagpagawas sa Node.js 20.0, usa ka plataporma alang sa pagpatuman sa mga aplikasyon sa network sa JavaScript, nahitabo. Ang Node.js 20.0 gi-assign sa taas nga sanga sa suporta, apan kini nga status dili ma-assign hangtod sa Oktubre, pagkahuman sa stabilization. Ang Node.js 20.x suportahan hangtod Abril 30, 2026. Ang pagmentinar sa miaging Node.js 18.x LTS nga sanga molungtad hangtod Abril 2025, ug ang miaging 16.x LTS nga sanga hangtod sa Septiyembre 2023. Ang 14.x LTS nga sanga ipabilin sa Abril 30, ug ang Node.js 19.x interim nga sanga sa Hunyo 1.

Panguna nga mga pag-uswag:

  • Ang V8 nga makina gi-update sa bersyon 11.3, nga gigamit sa Chromium 113. Sa mga kausaban itandi sa Node.js 19 branch, nga migamit sa Chromium 107 engine, ang String.prototype.isWellFormed ug toWellFormed functions, ang Array.prototype ug TypedArray.prototype nga mga pamaagi sa pagtrabaho uban sa kopya sa pagbag-o sa Array ug TypedArray nga mga butang, "v" nga bandila sa RegExp, suporta alang sa pag-usab sa ArrayBuffer ug pagdugang sa gidak-on sa SharedArrayBuffer, tail-call sa WebAssembly.
  • Gisugyot ang usa ka mekanismo sa Modelo sa Pagtugot sa eksperimento nga nagtugot kanimo sa pagpugong sa pag-access sa pipila ka mga kapanguhaan sa panahon sa pagpatuman. Ang suporta sa Modelong Permiso gipagana pinaagi sa pagpiho sa bandila nga "--eksperimentong-pagtugot" kung nagdagan. Sa inisyal nga pagpatuman, ang mga opsyon gisugyot nga higpitan ang pagsulat (--allow-fs-write) ug pagbasa (--allow-fs-read) nga pag-access sa pipila ka bahin sa FS, mga proseso sa bata (--allow-child-process) , mga add-on (--no-addons ) ug mga thread (--allow-worker). Pananglitan, aron tugotan ang pagsulat sa /tmp nga direktoryo ug pagbasa sa /home/index.js file, mahimo nimong itakda ang: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js index .js

    Aron masusi ang pag-access, gisugyot nga gamiton ang process.permission.has() nga pamaagi, pananglitan, "process.permission.has('fs.write',"/tmp/test").

  • Ang mga tigdumala alang sa ECMAScript external modules (ESMs) nga gikarga pinaagi sa "--experimental-loader" nga opsyon kay gipatuman na sa bulag nga hilo, nga nahimulag sa main thread, nga nagwagtang sa intersection sa application code ug loaded ESM modules. Sama sa mga browser, ang import.meta.resolve() nga pamaagi karon nagpatuman sa dungan kung gitawag gikan sa sulod sa usa ka aplikasyon. Sa usa sa mga sunod nga sanga sa Node.js, ang suporta sa pagkarga sa ESM giplano nga ibalhin sa kategorya sa mga lig-on nga bahin.
  • Ang node:test (test_runner) module, nga gidesinyo sa paghimo ug pagpadagan sa JavaScript nga mga pagsulay nga nagbalik sa mga resulta sa TAP (Test Anything Protocol) nga format, gibalhin ngadto sa stable.
  • Naporma ang usa ka lahi nga team sa pasundayag, nga, agig pagpangandam alang sa bag-ong sanga, nagtrabaho aron mapadali ang lainlaing mga sangkap sa runtime, lakip ang pag-parse sa URL, pagkuha () ug EventTarget. Pananglitan, ang overhead sa pag-initialize sa EventTarget natunga, ang performance sa URL.canParse() nga pamaagi napauswag pag-ayo, ug ang kaepektibo sa mga timer gipauswag. Dugang pa, ang pagpagawas sa usa ka high-performance URL parser - Ada 2.0, nga gisulat sa C ++, gilakip sa komposisyon.
  • Ang pagpalambo sa usa ka eksperimento nga bahin alang sa paghatud sa mga aplikasyon sa porma sa usa ka executable file (SEA, Single Executable Applications) nagpadayon. Ang paghimo sa usa ka executable karon nanginahanglan pag-ilis sa usa ka blob nga nahimo gikan sa usa ka file sa pag-configure sa JSON (imbes nga ilisan ang usa ka file sa JavaScript).
  • Gipauswag ang pagkaangay sa Web Crypto API sa mga pagpatuman gikan sa ubang mga proyekto.
  • Gidugang ang opisyal nga suporta alang sa Windows sa mga sistema sa ARM64.
  • Padayon nga suporta para sa mga extension sa WASI (WebAssembly System Interface) para sa paghimo ug standalone nga mga aplikasyon sa WebAssembly. Gikuha ang panginahanglan sa pagpiho sa usa ka espesyal nga command line nga bandila aron mahimo ang suporta sa WASI.

Ang plataporma sa Node.js mahimong magamit alang sa pagmentinar sa server sa mga aplikasyon sa Web ug sa paghimo og regular nga kliyente ug mga programa sa network sa server. Aron mapalapad ang pag-andar sa mga aplikasyon alang sa Node.js, usa ka dako nga koleksyon sa mga module ang giandam, diin makit-an nimo ang mga module nga adunay pagpatuman sa HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 server ug kliyente, mga module alang sa panagsama. uban sa nagkalain-laing web frameworks, WebSocket ug Ajax handlers , DBMS connectors (MySQL, PostgreSQL, SQLite, MongoDB), templates engines, CSS engines, pagpatuman sa crypto algorithms ug authorization systems (OAuth), XML parsers.

Aron maseguro ang pagproseso sa daghang gidaghanon sa parallel requests, ang Node.js naggamit ug asynchronous code execution model base sa non-blocking event handling ug ang definition sa callback handler. Gisuportahan nga mga pamaagi alang sa multiplexing nga mga koneksyon mao ang epoll, kqueue, /dev/poll, ug pilia. Alang sa koneksyon multiplexing, ang libuv library gigamit, nga usa ka add-on alang sa libev sa Unix system ug IOCP sa Windows. Ang libeio library kay gigamit sa paghimo ug thread pool, ug ang c-ares gi-integrate para sa DNS query sa non-blocking mode. Ang tanan nga mga tawag sa sistema nga hinungdan sa pagbabag gihimo sa sulod sa thread pool ug dayon, sama sa mga tigdumala sa signal, ibalhin ang resulta sa ilang trabaho balik pinaagi sa usa ka wala nganli nga tubo (pipe). Ang pagpatuman sa JavaScript code gihatag pinaagi sa paggamit sa V8 nga makina nga gimugna sa Google (dugang pa, ang Microsoft nagpalambo sa usa ka bersyon sa Node.js nga adunay Chakra-Core nga makina).

Sa kinauyokan niini, ang Node.js susama sa Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks, ug ang Tcl event nga pagpatuman, apan ang event loop sa Node.js gitago gikan sa developer ug susama sa pagdumala sa panghitabo sa usa ka web application nga nagdagan. sa browser. Sa pagsulat sa mga aplikasyon alang sa node.js, kinahanglan nimong tagdon ang mga detalye sa programa nga gipalihok sa panghitabo, pananglitan, imbes nga buhaton ang "var result = db.query("select..");" uban sa paghulat sa pagkompleto sa trabaho ug sa sunod nga pagproseso sa mga resulta, ang Node.js naggamit sa prinsipyo sa asynchronous execution, i.e. ang code giusab ngadto sa "db.query("select..", function (resulta) {result processing});", diin ang kontrol moagi dayon sa dugang nga code, ug ang resulta sa pangutana maproseso sa pag-abot sa datos.

Source: opennet.ru

Idugang sa usa ka comment