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

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

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

  • Муҳаррики V8 ба версияи 10.1 навсозӣ шудааст, ки дар Chromium 101 истифода мешавад. Дар муқоиса бо версияи 17.9.0 Node.js, ҳоло дастгирӣ барои хусусиятҳо ба монанди усулҳои findLast ва findLastIndex барои дарёфти унсурҳо нисбат ба охири массив ва функсияи Intl.supportedValuesOf. API-и такмилёфтаи Intl.Locale. Оғозсозии майдонҳои синфӣ ва усулҳои хусусӣ суръат гирифт.
  • API-и таҷрибавии fetch() бо нобаёнӣ фаъол аст, ки барои боркунии захираҳо аз шабака пешбинӣ шудааст. Татбиқ ба коди муштарии HTTP/1.1 undici асос ёфтааст ва то ҳадди имкон ба API-и шабеҳе, ки дар браузерҳо пешниҳод шудааст, наздиктар аст. Ин дастгирии интерфейсҳои FormData, Headers, Request and Response барои коркарди дархости HTTP ва сарлавҳаҳои посухро дар бар мегирад. const res = интизори гирифтани овардан ('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = мунтазири res.json(); console.log(маълумот); }
  • Татбиқи таҷрибавии Web Streams API илова карда шуд, ки дастрасӣ ба ҷараёнҳои додаҳои тавассути шабака гирифташударо таъмин мекунад. API имкон медиҳад, ки коркардкунандагони шахсии худро барои кор бо додаҳо илова кунед, зеро иттилоот тавассути шабака бидуни интизории зеркашии тамоми файл. Объектҳое, ки ҳоло дар Node.js дастрасанд, дохил мешаванд ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream ва DecompressionStream.
  • API Blob ба устувор кӯчонида шудааст, ки ба шумо имкон медиҳад, ки маълумоти хоми тағирнашавандаро барои истифодаи бехатар дар риштаҳои гуногуни коргар фаро гиред.
  • API BroadcastChannel устувор карда шудааст, ки ба шумо имкон медиҳад мубодилаи паёмҳоро дар реҷаи асинхронӣ дар формати "як ирсолкунанда - бисёр қабулкунандагон" ташкил кунед.
  • Гиреҳи модули таҷрибавии иловашуда: санҷиш барои эҷод ва иҷро кардани санҷишҳо дар JavaScript, ки натиҷаҳоро дар формати TAP (Test Anything Protocol) бармегардонад.
  • Насли маҷмӯаҳои омода барои Red Hat Enterprise Linux (RHEL) 8 ва дигар дистрибюторҳо дар асоси Glibc 2.28+, аз ҷумла Debian 10 ва Ubuntu 20.04, инчунин барои macOS 10.15+ пешбинӣ шудааст. Аз сабаби мушкилот бо сохтани муҳаррики V8, эҷоди 32-бит барои Windows муваққатан қатъ карда шуд.
  • Имконияти таҷрибавӣ барои сохтани Node.js-и иҷрошаванда бо ҷузъҳои интихобкардаи корбар ҳангоми оғозёбӣ пешниҳод карда шуд. Барои муайян кардани ҷузъҳои ибтидоӣ, опсияи "--node-snapshot-main" ба скрипти сохтани конфигуратсия илова карда шудааст, масалан, "./configure —node-snapshot-main=marked.js; гиреҳи ном"

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

Илова Эзоҳ