Сервер жағындағы JavaScript платформасы Node.js 18.0 қолжетімді

Node.js 18.0 шығарылды, бұл JavaScript тілінде желілік қолданбаларды іске қосу платформасы. Node.js 18.0 ұзақ мерзімді қолдау тармағы ретінде жіктеледі, бірақ бұл мәртебе тұрақтандырудан кейін қазан айында ғана тағайындалады. Node.js 18.x нұсқасына 2025 жылдың сәуіріне дейін қолдау көрсетіледі. Node.js 16.x алдыңғы LTS филиалына техникалық қызмет көрсету 2024 жылдың сәуіріне дейін және соңғы LTS 14.x филиалының алдындағы жыл 2023 жылдың сәуіріне дейін созылады. 12.x LTS тармағы 30 сәуірде тоқтатылады, ал Node.js 17.x кезеңдік тармағы 1 маусымда тоқтатылады.

Негізгі жақсартулар:

  • V8 қозғалтқышы Chromium 10.1 жүйесінде қолданылатын 101 нұсқасына жаңартылды. Node.js 17.9.0 шығарылымымен салыстырғанда, енді findLast және findLastIndex әдістерінің соңына қатысты элементтерді табу сияқты мүмкіндіктерге қолдау көрсетіледі. массив және Intl.supportedValuesOf функциясы. Жақсартылған Intl.Locale API. Класс өрістерін және жеке әдістерді инициализациялау жеделдетілді.
  • Эксперименттік fetch() API әдепкі бойынша қосылған, желі арқылы ресурстарды жүктеуге арналған. Іске асыру HTTP/1.1 undici клиентінің кодына негізделген және браузерлерде берілген ұқсас API мүмкіндігінше жақын. Бұл HTTP сұрауы мен жауап тақырыптарын басқаруға арналған FormData, тақырыптар, сұрау және жауап интерфейстерін қолдауды қамтиды. 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 кіреді.
  • Blob API тұрақты күйге ауыстырылды, бұл әртүрлі жұмыс ағындарында қауіпсіз пайдалану үшін өзгермейтін бастапқы деректерді инкапсуляциялауға мүмкіндік береді.
  • BroadcastChannel API тұрақты болды, бұл «бір жіберуші - көп алушы» пішімінде асинхронды режимде хабар алмасуды ұйымдастыруға мүмкіндік береді.
  • TAP (Test Anything Protocol) пішімінде нәтижелерді қайтаратын JavaScript-те сынақтарды жасауға және іске қосуға арналған эксперименттік модуль түйіні қосылды.
  • Red Hat Enterprise Linux (RHEL) 8 және Glibc 2.28+ негізіндегі басқа дистрибутивтер, соның ішінде Debian 10 және Ubuntu 20.04, сондай-ақ macOS 10.15+ үшін дайын жинақтарды құру қамтамасыз етілген. V8 қозғалтқышының құрастыруындағы ақауларға байланысты Windows жүйесіне арналған 32-биттік құрылымдарды жасау уақытша тоқтатылды.
  • Іске қосу кезінде инициализацияланған пайдаланушы таңдаған құрамдастары бар Node.js орындалатын файлын құру үшін эксперименттік опция ұсынылды. Бастапқы құрамдастарды анықтау үшін конфигурация құрастыру сценарийіне “--node-snapshot-main” опциясы қосылды, мысалы, “./configure —node-snapshot-main=marked.js; атау түйіні»

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 және таңдау болып табылады. Қосылымды мультиплекстеу үшін Unix жүйелерінде libev және Windows жүйесінде IOCP үшін қосымша болып табылатын libuv кітапханасы пайдаланылады. Libeio кітапханасы ағындар пулын жасау үшін пайдаланылады, ал c-ares блокталмаған режимде DNS сұрауларын орындау үшін біріктірілген. Блоктауды тудыратын барлық жүйелік шақырулар ағынды пулдың ішінде орындалады, содан кейін сигнал өңдеушілері сияқты өз жұмысының нәтижесін атауы жоқ құбыр (құбыр) арқылы кері тасымалдайды. JavaScript кодының орындалуы Google әзірлеген V8 қозғалтқышын пайдалану арқылы қамтамасыз етіледі (осыдан басқа, Microsoft Chakra-Core қозғалтқышы бар Node.js нұсқасын әзірлеуде).

Негізінде Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted құрылымдарына және Tcl оқиғасын іске асыруға ұқсас, бірақ Node.js ішіндегі оқиғалар циклі әзірлеушіден жасырылған және іске қосылған веб-бағдарламада оқиғаларды өңдеуге ұқсайды. браузерде. node.js үшін қолданбаларды жазғанда, мысалы, "var result = db.query("select..");" орындаудың орнына оқиғаға негізделген бағдарламалаудың ерекшеліктерін ескеру қажет. жұмыстың аяқталуын күтумен және нәтижелерді кейіннен өңдеумен, Node.js асинхронды орындау принципін пайдаланады, яғни. код "db.query("select..", функция (нәтиже) {нәтижені өңдеу}); түрлендіріледі, онда басқару бірден келесі кодқа өтеді, ал сұрау нәтижесі деректер келген сайын өңделеді.

Ақпарат көзі: opennet.ru

пікір қалдыру