Server-side JavaScript-plattform Node.js 19.0 är tillgänglig

Node.js 19.0, en plattform för att köra nätverksapplikationer i JavaScript, släpptes. Node.js 19 är en vanlig supportgren med uppdateringar tillgängliga fram till juni 2023. Under de kommande dagarna kommer stabiliseringen av Node.js 18-grenen att slutföras, som kommer att få LTS-status och kommer att stödjas fram till april 2025. Underhållet av den tidigare LTS-grenen av Node.js 16.0 kommer att pågå till september 2023, och året innan, LTS-gren 14.0 till april 2023.

Huvudsakliga förbättringar:

  • V8-motorn har uppdaterats till version 10.7, som används i Chromium 107. Bland förändringarna i motorn jämfört med Node.js 18-grenen noteras implementeringen av den tredje versionen av Intl.NumberFormat API, som lägger till nya funktioner formatRange (), formatRangeToParts() och selectRange(), gruppering av uppsättningar, nya alternativ för avrundning och inställningsprecision, möjligheten att tolka strängar som decimaltal. De inkluderade beroendena llhttp 8.1.0 och npm 8.19.2 har också uppdaterats.
  • Ett experimentellt "node -watch"-kommando har föreslagits med implementering av ett bevakningsläge som säkerställer att processen startas om när den importerade filen ändras (till exempel om "node -watch index.js" körs, kommer processen att vara startas om automatiskt när index.js ändras).
  • För alla utgående HTTP/HTTPS-anslutningar är stöd för HTTP 1.1 Keep-Alive-mekanismen aktiverat, vilket lämnar anslutningen öppen under en viss tid för att behandla flera HTTP-förfrågningar inom samma anslutning. Keep-Alive förväntas förbättra genomströmning och prestanda. Som standard är tidsgränsen för öppen anslutning inställd på 5 sekunder. Stöd för att analysera Keep-Alive HTTP-huvudet i serversvar har lagts till i HTTP-klientimplementeringen, och automatisk bortkoppling av inaktiva klienter som använder Keep-Alive har lagts till i Node.js HTTP-serverimplementeringen.
  • WebCrypto API har överförts till den stabila kategorin, med undantag för funktioner som använder Ed25519, Ed448, X25519 och X448 algoritmer. För att komma åt WebCrypto-modulen kan du nu använda globalThis.crypto eller require('node:crypto').webcrypto.
  • Stödet för spårningsverktygen DTrace, SystemTap och ETW (Event Tracing for Windows) har tagits bort, vars underhåll ansågs olämpligt på grund av komplexiteten i att hålla den uppdaterad i avsaknad av en ordentlig supportplan.

Node.js-plattformen kan användas både för serverunderhåll av webbapplikationer och för att skapa vanliga klient- och servernätverksprogram. För att utöka funktionaliteten av applikationer för Node.js har en stor samling av moduler utarbetats, där du kan hitta moduler med implementering av HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-servrar och klienter, moduler för integration med olika webbramverk, WebSocket- och Ajax-hanterare, DBMS-anslutningar (MySQL, PostgreSQL, SQLite, MongoDB), mallmotorer, CSS-motorer, implementeringar av kryptoalgoritmer och auktoriseringssystem (OAuth), XML-parsers.

För att säkerställa bearbetningen av ett stort antal parallella förfrågningar använder Node.js en asynkron kodexekveringsmodell baserad på icke-blockerande händelsehantering och definitionen av callback-hanterare. Metoder som stöds för multiplexering av anslutningar är epoll, kqueue, /dev/poll och select. För anslutningsmultiplexering används libuv-biblioteket, som är ett tillägg för libev på Unix-system och IOCP på Windows. Libeio-biblioteket används för att skapa en trådpool, och c-ares är integrerad för att utföra DNS-frågor i icke-blockerande läge. Alla systemanrop som orsakar blockering exekveras inne i trådpoolen och överför sedan, liksom signalhanterare, resultatet av sitt arbete tillbaka genom ett namnlöst rör (pipe). Exekveringen av JavaScript-kod tillhandahålls genom användningen av V8-motorn som utvecklats av Google (dessutom utvecklar Microsoft en version av Node.js med Chakra-Core-motorn).

I sin kärna liknar Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted och implementeringen av Tcl-händelser, men händelseslingan i Node.js är dold för utvecklaren och liknar händelsehantering i en webbapplikation som körs i webbläsaren. När du skriver applikationer för node.js måste du ta hänsyn till detaljerna för händelsestyrd programmering, till exempel istället för att göra "var result = db.query("select..");" med väntan på slutförande av arbete och efterföljande bearbetning av resultat, använder Node.js principen om asynkron exekvering, d.v.s. koden omvandlas till "db.query("select..", funktion (resultat) {resultatbearbetning});", där kontrollen omedelbart kommer att övergå till ytterligare kod, och frågeresultatet kommer att bearbetas när data anländer.

Källa: opennet.ru

Lägg en kommentar