Versión Node.js 16.0 de JavaScript do servidor

Lanzouse Node.js 16.0, unha plataforma para executar aplicacións de rede en JavaScript. Node.js 16.0 clasifícase como unha rama de soporte a longo prazo, pero este estado asignarase só en outubro, despois da estabilización. Node.js 16.0 será compatible ata abril de 2023. O mantemento da rama LTS anterior de Node.js 14.0 durará ata abril de 2023 e o ano anterior á última rama LTS 12.0 ata abril de 2022. O soporte para a rama 10.0 LTS cesarase en 10 días.

Melloras principais:

  • O motor V8 actualizouse á versión 9.0 (Node.js 15 utilizou a versión 8.6), que permite a implementación de funcións como a propiedade "índices" para expresións regulares (inclúe unha matriz coas posicións iniciais e finais dos grupos de coincidencias) , o método Atomics en Node.js 16 .waitAsync (versión asíncrona de Atomics.wait), soporte para usar a palabra clave await nos módulos de nivel superior. Aceleráronse as chamadas de función en situacións nas que o número de argumentos pasados ​​non se corresponde cos parámetros definidos na función.
  • A API de Timers Promises estabilizouse, proporcionando un conxunto alternativo de funcións para traballar con temporizadores que devolven obxectos Promise como saída, o que elimina a necesidade de usar util.promisify(). importar { setTimeout } de 'temporizadores/promesas'; función asíncrona run() { await setTimeout (5000); console.log('Ola, mundo!'); } executar();
  • Engadiuse unha implementación experimental da API Web Crypto, deseñada para realizar operacións criptográficas básicas ao lado das aplicacións web, como manipular hash criptográficos, xerar e verificar sinaturas dixitais, codificar e decodificar datos mediante varios métodos de cifrado e xerar cifras seguras. números aleatorios. A API tamén ofrece funcións para xerar e xestionar claves.
  • Actualizouse a N-API (API para desenvolver complementos) á versión 8.
  • Realizouse a transición á nova versión do xestor de paquetes NPM 7.10.
  • Estabilizouse a implementación da clase AbortController, que está baseada na API web AbortController e permite cancelar os sinais nas API baseadas en Promise seleccionadas.
  • Estabilizouse o soporte para a terceira versión do formato Source Map, usado para comparar módulos xerados, procesados ​​ou empaquetados co código fonte orixinal.
  • Para a compatibilidade coas API web antigas, engadíronse os métodos buffer.atob(data) e buffer.btoa(data).
  • Comezou a formación de conxuntos para novos dispositivos Apple equipados co chip M1 ARM.
  • Na plataforma Linux, os requisitos da versión do compilador eleváronse a GCC 8.3.

Lembremos que a plataforma Node.js pódese usar tanto para o soporte do servidor de aplicacións web como para crear programas de rede de servidor e cliente comúns. Para ampliar a funcionalidade das aplicacións para Node.js, preparouse unha gran colección de módulos, nos que se poden atopar módulos coa implementación de servidores e clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para a integración. con varios frameworks web, manejadores WebSocket e Ajax, conectores a DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motores de modelos, motores CSS, implementacións de algoritmos criptográficos e sistemas de autorización (OAuth), analizadores XML.

Para garantir o procesamento dunha gran cantidade de solicitudes paralelas, Node.js usa un modelo de execución de código asíncrono baseado no manexo de eventos sen bloqueo e na definición de controladores de devolución de chamada. Os métodos compatibles para multiplexar conexións son epoll, kqueue, /dev/poll e select. Para a multiplexación de conexións, úsase a biblioteca libuv, que é un complemento para libev en sistemas Unix e IOCP en Windows. A biblioteca libeio úsase para crear unha agrupación de fíos e c-ares está integrado para realizar consultas DNS en modo sen bloqueo. Todas as chamadas ao sistema que provocan o bloqueo execútanse dentro do grupo de fíos e despois, como os controladores de sinal, transfiren o resultado do seu traballo de volta a través dunha canalización sen nome (tubo). A execución de código JavaScript proporciónase mediante o uso do motor V8 desenvolvido por Google (ademais, Microsoft está a desenvolver unha versión de Node.js co motor Chakra-Core).

No seu núcleo, Node.js é similar aos marcos Perl AnyEvent, Ruby Event Machine, Python Twisted e a implementación de eventos Tcl, pero o bucle de eventos en Node.js está oculto para o desenvolvedor e aseméllase ao manexo de eventos nunha aplicación web en execución. no navegador. Ao escribir aplicacións para node.js, cómpre ter en conta os detalles específicos da programación dirixida por eventos, por exemplo, en lugar de facer "var result = db.query("select..");" coa espera da finalización do traballo e do procesamento posterior dos resultados, Node.js utiliza o principio de execución asíncrona, é dicir. o código transfórmase en "db.query("select..", function (result) {result processing});", no que o control pasará instantáneamente a outro código e o resultado da consulta procesarase a medida que cheguen os datos.

Ademais, pódese sinalar que a empresa Deno, fundada polo creador de Node.js para desenvolver a plataforma Deno de próxima xeración, recibiu 4.9 millóns de dólares en investimentos. No seu propósito, Deno é semellante a Node.js, pero tenta eliminar os erros conceptuais cometidos na arquitectura Node.js e proporcionar aos usuarios un ambiente máis seguro. Nótase que as solucións comerciais de Deno construiranse en produtos completamente abertos e que o modelo Open Core con funcións de pago separadas percíbese como inaceptable para a plataforma Deno.

Fonte: opennet.ru

Engadir un comentario