Node.js 14.0 серверлік JavaScript платформасының шығарылымы

Орын алу босату Node 14.0, JavaScript тілінде желілік қолданбаларды іске қосуға арналған платформалар. Node.js 14.0 ұзақ мерзімді қолдау бөлімі болып табылады, бірақ бұл мәртебе тұрақтандырудан кейін қазан айында ғана тағайындалады. Node.js 14.0 нұсқасына қолдау көрсетіледі жүзеге асырылуы 2023 жылдың сәуіріне дейін. Node.js 12.0 алдыңғы LTS филиалына техникалық қызмет көрсету 2022 жылдың сәуіріне дейін және соңғы LTS 10.0 филиалының алдындағы жыл 2021 жылдың сәуіріне дейін созылады. 13.x сахналық тармағына қолдау көрсету ағымдағы жылдың маусым айында аяқталады.

басты жақсартулар:

  • Ұзақ немесе белгілі бір оқиғалар туындаған кезде жасау мүмкіндігі тұрақтандырылды диагностикалық есептер, ол ақауларды диагностикалауға көмектесетін оқиғаларды көрсетеді, мысалы, апаттар, өнімділіктің төмендеуі, жадтың ағуы, процессордың ауыр жүктемесі, күтпеген қате шығуы және т.б.
  • Тәжірибелік API қолдауы қосылды Асинхронды жергілікті сақтау кері шақырулар мен уәделерге негізделген өңдеушілермен асинхронды күйді жасау үшін пайдаланылуы мүмкін AsyncLocalStorage сыныбының жүзеге асырылуымен. AsyncLocalStorage веб-сұраныс өңделіп жатқан кезде деректерді сақтауға мүмкіндік береді, бұл басқа тілдердегі ағынды жергілікті сақтауды еске түсіреді.
  • Жүктеу кезінде эксперименттік мүмкіндік туралы ескерту хабары жойылды модульдер ECMAScript 6 ж импорттау және экспорттау мәлімдемелері арқылы қосылған және экспортталған. Сонымен қатар, ESM модульдерін енгізудің өзі эксперименталды болып қала береді.
  • V8 қозғалтқышы нұсқасына жаңартылды 8.1 (1, 2, 3), ол жаңа өнімділікті оңтайландыруларды және жаңа логикалық біріктіру операторы сияқты мүмкіндіктерді қамтиды "???" (сол операнд NULL немесе анықталмаған болса, оң операндты қайтарады және керісінше), «?.» операторы сипаттардың немесе қоңыраулардың бүкіл тізбегін бір реттік тексеру үшін (мысалы, алдын ала тексерулерсіз «db?.user?.name?.length»), локализацияланған атауларды алуға арналған Intl.DisplayName әдісі және т.б.
  • Streams API интерфейсін қайта қарау жүзеге асырылды, ол Streams API интерфейстерінің үйлесімділігін жақсартуға және Node.js негізгі бөліктерінің әрекетіндегі айырмашылықтарды жоюға бағытталған. Мысалы, http.OutgoingMessage әрекеті stream.Writable-ге жақын және net.Socket - stream.Duplex-ке ұқсас. AutoDestroy опциясы әдепкі бойынша "true" мәніне орнатылған, бұл аяқталғаннан кейін "_destroy" шақыруды білдіреді.
  • Тәжірибелік API қолдауы қосылды WASI (WebAssembly жүйесінің интерфейсі), операциялық жүйемен тікелей әрекеттесу үшін бағдарламалық интерфейстерді қамтамасыз ету (файлдармен, розеткалармен және т.б. жұмыс істеуге арналған POSIX API).
  • қойылатын талаптардың артуы минималды нұсқалары компиляторлар мен платформалар: macOS 10.13 (High Sierra), GCC 6, Windows жаңа 7/2008R2.

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

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

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

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