Node.js 23.0 платформасы TypeScript тілін бастапқы қолдауымен жарияланды

Node.js 23.0.0, JavaScript тілінде желілік қолданбаларды іске қосу платформасы шығарылды. Node.js 23.0 7 ай бойы (2025 жылдың маусымына дейін) қолдау көрсетілетін аралық тармақ ретінде жіктеледі. Жақын күндері Node.js 22 тармағын тұрақтандыру аяқталады, ол 29 қазанда LTS мәртебесін алады және 2027 жылдың сәуіріне дейін қолдау көрсетіледі. Node.js 20.x және 18.x бұрынғы LTS тармақтарын қолдау сәйкесінше 2026 және 2025 жылдың сәуіріне дейін жалғасады.

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

  • Ашық түр анықтамаларына мүмкіндік беретін TypeScript үшін эксперименттік қолдау қосылды. Қолдау "--экспериментальды-жолақ түрлері" және "--эксперименттік-түрлендіру түрлері" опциялары арқылы қосылады. Бірінші нұсқада TypeScript-пен жұмыс тілге тән тип анықтамаларын тазалауға дейін қысқарады (типті тексеру орындалмайды, код жай ғана типсіз JavaScript-ке түрлендіріледі). Екінші опция нөмірлер мен аттар кеңістігі сияқты кейбір TypeScript синтаксистік элементтерін JavaScript кодына түрлендіреді.
  • Әдепкі бойынша синхронды режимде JavaScript ESM модульдерін (ECMAScript модульдері) жүктеу үшін «талап()» шақыруын пайдалану мүмкіндігі қосылған. ESM модульдері браузерлерде пайдаланылады және Node.js үшін арнайы CommonJS модульдерін ауыстырады. Node.js ішіндегі "require()" арқылы жүктеу үшін ESM модулі синхронды түрде орындалуы керек (жоғарғы деңгейде күтпестен).
  • “.js” кеңейтімі жоқ немесе бар файлдарда ESM модульдерін автоматты түрде анықтау қамтамасыз етілген. Бұрын мұндай файлдар CommonJS модульдері ретінде қарастырылды, егер олардың түрі бір каталогта орналасқан package.json файлында анық көрсетілмесе («түр»: «модуль»). Жаңа нұсқада түрі package.json ішінде көрсетілмеген файлдар үшін ол алдымен CommonJS модулі ретінде, ал егер бұл сәтсіз болса, ESM модулі ретінде жүктеуге тырысады.
  • Эксперименттік енгізу қосылды браузерлермен үйлесімді Web Storage API кілт/мән деректерін тұрақты (localStorage класы) немесе уақытша (sessionStorage класы) сақтауға арналған. Web Storage қолдауын қосу API-ді "--experimental-webstorage" жалаушасымен іске қосуды және "--localstorage-file" жалаушасын пайдаланып сақтау файлына жолды көрсетуді талап етеді.
  • SQLite кітапханасына негізделген SQL сұрау тілін және сақтауды пайдаланып дерекқорлармен жұмыс істеуге арналған эксперименттік SQLite API қосылды. Дерекқорды дискідегі файлда сақтаумен қатар, оны файл атауының орнына «:memory:» көрсету арқылы жадқа орналастыруға болады. Жоғарыда аталған Web Storage API интерфейсі де SQLite үстіне енгізілген, нәтижесінде SQLite Node.js үшін тәуелділік ретінде қосылады.
  • "түйін — іске қосу" пәрмені тұрақты деп жарияланды, ол package.json файлында анықталған сценарийлерді іске қосуға арналған.
  • Модульдерді іске қосуды айтарлықтай жылдамдату үшін дискіде құрастырылған кодты кэштеу үшін қосымша қолдау енгізілді. Кэштеу NODE_COMPILE_CACHE ортасының айнымалы мәні арқылы қосылады. Мақсаты бойынша мүмкіндік v8-компиляция-кэш бумасына ұқсайды, бірақ жоғары өнімділігімен және ESM модульдерін қолдауымен ерекшеленеді.
  • Buffer нысаны Buffer.copy() және Buffer.write() әдістерінің өнімділігін айтарлықтай арттыру үшін оңтайландырылған.
  • Node:fs модулінің өнімділігі жақсартылды, бұл сонымен қатар жұмыс кезінде C++ кодына қоңыраулар санын азайтады.
  • V8 қозғалтқышы Chromium 12.9 жүйесінде қолданылатын 129 нұсқасына жаңартылды.
  • 32 биттік Windows жүйелерін қолдау жойылды.
  • Node.js және V8 қозғалтқышында C++20 стандартында анықталған мүмкіндіктерді енгізуге байланысты GCC компилятор нұсқасына қойылатын талаптар ұлғайтылды. Node.js құру үшін енді кемінде GCC 12 қажет.

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 ішіндегі оқиғалар циклі әзірлеушіден жасырылған және веб-қосымшадағы оқиғаларды өңдеуге ұқсайды. браузерде жұмыс істейді.

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

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