Mae Node.js 23.0.0, platfform ar gyfer rhedeg cymwysiadau rhwydwaith yn JavaScript, wedi'i ryddhau. Mae Node.js 23.0 yn cael ei ddosbarthu fel cangen ganolradd, a fydd yn cael ei chefnogi am 7 mis (tan fis Mehefin 2025). Yn y dyddiau nesaf, bydd y broses o sefydlogi cangen Node.js 22 yn cael ei gwblhau, a fydd yn derbyn statws LTS ar Hydref 29 ac yn cael ei gefnogi tan Ebrill 2027. Bydd cefnogaeth i ganghennau LTS y gorffennol o Node.js 20.x a 18.x yn parhau tan fis Ebrill 2026 a 2025, yn y drefn honno.
Prif welliannau:
- Ychwanegwyd cefnogaeth arbrofol ar gyfer TypeScript, sy'n caniatáu diffiniadau math penodol. Mae cymorth wedi'i alluogi gan ddefnyddio'r opsiynau "--experimental-strip-types" a "--experimental-transform-types". Yn achos yr opsiwn cyntaf, mae gweithio gyda TypeScript yn cael ei leihau i glirio diffiniadau math iaith-benodol (nid yw gwirio math yn cael ei berfformio, mae'r cod yn cael ei drosi i JavaScript di-deip). Mae'r ail opsiwn yn trosi rhai elfennau cystrawen TypeScript, megis enums a namespaces, yn god JavaScript.
- Wedi'i alluogi yn ddiofyn yw'r gallu i ddefnyddio'r alwad “gofyn ()” i lwytho modiwlau JavaScript ESM (Modiwlau ECMScript) yn y modd cydamserol. Defnyddir modiwlau ESM mewn porwyr ac maent yn disodli modiwlau CommonJS sy'n benodol i Node.js. I lwytho trwy "require()" yn Node.js, rhaid gweithredu'r modiwl ESM yn gydamserol (heb aros ar y lefel uchaf).
- Darperir canfod modiwlau ESM yn awtomatig mewn ffeiliau heb neu gyda'r estyniad “.js”. Yn flaenorol, roedd ffeiliau o'r fath yn cael eu trin fel modiwlau CommonJS oni bai bod eu math wedi'i nodi'n benodol yn y ffeil package.json sydd wedi'i lleoli yn yr un cyfeiriadur (“math”: “modiwl”). Yn y fersiwn newydd, ar gyfer ffeiliau nad yw eu math wedi'i nodi yn package.json, mae'n ceisio llwytho fel modiwl CommonJS yn gyntaf, ac os bydd hyn yn methu, yna fel modiwl ESM.
- Ychwanegwyd gweithrediad arbrofol yn gydnaws â phorwyr Mae'r API Storio Gwe wedi'i gynllunio ar gyfer storio data allweddol/gwerth yn barhaus (y dosbarth localStorage) neu dros dro (y dosbarth sessionStorage). Mae galluogi cefnogaeth Storio Gwe yn gofyn am redeg yr API gyda'r faner "--experimental-webstorage" a nodi'r llwybr i'r ffeil storio gan ddefnyddio'r faner "--localstorage-file".
- Ychwanegwyd API SQLite arbrofol ar gyfer gweithio gyda chronfeydd data gan ddefnyddio iaith ymholiad SQL a storfa yn seiliedig ar lyfrgell SQLite. Yn ogystal â storio'r gronfa ddata mewn ffeil ar ddisg, gellir ei gosod hefyd yn y cof trwy nodi ":memory:" yn lle enw'r ffeil. Mae'r API Storio Gwe uchod hefyd yn cael ei weithredu ar ben SQLite, gan arwain at ychwanegu SQLite fel dibyniaeth ar gyfer Node.js.
- Mae'r gorchymyn “node —run” wedi'i ddatgan yn sefydlog, wedi'i gynllunio i redeg sgriptiau a ddiffinnir yn y ffeil package.json.
- Wedi gweithredu cefnogaeth ddewisol ar gyfer caching cod a gasglwyd ar ddisg i gyflymu lansiad modiwlau yn sylweddol. Mae caching wedi'i alluogi trwy'r newidyn amgylchedd NODE_COMPILE_CACHE. O ran ei ddiben, mae'r nodwedd yn debyg i'r pecyn v8-compile-cache, ond mae'n wahanol o ran perfformiad uwch a chefnogaeth ar gyfer modiwlau ESM.
- Mae'r gwrthrych Buffer wedi'i optimeiddio i gynyddu perfformiad y dulliau Buffer.copy() a Buffer.write() yn sylweddol.
- Mae perfformiad y modiwl nod:fs wedi'i wella, sydd hefyd yn lleihau nifer y galwadau i god C ++ yn ystod y llawdriniaeth.
- Mae'r injan V8 wedi'i diweddaru i fersiwn 12.9, a ddefnyddir yn Chromium 129.
- Mae cefnogaeth ar gyfer systemau Windows 32-bit wedi'i ddileu.
- Oherwydd cyflwyno nodweddion a ddiffinnir yn y safon C ++8 yn Node.js a'r injan V20, mae'r gofynion ar gyfer fersiwn casglwr GCC wedi cynyddu. Mae Building Node.js bellach yn gofyn am o leiaf GCC 12.
Gellir defnyddio'r platfform Node.js ar gyfer cefnogaeth ochr y gweinydd i gymwysiadau gwe ac ar gyfer creu rhaglenni rhwydwaith safonol ochr y cleient a'r gweinydd. Er mwyn ehangu ymarferoldeb cymwysiadau Node.js, mae casgliad mawr o fodiwlau wedi'u paratoi, gan gynnwys y rhai sy'n gweithredu gweinyddwyr a chleientiaid HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modiwlau ar gyfer integreiddio â gwahanol fframweithiau gwe, trinwyr WebSocket ac Ajax, cysylltwyr i DBMS (MySQL, PostgreSQL, SQLite, MongoDB), peiriannau templedi, peiriannau CSS, gweithrediadau algorithmau cryptograffig a systemau awdurdodi (OAuth), dadansoddwyr XML.
I drin nifer fawr o geisiadau cyfochrog, mae Node.js yn defnyddio model gweithredu cod asyncronaidd yn seiliedig ar brosesu digwyddiadau nad yw'n rhwystro a diffinio trinwyr galwadau yn ôl. Mae dulliau a gefnogir ar gyfer cysylltiadau amlblecsio yn cynnwys epoll, kqueue, /dev/poll, a dewis. Ar gyfer amlblecsio cysylltiad, defnyddir y llyfrgell libuv, sy'n ychwanegiad i libev ar systemau Unix ac i IOCP ar Windows. Defnyddir y llyfrgell libeio i greu cronfa edau, ac mae c-ares wedi'i integreiddio i gyflawni ymholiadau DNS mewn modd nad yw'n rhwystro. Mae'r holl alwadau system sy'n achosi blocio yn cael eu gweithredu o fewn y pwll edau ac yna, fel trinwyr signal, yn trosglwyddo canlyniad eu gwaith yn ôl trwy bibell ddienw.
Sicrheir 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 fframweithiau Perl AnyEvent, Ruby Event Machine, Python Twisted a gweithredu digwyddiadau yn Tcl, ond mae'r ddolen digwyddiad yn Node.js wedi'i chuddio oddi wrth y datblygwr ac mae'n debyg i brosesu digwyddiadau mewn cymhwysiad gwe rhedeg yn y porwr.
Ffynhonnell: opennet.ru
