Versión Node.js 14.0 de JavaScript do servidor

tivo lugar liberación Nodo.js 14.0,plataformas para executar aplicacións de rede en JavaScript. Node.js 14.0 é unha rama de soporte a longo prazo, pero este estado só se asignará en outubro, despois da estabilización. Node.js 14.0 será compatible levarse a cabo ata abril de 2023. O mantemento da rama LTS anterior de Node.js 12.0 durará ata abril de 2022 e o ano anterior á última rama LTS 10.0 ata abril de 2021. O soporte para a rama de posta en escena 13.x rematará en xuño deste ano.

O principal melloras:

  • Estabilizouse a capacidade de xerar sobre a marcha ou cando se produzan certos eventos informes de diagnóstico, que mostra eventos que axudan a diagnosticar problemas como fallos, degradación do rendemento, fugas de memoria, carga elevada da CPU, saída de erros inesperados, etc.
  • Engadiuse compatibilidade con API experimental Almacenamento local asíncrono coa implementación da clase AsyncLocalStorage, que se pode usar para crear un estado asíncrono con controladores baseados en chamadas e promesas de devolución de chamada. AsyncLocalStorage permítelle almacenar datos mentres se procesa unha solicitude web, que lembra o almacenamento local de subprocesos noutros idiomas.
  • Eliminouse a mensaxe de aviso sobre a función experimental ao cargar módulos ECMAScript 6 conectado e exportado mediante instrucións de importación e exportación. Ao mesmo tempo, a propia implementación dos módulos ESM segue sendo experimental.
  • Motor V8 actualizado á versión 8.1 (1, 2, 3), que inclúe novas optimizacións de rendemento e funcións como o novo operador de concatenación lóxica "???" (devolve o operando dereito se o operando esquerdo é NULL ou non está definido, e viceversa), o operador "?." para unha comprobación única de toda a cadea de propiedades ou chamadas (por exemplo, “db?.user?.name?.length” sen comprobacións preliminares), o método Intl.DisplayName para obter nomes localizados, etc.
  • Realizouse unha revisión da API de Streams, dirixida a mellorar a coherencia das API de Streams e eliminar as diferenzas no comportamento das partes básicas de Node.js. Por exemplo, o comportamento de http.OutgoingMessage está próximo a stream.Writable e net.Socket é semellante a stream.Duplex. A opción autoDestroy está configurada como "true" por defecto, o que significa chamar a "_destroy" ao finalizar.
  • Engadiuse compatibilidade con API experimental WASI (Interfaz do sistema WebAssembly), proporcionando interfaces de software para a interacción directa co sistema operativo (API POSIX para traballar con ficheiros, sockets, etc.).
  • Aumento dos requisitos para versións mínimas compiladores e plataformas: macOS 10.13 (High Sierra), GCC 6, Windows 7/2008R2 máis recente.

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, un gran número de 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 diversos 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 xestionar un gran número de solicitudes paralelas, Node.js usa un modelo de execución de código asíncrono baseado no procesamento de eventos sen bloqueo e na definición de controladores de devolución de chamada. Os métodos compatibles para multiplexar conexións inclúen epoll, kqueue, /dev/poll e select. A biblioteca úsase para multiplexar conexións libuv, que é unha superestrutura libev en sistemas Unix e a través de IOCP en Windows. Utilízase unha biblioteca para crear un grupo de fíos libeio, para realizar consultas DNS en modo sen bloqueo está integrado c-ares. Todas as chamadas ao sistema que provocan o bloqueo execútanse dentro do grupo de subprocesos e despois, como os controladores de sinal, pasan de volta o resultado do seu traballo a través dunha canalización sen nome. A execución do código JavaScript está garantida mediante o uso dun motor desenvolvido por Google V8 (Ademais, Microsoft está a desenvolver unha versión de Node.js co motor Chakra-Core).

No seu núcleo, Node.js é semellante aos frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted и implementación eventos en Tcl, pero o bucle de eventos en Node.js está oculto para o programador e aseméllase ao manexo de eventos nunha aplicación web que se executa nun navegador. Ao escribir aplicacións para node.js, cómpre ter en conta as características específicas 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..”, función (resultado) {procesamento de resultados});”, no cal o control pasará inmediatamente a outro código e o resultado da consulta procesarase a medida que cheguen os datos. .

Fonte: opennet.ru

Engadir un comentario