Versione JavaScript lato server Node.js 14.0

ha avuto luogo rilasciare Nodo.js 14.0,piattaforme per l'esecuzione di applicazioni di rete in JavaScript. Node.js 14.0 è un ramo di supporto a lungo termine, ma questo stato verrà assegnato solo a ottobre, dopo la stabilizzazione. Sarà supportato Node.js 14.0 essere effettuato fino ad aprile 2023. La manutenzione del precedente ramo LTS di Node.js 12.0 durerà fino ad aprile 2022 e l'anno precedente all'ultimo ramo LTS 10.0 fino ad aprile 2021. Il supporto per il ramo di staging 13.x terminerà a giugno di quest'anno.

Il principale miglioramenti:

  • È stata stabilizzata la capacità di generare al volo o al verificarsi di determinati eventi rapporti diagnostici, che visualizzano eventi che aiutano a diagnosticare problemi come arresti anomali, degrado delle prestazioni, perdite di memoria, carico pesante della CPU, output di errori imprevisti, ecc.
  • Aggiunto il supporto API sperimentale Archiviazione locale asincrona con l'implementazione della classe AsyncLocalStorage, che può essere utilizzata per creare stati asincroni con gestori basati su chiamate e promesse di callback. AsyncLocalStorage consente di archiviare dati durante l'elaborazione di una richiesta Web, ricordando l'archiviazione thread-local in altre lingue.
  • Rimosso il messaggio di avviso sulla funzionalità sperimentale durante il caricamento moduli ECMAScript 6 collegati ed esportati utilizzando le istruzioni di importazione ed esportazione. Allo stesso tempo, l’implementazione stessa dei moduli ESM rimane sperimentale.
  • Motore V8 aggiornato alla versione 8.1 (1, 2, 3), che include nuove ottimizzazioni delle prestazioni e funzionalità come il nuovo operatore di concatenazione logica "??" (restituisce l'operando di destra se l'operando di sinistra è NULL o non definito e viceversa), l'operatore "?." per un controllo una tantum dell'intera catena di proprietà o chiamate (ad esempio "db?.user?.name?.length" senza controlli preliminari), il metodo Intl.DisplayName per ottenere nomi localizzati, ecc.
  • È stata effettuata una revisione delle Streams API, volta a migliorare la consistenza delle Streams API ed eliminare le differenze nel comportamento delle parti base di Node.js. Ad esempio, il comportamento di http.OutgoingMessage è simile a stream.Writable e net.Socket è simile a stream.Duplex. L'opzione autoDestroy è impostata su "true" per impostazione predefinita, il che significa chiamare "_destroy" al termine.
  • Aggiunto il supporto API sperimentale ERO IO (Interfaccia di sistema WebAssembly), fornendo interfacce software per l'interazione diretta con il sistema operativo (API POSIX per lavorare con file, socket, ecc.).
  • Maggiori requisiti per versioni minime compilatori e piattaforme: macOS 10.13 (High Sierra), GCC 6, Windows più recente 7/2008R2.

Ricordiamo che la piattaforma Node.js può essere utilizzata sia per il supporto server di applicazioni Web sia per la creazione di normali programmi di rete client e server. Per espandere la funzionalità delle applicazioni per Node.js, un gran numero di raccolta di moduli, in cui puoi trovare moduli con l'implementazione di server e client HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli per l'integrazione con vari framework web, gestori WebSocket e Ajax, connettori a DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), template engine, motori CSS, implementazioni di algoritmi crittografici e sistemi di autorizzazione (OAuth), parser XML.

Per gestire un gran numero di richieste parallele, Node.js utilizza un modello di esecuzione del codice asincrono basato sull'elaborazione di eventi non bloccanti e sulla definizione di gestori di callback. I metodi supportati per le connessioni multiplex includono epoll, kqueue, /dev/poll e select. La libreria viene utilizzata per connessioni multiplex libuv, che è una sovrastruttura sopra libevo su sistemi Unix e su IOCP su Windows. Una libreria viene utilizzata per creare un pool di thread libeio, per eseguire query DNS in modalità non bloccante è integrato c-ares. Tutte le chiamate di sistema che causano il blocco vengono eseguite all'interno del pool di thread e quindi, come i gestori di segnali, restituiscono il risultato del loro lavoro attraverso una pipe senza nome. L'esecuzione del codice JavaScript è assicurata attraverso l'utilizzo di un motore sviluppato da Google V8 (Inoltre, Microsoft sta sviluppando una versione di Node.js con il motore Chakra-Core).

Fondamentalmente, Node.js è simile ai framework Perl Qualsiasi Evento, Macchina degli eventi Ruby, Pitone Contorto и implementazione eventi in Tcl, ma il loop degli eventi in Node.js è nascosto allo sviluppatore e assomiglia alla gestione degli eventi in un'applicazione Web in esecuzione in un browser. Quando si scrivono applicazioni per node.js, è necessario tenere conto delle specificità della programmazione basata sugli eventi, ad esempio, invece di fare "var result = db.query("select..");" con l'attesa del completamento del lavoro e la successiva elaborazione dei risultati, Node.js utilizza il principio dell'esecuzione asincrona, ovvero il codice viene trasformato in "db.query("select..", funzione (risultato) {elaborazione risultato});", in cui il controllo passerà immediatamente a ulteriore codice e il risultato della query verrà elaborato all'arrivo dei dati. .

Fonte: opennet.ru

Aggiungi un commento