Llwyfan JavaScript ochr y gweinydd Node.js 21.0 ar gael

Rhyddhawyd Node.js 21.0, llwyfan ar gyfer rhedeg cymwysiadau rhwydwaith yn JavaScript. Cefnogir cangen Node.js 21.0 am 6 mis. Yn y dyddiau nesaf, bydd y broses o sefydlogi cangen Node.js 20 yn cael ei gwblhau, a fydd yn derbyn statws LTS ac yn cael ei gefnogi tan fis Ebrill 2026. Bydd cynnal a chadw cangen flaenorol LTS o Node.js 18.0 yn para tan fis Medi 2025, a'r flwyddyn cyn y gangen LTS ddiwethaf 16.0 tan fis Ebrill 2024.

Prif welliannau:

  • Mae'r API Fetch wedi'i ddatgan yn sefydlog, wedi'i gynllunio ar gyfer llwytho adnoddau dros y rhwydwaith a symleiddio ysgrifennu cod JavaScript cyffredinol sy'n addas ar gyfer gweithio ar ochr y gweinydd a'r cleient. Mae'r gweithrediad yn seiliedig ar god gan y cleient HTTP/1.1 undici ac mae mor agos â phosibl at yr API tebyg a ddarperir mewn porwyr. Mae'r API yn cynnwys y dull fetch() a gwrthrychau Penawdau. Cais ac Ymateb, yn cynrychioli penawdau HTTP, cais ac ymateb. const res = aros nôl('https://nodejs.org/api/documentation.json'); os (res.ok) { data const = aros res.json(); consol.log(data); }
  • Mae cefnogaeth i'r API WebStreams, sy'n darparu mynediad i ffrydiau data a dderbynnir dros y rhwydwaith, wedi'i sefydlogi. Mae'r API yn ei gwneud hi'n bosibl ychwanegu eich trinwyr eich hun sy'n gweithio gyda data wrth i wybodaeth gyrraedd dros y rhwydwaith, heb aros i'r ffeil gyfan gael ei lawrlwytho. Ymhlith y gwrthrychau sydd ar gael yn Node.js mae ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream, a DecompressionStream.
  • Ychwanegwyd gweithrediad arbrofol cleient WebSocket, sy'n gydnaws â phorwyr. Er mwyn galluogi cefnogaeth WebSocket, darperir y faner “--experimental-websocket”.
  • Ychwanegwyd modd arbrofol ar gyfer defnyddio gweithrediad rhagosodedig modiwlau JavaScript ESM (Modiwlau ECMScript, a ddefnyddir mewn modiwlau ar gyfer porwyr) yn lle CommonJS (yn benodol i Node.js). Nid yw'r newid yn effeithio ar fodiwlau y mae eu fformat wedi'i ddiffinio'n benodol trwy'r maes "math" yn package.json, a nodir trwy'r faner "--input-type", neu sy'n amlwg oherwydd yr estyniad ffeil (.mjs ar gyfer ESM, .cjs ar gyfer CommonJS). Fodd bynnag, bydd modiwlau nad ydynt wedi'u diffinio'n benodol fel CommonJS (er enghraifft, sydd ag estyniad “.js”) yn cael eu trin fel modiwlau ESM pan fydd y modd newydd yn cael ei alluogi. Er mwyn actifadu gosodiadau modiwl newydd, cynigiwyd y faner “--arbrofol-fault-fault”.
  • Mae'r injan V8 wedi'i diweddaru i fersiwn 11.8, a ddefnyddir yn Chromium 118, sydd bellach yn cefnogi'r dull ArrayBuffer.prototype.transfer, y gallu i grwpio araeau (dull grŵpBy) a chyfarwyddiadau WebAssembly ar gyfer prosesu cysonion (i32.add, i32.sub, i32.mul, i64 .add, i64.sub a i64.mul).
  • Mae cefnogaeth i'r triniwr globalPreload wedi dod i ben, o blaid cofrestru a chychwyn galwadau i ffurfweddu modiwlau.
  • Mae opsiwn “fflysio” wedi'i ychwanegu at y swyddogaeth fs.writeFile i orfodi data i gael ei fflysio i'r gyriant ar ôl pob gweithrediad ysgrifennu.
  • Gwell perfformiad cod yn ymwneud â dosrannu URL, nôl API, nentydd, nod: fs, a HTTP.
  • Ychwanegwyd gwrthrych llywio byd-eang. Er enghraifft, i gael data am nifer y creiddiau CPU, gallwch ddefnyddio'r eiddo navigator.hardwareConcurrency.
  • Yn y paramedr “—test”, mae cefnogaeth ar gyfer masgiau glob wedi'i ychwanegu ar gyfer dewis profion i'w rhedeg (er enghraifft, gallwch chi nodi "—test **/*.test.js.").
  • Mae'r rheolwr pecyn wedi'i bwndelu npm 10.2.0 a'r parser llhttp 9.1.2 wedi'u diweddaru.
  • Mae cefnogaeth i Visual Studio 2019 a fersiynau o macOS sy'n hŷn na 11.0 wedi dod i ben.

Gellir defnyddio platfform Node.js ar gyfer cynnal a chadw gweinyddwyr cymwysiadau Gwe ac ar gyfer creu rhaglenni rhwydwaith cleientiaid a gweinyddwyr rheolaidd. Er mwyn ehangu ymarferoldeb cymwysiadau ar gyfer Node.js, mae casgliad mawr o fodiwlau wedi'u paratoi, lle gallwch ddod o hyd i fodiwlau gyda gweithredu HTTP, SMTP, XMPP, DNS, FTP, IMAP, gweinyddwyr POP3 a chleientiaid, modiwlau ar gyfer integreiddio gyda gwahanol fframweithiau gwe, trinwyr WebSocket ac Ajax, cysylltwyr DBMS (MySQL, PostgreSQL, SQLite, MongoDB), peiriannau templadu, peiriannau CSS, gweithredu algorithmau crypto a systemau awdurdodi (OAuth), parsers XML.

Er mwyn sicrhau bod nifer fawr o geisiadau cyfochrog yn cael eu prosesu, mae Node.js yn defnyddio model gweithredu cod asyncronaidd yn seiliedig ar drin digwyddiadau nad ydynt yn rhwystro a'r diffiniad o drinwyr galwadau yn ôl. Y dulliau a gefnogir ar gyfer cysylltiadau amlblecsio yw epoll, kqueue, /dev/poll, a dewis. Ar gyfer amlblecsio cysylltiad, defnyddir y llyfrgell libuv, sy'n ychwanegiad ar gyfer libev ar systemau Unix ac IOCP ar Windows. Defnyddir y llyfrgell libeio i greu cronfa edau, ac mae c-ares wedi'i integreiddio i gyflawni ymholiadau DNS yn y modd di-flocio. Mae'r holl alwadau system sy'n achosi blocio yn cael eu gweithredu y tu mewn i'r pwll edau ac yna, fel trinwyr signal, yn trosglwyddo canlyniad eu gwaith yn ôl trwy bibell ddienw (pibell). Darperir gweithrediad cod JavaScript trwy ddefnyddio'r injan V8 a ddatblygwyd gan Google (yn ogystal, mae Microsoft yn datblygu fersiwn o Node.js gyda'r injan Chakra-Core).

Yn greiddiol iddo, mae Node.js yn debyg i'r Perl AnyEvent, Ruby Event Machine, fframweithiau Python Twisted, a gweithrediad digwyddiad Tcl, ond mae'r ddolen digwyddiad yn Node.js wedi'i chuddio oddi wrth y datblygwr ac mae'n debyg i drin digwyddiadau mewn cymhwysiad gwe sy'n rhedeg mewn porwr. Wrth ysgrifennu ceisiadau ar gyfer nod.js, mae angen i chi ystyried manylion rhaglennu a yrrir gan ddigwyddiadau, er enghraifft, yn lle gwneud "var result = db.query ("select..");" gydag aros am gwblhau'r gwaith a phrosesu canlyniadau wedi hynny, mae Node.js yn defnyddio'r egwyddor o gyflawni asyncronaidd, h.y. mae'r cod yn cael ei drawsnewid yn "db.query ("select..", function (canlyniad) {prosesu canlyniad});", lle bydd rheolaeth yn trosglwyddo'n syth i god pellach, a bydd canlyniad yr ymholiad yn cael ei brosesu wrth i ddata gyrraedd.

Ffynhonnell: opennet.ru

Ychwanegu sylw