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

Node.js 19.0, JavaScript тілінде желілік қолданбаларды іске қосу платформасы шығарылды. Node.js 19 - 2023 жылдың маусымына дейін қол жетімді жаңартулары бар тұрақты қолдау бөлімі. Жақын күндері Node.js 18 тармағын тұрақтандыру аяқталады, ол LTS мәртебесін алады және 2025 жылдың сәуіріне дейін қолдау көрсетіледі. Node.js 16.0 алдыңғы LTS филиалына техникалық қызмет көрсету 2023 жылдың қыркүйегіне дейін және соңғы LTS 14.0 филиалының алдындағы жыл 2023 жылдың сәуіріне дейін созылады.

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

  • V8 қозғалтқышы Chromium 10.7-де қолданылған 107 нұсқасына жаңартылды. Node.js 18 тармағымен салыстырғанда қозғалтқыштағы өзгерістердің ішінде Intl.NumberFormat API үшінші нұсқасының жүзеге асырылғаны атап өтілді, ол formatRange жаңа функцияларын қосады. (), formatRangeToParts() және selectRange(), жиындарды топтау, дөңгелектеу және дәлдікті орнатудың жаңа опциялары, жолдарды ондық сандар ретінде түсіндіру мүмкіндігі. Қосылған llhttp 8.1.0 және npm 8.19.2 тәуелділіктері де жаңартылды.
  • Эксперименттік "node -watch" пәрмені импортталған файл өзгерген кезде процестің қайта іске қосылуын қамтамасыз ететін бақылау режимін жүзеге асырумен ұсынылды (мысалы, "node -watch index.js" орындалса, процесс келесідей болады: index.js өзгерген кезде автоматты түрде қайта іске қосылады).
  • Барлық шығыс HTTP/HTTPS қосылымдары үшін HTTP 1.1 Keep-Alive механизмін қолдау қосылады, ол бір қосылым ішінде бірнеше HTTP сұрауларын өңдеу үшін қосылымды белгілі бір уақытқа ашық қалдырады. Keep-Alive өткізу қабілеті мен өнімділігін арттырады деп күтілуде. Әдепкі бойынша, қосылымның ашық күту уақыты 5 секундқа орнатылған. Сервер жауаптарында Keep-Alive HTTP тақырыбын талдауға қолдау HTTP клиентін іске асыруға қосылды және Keep-Alive арқылы белсенді емес клиенттерді автоматты түрде ажырату Node.js HTTP серверін іске асыруға қосылды.
  • Ed25519, Ed448, X25519 және X448 алгоритмдерін пайдаланатын функцияларды қоспағанда, WebCrypto API тұрақты санатқа ауыстырылды. WebCrypto модуліне қол жеткізу үшін сіз енді globalThis.crypto немесе талап('түйін:crypto').webcrypto пайдалана аласыз.
  • DTrace, SystemTap және ETW (Windows үшін оқиғаны қадағалау) бақылау құралдарына қолдау жойылды, оларға техникалық қызмет көрсету тиісті қолдау жоспары болмаған кезде оны жаңартудың күрделілігіне байланысты орынсыз деп саналды.

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

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