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

Node.js 20.0 бароварда шуд, ки платформа барои иҷрои барномаҳои шабакавӣ дар JavaScript мебошад. Node.js 20.0 ҳамчун шохаи дастгирии дарозмуддат тасниф карда мешавад, аммо ин мақом танҳо дар моҳи октябр, пас аз мӯътадилшавӣ таъин карда мешавад. Node.js 20.x то 30 апрели соли 2026 дастгирӣ карда мешавад. Нигоҳдории филиали пешинаи LTS Node.js 18.x то апрели соли 2025 ва филиали пеш аз филиали охирини LTS 16.x то сентябри соли 2023 давом мекунад. Филиали 14.x LTS 30 апрел қатъ карда мешавад ва филиали саҳнасозии Node.js 19.x 1 июн қатъ карда мешавад.

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

  • Муҳаррики V8 ба версияи 11.3 навсозӣ шудааст, ки дар Chromium 113 истифода мешавад. Тағйирот дар муқоиса бо филиали Node.js 19, ки муҳаррики Chromium 107-ро истифода кардааст, функсияҳои String.prototype.isWellFormed ва toWellFormed, Array.prototype ва TypedArray-ро дар бар мегиранд. усулҳои прототипи кор бо нусха ҳангоми тағир додани объектҳои Array ва TypedArray, парчами "v" дар RegExp, дастгирии тағир додани андозаи ArrayBuffer ва афзоиши андозаи SharedArrayBuffer, рекурсияи дум (зағди дум) дар WebAssembly.
  • Механизми таҷрибавии Модели Иҷозат пешниҳод шудааст, ки имкон медиҳад, ки дастрасӣ ба захираҳои муайян ҳангоми иҷроиш маҳдуд шавад. Дастгирии модели иҷозат тавассути муайян кардани парчами "--experimental-permission" ҳангоми иҷро фаъол карда мешавад. Амали ибтидоӣ имконоти маҳдуд кардани дастрасии навиштан (--иҷозат-fs-навиштан) ва хондан (--иҷозат-fs-хондан) ба қисмҳои муайяни системаи файлӣ, равандҳои кӯдакона (--иҷозат-чилд-раванд) ва иловаҳо (--но-addons) ) ва риштаҳо (--иҷозат-кор). Масалан, барои иҷозат додан ба феҳристи /tmp ва хондани файли /home/index.js, шумо метавонед муайян кунед: node —experimental-permission —allow-fs-write=/tmp/ —allow-fs-read=/home /index.js индекс .js

    Барои тафтиши дастрасӣ тавсия дода мешавад, ки усули process.permission.has() истифода шавад, масалан, “process.permission.has('fs.write',"/tmp/test").

  • Корфармоҳои Модули берунии ECMAScript (ESM), ки тавассути опсияи "--experimental-loader" бор карда шудаанд, ҳоло дар як риштаи алоҳида, ки аз риштаи асосӣ ҷудо карда шудаанд, кор мекунанд ва чорроҳаи рамзи барнома ва модулҳои пурборшудаи ESM-ро нест мекунанд. Монанди браузерҳо, усули import.meta.resolve() ҳоло ҳангоми занг аз барнома ба таври синхронӣ иҷро мешавад. Дар яке аз шохаҳои навбатии Node.js ба нақша гирифта шудааст, ки дастгирии боркунии ESM ба категорияи хусусиятҳои устувор интиқол дода шавад.
  • Модули гиреҳ:test (test_runner), ки барои эҷод ва иҷро кардани санҷишҳо дар JavaScript тарҳрезӣ шудааст, ки натиҷаҳоро дар формати TAP (Test Anything Protocol) бармегардонад, устувор карда шуд.
  • Гурӯҳи алоҳидаи таҳиякунанда барои оптимизатсияи кор масъул ташкил карда шуд, ки ҳангоми омода кардани филиали нав барои суръат бахшидан ба ҷузъҳои гуногуни вақти корӣ, аз ҷумла таҳлили URL, fetch() ва EventTarget кор мекард. Масалан, хароҷоти ибтидоии EventTarget ду маротиба кам карда шуд, иҷрои усули URL.canParse() ба таври назаррас беҳтар шуд ва самаранокии таймерҳо беҳтар шуд. Он инчунин нашри таҳлилгари URL-и баландсифатро дар бар мегирад, Ada 2.0, ки дар C++ навишта шудааст.
  • Рушди қобилияти таҷрибавӣ барои расонидани барномаҳо дар шакли як файли иҷрошаванда (SEA, Single Executable Applications) идома ёфт. Эҷоди файли иҷрошаванда ҳоло иваз кардани блоки аз файли конфигуратсия дар формати JSON тавлидшударо талаб мекунад (ба ҷои иваз кардани файли JavaScript).
  • Мутобиқати беҳтаршудаи Web Crypto API бо татбиқи лоиҳаҳои дигар.
  • Дастгирии расмӣ барои Windows дар системаҳои ARM64 илова карда шуд.
  • Татбиқи дастгирии васеъкуниҳои WASI (WebAssembly System Interface) барои эҷоди барномаҳои мустақили WebAssembly идома ёфт. Зарурати муайян кардани парчами махсуси сатри фармон барои фаъол кардани дастгирии WASI хориҷ карда шуд.

Платформаи 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

Илова Эзоҳ