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

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

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

  • V8 қозғалтқышы 9.0 нұсқасына жаңартылды (Node.js 15 пайдаланылған шығарылым 8.6), ол тұрақты өрнектерге арналған «индекстер» сипаты сияқты мүмкіндіктерді жүзеге асыруға мүмкіндік береді (сәйкестік топтарының бастапқы және аяқталу орындары бар массивті қамтиды) , Node.js 16 .waitAsync ішіндегі Atomics әдісі (Atomics.wait синхронды нұсқасы), жоғарғы деңгейлі модульдерде await кілт сөзін пайдалануды қолдау. Өткізілген аргументтер саны функцияда анықталған параметрлерге сәйкес келмейтін жағдайларда функцияны шақыру жеделдетілді.
  • Timers Promises API тұрақтандырылды, ол Util.promisify() пайдалану қажеттілігін жоққа шығаратын Promise нысандарын шығыс ретінде қайтаратын таймерлермен жұмыс істеу үшін балама функциялар жинағын қамтамасыз етеді. "таймерлер/уәделерден" { setTimeout } импорттау; async функциясы run() { күту setTimeout(5000); console.log('Сәлем, әлем!'); } run();
  • Криптографиялық хэштермен манипуляциялау, сандық қолтаңбаларды жасау және тексеру, әртүрлі шифрлау әдістерін пайдалана отырып деректерді кодтау және декодтау және криптографиялық қауіпсіз құру сияқты веб-қосымшалар жағында негізгі криптографиялық операцияларды орындауға арналған Web Crypto API тәжірибелік енгізуі қосылды. кездейсоқ сандар. API сонымен қатар кілттерді жасау және басқару функцияларын қамтамасыз етеді.
  • N-API (қондырмаларды әзірлеуге арналған API) 8 нұсқасына жаңартылды.
  • NPM 7.10 пакет менеджерінің жаңа шығарылымына көшу жасалды.
  • AbortController Web API интерфейсіне негізделген және таңдалған Promise негізіндегі API интерфейстерінде сигналдардан бас тартуға мүмкіндік беретін AbortController сыныбының орындалуы тұрақтандырылды.
  • Жасалған, өңделген немесе бумаланған модульдерді бастапқы бастапқы кодпен салыстыру үшін пайдаланылатын Source Map пішімінің үшінші нұсқасын қолдау тұрақтандырылды.
  • Бұрынғы Web API интерфейстерімен үйлесімділік үшін buffer.atob(data) және buffer.btoa(data) әдістері қосылды.
  • M1 ARM чипімен жабдықталған жаңа Apple құрылғыларына арналған жинақтарды қалыптастыру басталды.
  • Linux платформасында компилятор нұсқасының талаптары GCC 8.3 дейін көтерілді.

Еске салайық, 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..", функция (нәтиже) {нәтижені өңдеу}); түрлендіріледі, онда басқару бірден келесі кодқа өтеді, ал сұрау нәтижесі деректер келген сайын өңделеді.

Сонымен қатар, келесі буын Deno платформасын дамыту үшін Node.js құрушысы негізін қалаған Deno компаниясы 4.9 миллион доллар инвестиция алғанын атап өтуге болады. Мақсаты бойынша Deno Node.js-ке ұқсас, бірақ ол Node.js архитектурасында жіберілген тұжырымдамалық қателерді жоюға және пайдаланушыларға қауіпсіз ортаны қамтамасыз етуге тырысады. Deno бизнес шешімдері толығымен ашық өнімдерде құрылатыны және бөлек ақылы функционалдығы бар Open Core моделі Deno платформасы үшін қолайсыз деп қабылданатыны атап өтілді.

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

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