Հասանելի է սերվերի կողմից JavaScript հարթակ Node.js 21.0

Թողարկվել է Node.js 21.0-ը, որը հարթակ է JavaScript-ով ցանցային հավելվածներ գործարկելու համար: Node.js 21.0 մասնաճյուղը կաջակցվի 6 ամիս: Առաջիկա օրերին կավարտվի Node.js 20 մասնաճյուղի կայունացումը, որը կստանա LTS կարգավիճակ և կաջակցվի մինչև 2026 թվականի ապրիլ։ Node.js 18.0-ի նախորդ LTS մասնաճյուղի սպասարկումը կտևի մինչև 2025 թվականի սեպտեմբեր, իսկ նախորդ տարվա LTS մասնաճյուղի 16.0-ին մինչև 2024 թվականի ապրիլը:

Հիմնական բարելավումներ.

  • Fetch API-ն հայտարարվել է կայուն, որը նախատեսված է ցանցում ռեսուրսներ բեռնելու և սերվերի և հաճախորդի կողմերում աշխատելու համար հարմար JavaScript-ի համընդհանուր կոդի գրելը պարզեցնելու համար: Իրականացումը հիմնված է HTTP/1.1 undici հաճախորդի կոդի վրա և հնարավորինս մոտ է բրաուզերներում տրամադրված նմանատիպ API-ին: API-ն ներառում է fetch() մեթոդը և Headers օբյեկտները: Հարցում և պատասխան, որը ներկայացնում է HTTP վերնագրերը, հարցումը և պատասխանը: const res = await fetch ('https://nodejs.org/api/documentation.json'); if (res.ok) {const data = await res.json(); console.log (տվյալներ); }
  • WebStreams API-ի աջակցությունը, որն ապահովում է ցանցի միջոցով ստացված տվյալների հոսքերի հասանելիությունը, կայունացվել է: API-ն հնարավորություն է տալիս ավելացնել ձեր սեփական մշակողները, որոնք աշխատում են տվյալների հետ, երբ տեղեկատվությունը հասնում է ցանցի միջոցով, առանց սպասելու ամբողջ ֆայլի ներբեռնմանը: Node.js-ում հասանելի օբյեկտները ներառում են ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream և DecompressionStream:
  • Ավելացվել է WebSocket հաճախորդի փորձարարական իրականացումը, համատեղելի է զննարկիչների հետWebSocket-ի աջակցությունը միացնելու համար օգտագործեք «--experimental-websocket» դրոշը։
  • Ավելացվել է փորձնական ռեժիմ՝ CommonJS-ի փոխարեն (հատուկ Node.js-ի համար) JavaScript մոդուլների ESM (ECMAScript մոդուլներ, որոնք օգտագործվում են բրաուզերների համար նախատեսված մոդուլներում) լռելյայն իրականացումն օգտագործելու համար: Փոփոխությունը չի ազդում այն ​​մոդուլների վրա, որոնց ձևաչափը հստակորեն սահմանված է package.json-ի «type» դաշտի միջոցով, նշված է «--input-type» դրոշի միջոցով կամ ակնհայտ է ֆայլի ընդլայնման պատճառով (.mjs համար ESM, .cjs CommonJS-ի համար): Այնուամենայնիվ, մոդուլները, որոնք հստակորեն սահմանված չեն որպես CommonJS (օրինակ, ունեն «.js» ընդլայնում), կդիտարկվեն որպես ESM մոդուլներ, երբ նոր ռեժիմը միացված է: Նոր մոդուլի կարգավորումները ակտիվացնելու համար առաջարկվել է «--experimental-default-type» դրոշը:
  • V8 շարժիչը թարմացվել է 11.8 տարբերակին, որն օգտագործվում է Chromium 118-ում, որն այժմ աջակցում է ArrayBuffer.prototype.transfer մեթոդը, զանգվածները խմբավորելու հնարավորությունը (groupBy մեթոդ) և WebAssembly ցուցումներ՝ հաստատունների մշակման համար (i32.add, i32.sub, i32.mul, i64 .add, i64.sub և i64.mul):
  • GlobalPreload մշակողի աջակցությունը դադարեցվել է՝ հօգուտ մոդուլների կազմաձևման համար զանգերի գրանցման և սկզբնավորման:
  • «Flush» տարբերակն ավելացվել է fs.writeFile ֆունկցիային՝ ստիպելու, որ տվյալները լցվեն սկավառակի վրա յուրաքանչյուր գրելու գործողությունից հետո:
  • URL-ի վերլուծության, առբերման API-ի, հոսքերի, node:fs-ի և HTTP-ի հետ կապված կոդի բարելավված աշխատանքը:
  • Ավելացվեց գլոբալ նավիգատորի օբյեկտ: Օրինակ՝ պրոցեսորի միջուկների քանակի մասին տվյալներ ստանալու համար կարող եք օգտագործել navigator.hardwareConcurrency հատկությունը։
  • «—test» պարամետրում ավելացվել է գլոբալ դիմակների աջակցություն՝ առաջադրվող թեստերն ընտրելու համար (օրինակ՝ կարող եք նշել «—test **/*.test.js»:):
  • Թարմացվել են փաթեթների փաթեթի կառավարիչ npm 10.2.0 և llhttp 9.1.2 վերլուծիչը:
  • Visual Studio 2019-ը և ավելի ուշ տարբերակները այլևս չեն աջակցվում։ macOS 11.0-ից հին։

Node.js հարթակը կարող է օգտագործվել ինչպես վեբ հավելվածների սերվերային աջակցության, այնպես էլ ստանդարտ հաճախորդային և սերվերային ցանցային ծրագրեր ստեղծելու համար: Node.js հավելվածների ֆունկցիոնալությունը ընդլայնելու համար պատրաստվել է մոդուլների մեծ հավաքածու, այդ թվում՝ մոդուլներ իրականացնողները: սերվերներ և HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 հաճախորդների համար, տարբեր վեբ շրջանակների հետ ինտեգրման մոդուլներ, WebSocket և Ajax մշակիչներ, տվյալների բազայի կառավարման համակարգերի (MySQL, PostgreSQL, SQLite, MongoDB) միակցիչներ, ձևանմուշային շարժիչներ, CSS շարժիչներ, կրիպտոգրաֆիկ ալգորիթմների և լիազորման համակարգերի (OAuth) իրականացումներ, XML վերլուծիչներ։

Մեծ թվով զուգահեռ հարցումներ մշակելու համար Node.js-ը օգտագործում է ասինխրոն կոդի կատարման մոդել, որը հիմնված է ոչ-արգելափակող իրադարձությունների մշակման և հետադարձ կանչի մշակիչների վրա: Աջակցվող միացման մուլտիպլեքսավորման մեթոդներից են epoll-ը, kqueue-ն, /dev/poll-ը և select-ը: Միացման մուլտիպլեքսավորման համար օգտագործվում է libuv գրադարանը, որը Unix համակարգերում libev-ի և IOCP-ի վրա IOCP-ի գերբազմություն է: WindowsLibeio գրադարանն օգտագործվում է թելերի հավաքածու ստեղծելու համար, իսկ c-ares-ը ինտեգրված է՝ DNS հարցումներ կատարելու համար ոչ արգելափակող ռեժիմով: Բոլոր արգելափակող համակարգային կանչերը կատարվում են թելերի հավաքածուի ներսում, ապա, ինչպես ազդանշանների մշակիչները, վերադարձնում են իրենց արդյունքները անանուն խողովակի միջոցով: JavaScript-ի կատարումն ապահովվում է Google-ի V8 շարժիչով (Microsoft-ը նաև մշակում է Node.js-ի տարբերակ՝ Chakra-Core շարժիչով):

Node.js-ն իր էությամբ նման է Perl AnyEvent-ին, Ruby Event Machine-ին, Python Twisted շրջանակներին և Tcl-ի իրադարձության իրականացմանը, սակայն Node.js-ում իրադարձությունների հանգույցը թաքնված է մշակողից և հիշեցնում է իրադարձությունների մշակումը գործող վեբ հավելվածում: բրաուզերում: Node.js-ի համար հավելվածներ գրելիս պետք է հաշվի առնել իրադարձությունների վրա հիմնված ծրագրավորման առանձնահատկությունները, օրինակ՝ «var result = db.query(«select..»);» անելու փոխարեն: աշխատանքի ավարտին սպասելով և արդյունքների հետագա մշակմամբ, Node.js-ն օգտագործում է ասինխրոն կատարման սկզբունքը, այսինքն. կոդը փոխակերպվում է «db.query(«ընտրել..», ֆունկցիա (արդյունք) {արդյունքների մշակում});», որի դեպքում հսկողությունն անմիջապես կանցնի հետագա կոդի, և հարցման արդյունքը կմշակվի տվյալների ժամանումին:

Source: opennet.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster