Plataforma JavaScript do servidor Node.js 18.0 dispoñible

Lanzouse Node.js 18.0, unha plataforma para executar aplicacións de rede en JavaScript. Node.js 18.0 clasifícase como unha rama de soporte a longo prazo, pero este estado asignarase só en outubro, despois da estabilización. Node.js 18.x será compatible ata abril de 2025. O mantemento da rama LTS anterior de Node.js 16.x durará ata abril de 2024 e o ano anterior á última rama 14.x de LTS ata abril de 2023. A rama 12.x LTS descontinuarase o 30 de abril e a rama de posta en escena de Node.js 17.x o 1 de xuño.

Melloras principais:

  • O motor V8 actualizouse á versión 10.1, que se usa en Chromium 101. En comparación coa versión 17.9.0 de Node.js, agora hai soporte para funcións como os métodos findLast e findLastIndex para buscar elementos relativos ao final de unha matriz e a función Intl.supportedValuesOf. API Intl.Locale mellorada. Acelerouse a inicialización de campos de clase e métodos privados.
  • A API experimental fetch() está habilitada de forma predeterminada, deseñada para cargar recursos na rede. A implementación baséase no código do cliente HTTP/1.1 undici e achégase o máis posible á API similar proporcionada nos navegadores. Isto inclúe soporte para as interfaces FormData, Headers, Request e Response para manipular as cabeceiras de solicitude e resposta HTTP. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json (); console.log(datos); }
  • Engadiuse unha implementación experimental da API de Web Streams, que proporciona acceso aos fluxos de datos recibidos pola rede. A API permite engadir os teus propios controladores para traballar cos datos a medida que a información chega pola rede, sen esperar a que se descargue o ficheiro completo. Os obxectos dispoñibles agora en Node.js inclúen ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream e DecompressionStream.
  • A API Blob moveuse a estable, o que che permite encapsular datos en bruto inmutables para un uso seguro en diferentes fíos de traballo.
  • A API BroadcastChannel estableciuse, o que lle permite organizar o intercambio de mensaxes en modo asíncrono no formato "un remitente - moitos destinatarios".
  • Engadiuse nodo de módulo experimental: proba para crear e executar probas en JavaScript que devolven resultados en formato TAP (Protocolo de proba de calquera cousa).
  • Ofrécese a xeración de conxuntos preparados para Red Hat Enterprise Linux (RHEL) 8 e outras distribucións baseadas en Glibc 2.28+, incluíndo Debian 10 e Ubuntu 20.04, así como para macOS 10.15+. Debido a problemas coa compilación do motor V8, detívose temporalmente a creación de compilacións de 32 bits para Windows.
  • Proporcionou unha opción experimental para construír un executable Node.js con compoñentes seleccionados polo usuario inicializados ao inicio. Para definir os compoñentes iniciais, engadiuse a opción "--node-snapshot-main" ao script de compilación de configuración, por exemplo, "./configure —node-snapshot-main=marked.js; nome nodo"

A plataforma Node.js pódese utilizar tanto para o mantemento do servidor de aplicacións web como para a creación de programas habituais de rede de servidor e cliente. 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 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.

Fonte: opennet.ru

Engadir un comentario