Платформаи JavaScript-и сервер Node.js 21.0 дастрас аст

Node.js 21.0 бароварда шуд, ки платформа барои иҷрои барномаҳои шабакавӣ дар JavaScript мебошад. Филиали Node.js 21.0 барои 6 моҳ дастгирӣ карда мешавад. Дар рӯзҳои наздик мӯътадилсозии филиали Node.js 20 ба итмом мерасад, ки мақоми LTS мегирад ва то моҳи апрели соли 2026 дастгирӣ карда мешавад. Нигоҳдории филиали пешинаи LTS Node.js 18.0 то сентябри соли 2025 ва як сол пеш аз филиали охирини LTS 16.0 то апрели соли 2024 давом мекунад.

Такмилҳои асосӣ:

  • Fetch API устувор эълон шудааст, ки барои бор кардани захираҳо аз тариқи шабака ва содда кардани навиштани рамзи универсалии JavaScript барои кор дар сервер ва муштарӣ пешбинӣ шудааст. Татбиқ ба коди муштарии HTTP/1.1 undici асос ёфтааст ва то ҳадди имкон ба API-и шабеҳи дар браузерҳо пешниҳодшуда наздиктар аст. API усули fetch() ва объектҳои Headers -ро дар бар мегирад. Дархост ва посух, ки сарлавҳаҳои HTTP, дархост ва посухро намояндагӣ мекунанд. const res = интизори гирифтани овардан ('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = интизори 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 (Modules ECMAScript, ки дар модулҳо барои браузерҳо истифода мешавад) илова карда шуд. Тағйирот ба модулҳое, ки форматашон ба таври возеҳ тавассути майдони "намуд" дар package.json муайян карда шудааст, ки тавассути парчами "--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 ба манфиати сабти ном ва оғоз кардани зангҳо барои танзими модулҳо қатъ карда шуд.
  • Ба функсияи fs.writeFile опсияи "шӯб" илова карда шудааст, то маълумотро пас аз ҳар як амалиёти навиштан маҷбур созад, ки ба диск тоза карда шавад.
  • Иҷрои беҳтаршудаи коди марбут ба таҳлили URL, гирифтани API, ҷараёнҳо, node:fs ва HTTP.
  • Объекти навигатори глобалӣ илова карда шуд. Масалан, барои ба даст овардани маълумот дар бораи шумораи ядроҳои CPU, шумо метавонед моликияти 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, пайвасткунакҳо ба DBMS (MySQL, PostgreSQL, SQLite, MongoDB), муҳаррикҳои шаблон, муҳаррикҳои CSS, татбиқи алгоритмҳои криптографӣ ва системаҳои авторизатсия (OAuth), таҳлилгари XML.

Барои коркарди шумораи зиёди дархостҳои мувозӣ, Node.js модели иҷроиши коди асинхронӣ дар асоси коркарди рӯйдодҳои ғайриблокнашаванда ва муайянкунандаи коркардкунандагони бозгаштро истифода мебарад. Усулҳои дастгирӣшаванда барои пайвастҳои мултиплексӣ epoll, kqueue, /dev/poll ва интихобро дар бар мегиранд. Барои мултиплексии пайвастшавӣ, китобхонаи libuv истифода мешавад, ки иловаи libev дар системаҳои Unix ва IOCP дар Windows мебошад. Китобхонаи libeio барои эҷоди як ҳавзи ришта истифода мешавад ва c-ares барои иҷро кардани дархостҳои DNS дар реҷаи ғайрибандӣ муттаҳид карда шудааст. Ҳама зангҳои системавӣ, ки боиси басташавӣ мешаванд, дар дохили ҳавзи ришта иҷро карда мешаванд ва сипас, ба монанди коркардкунандагони сигнал, натиҷаи кори худро тавассути қубури номаълум интиқол медиҳанд. Иҷрои рамзи JavaScript тавассути истифодаи муҳаррики V8, ки аз ҷониби Google таҳия шудааст, таъмин карда мешавад (илова бар ин, 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("интихоб..", функсия (натиҷа) {коркарди натиҷа}); табдил дода мешавад, ки дар он назорат фавран ба коди дигар мегузарад ва натиҷаи дархост ҳангоми расидани маълумот коркард мешавад.

Манбаъ: opennet.ru

Илова Эзоҳ