Bedienerkant JavaScript-platform Node.js 19.0 beskikbaar

Node.js 19.0, 'n platform om netwerktoepassings in JavaScript te laat loop, is vrygestel. Node.js 19 is 'n gereelde ondersteuningstak met opdaterings beskikbaar tot Junie 2023. In die komende dae sal die stabilisering van die Node.js 18-tak voltooi word, wat LTS-status sal ontvang en tot April 2025 ondersteun sal word. Instandhouding van die vorige LTS-tak van Node.js 16.0 sal tot September 2023 duur, en die vorige jaar LTS-tak 14.0 tot April 2023.

Belangrikste verbeterings:

  • Die V8-enjin is opgedateer na weergawe 10.7, wat in Chromium 107 gebruik word. Onder die veranderinge in die enjin in vergelyking met die Node.js 18-tak, word die implementering van die derde weergawe van die Intl.NumberFormat API opgemerk, wat nuwe funksies byvoeg formatRange (), formatRangeToParts() en selectRange(), groepering van stelle, nuwe opsies vir afronding en stelpresisie, die vermoë om stringe as desimale getalle te interpreteer. Die ingeslote afhanklikhede llhttp 8.1.0 en npm 8.19.2 is ook opgedateer.
  • 'n Eksperimentele "node -watch"-opdrag is voorgestel met die implementering van 'n kykmodus wat verseker dat die proses herbegin word wanneer die ingevoerde lêer verander (byvoorbeeld, as "node -watch index.js" uitgevoer word, sal die proses wees outomaties herbegin wanneer index.js verander).
  • Vir alle uitgaande HTTP/HTTPS-verbindings is ondersteuning vir die HTTP 1.1 Keep-Alive-meganisme geaktiveer, wat die verbinding vir 'n sekere tyd oop laat om verskeie HTTP-versoeke binne dieselfde verbinding te verwerk. Keep-Alive sal na verwagting deurset en werkverrigting verbeter. By verstek is die oopmaaktydperk vir verbinding op 5 sekondes gestel. Ondersteuning vir die ontleding van die Keep-Alive HTTP-opskrif in bedienerantwoorde is by die HTTP-kliëntimplementering gevoeg, en outomatiese ontkoppeling van onaktiewe kliënte wat Keep-Alive gebruik, is by die Node.js HTTP-bedienerimplementering gevoeg.
  • Die WebCrypto API is oorgedra na die stabiele kategorie, met die uitsondering van funksies wat die Ed25519, Ed448, X25519 en X448 algoritmes gebruik. Om toegang tot die WebCrypto-module te verkry, kan jy nou globalThis.crypto of require('node:crypto').webcrypto gebruik.
  • Ondersteuning vir die DTrace-, SystemTap- en ETW (Event Tracing for Windows) opsporingsnutsmiddels is verwyder, waarvan die instandhouding as onvanpas beskou is weens die kompleksiteit om dit op datum te hou in die afwesigheid van 'n behoorlike ondersteuningsplan.

Die Node.js-platform kan gebruik word vir beide bedieneronderhoud van webtoepassings en vir die skep van gereelde kliënt- en bedienernetwerkprogramme. Om die funksionaliteit van toepassings vir Node.js uit te brei, is 'n groot versameling modules voorberei, waarin u modules kan vind met die implementering van HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-bedieners en -kliënte, modules vir integrasie met verskeie webraamwerke, WebSocket- en Ajax-hanteerders, DBMS-koppelaars (MySQL, PostgreSQL, SQLite, MongoDB), sjabloonenjins, CSS-enjins, implementering van kripto-algoritmes en magtigingstelsels (OAuth), XML-ontleders.

Om die verwerking van 'n groot aantal parallelle versoeke te verseker, gebruik Node.js 'n asynchrone kode-uitvoeringsmodel gebaseer op nie-blokkerende gebeurtenishantering en die definisie van terugbelhanteerders. Ondersteunde metodes vir multipleksing van verbindings is epoll, kqueue, /dev/poll, en select. Vir verbindingsmultipleksing word die libuv-biblioteek gebruik, wat 'n byvoeging is vir libev op Unix-stelsels en IOCP op Windows. Die libeio-biblioteek word gebruik om 'n draadpoel te skep, en c-ares is geïntegreer om DNS-navrae in nie-blokkerende modus uit te voer. Alle stelseloproepe wat blokkering veroorsaak, word binne die draadpoel uitgevoer en dra dan, soos seinhanteerders, die resultaat van hul werk terug deur 'n naamlose pyp (pyp). Die uitvoering van JavaScript-kode word verskaf deur die gebruik van die V8-enjin wat deur Google ontwikkel is (daarby ontwikkel Microsoft 'n weergawe van Node.js met die Chakra-Core-enjin).

In sy kern is Node.js soortgelyk aan die Perl AnyEvent, Ruby Event Machine, Python Twisted-raamwerke en die Tcl-gebeurtenisimplementering, maar die gebeurtenislus in Node.js is weggesteek vir die ontwikkelaar en lyk soos gebeurtenishantering in 'n webtoepassing wat loop in blaaier. Wanneer u toepassings vir node.js skryf, moet u die besonderhede van gebeurtenisgedrewe programmering oorweeg, byvoorbeeld, in plaas daarvan om "var result = db.query("select..");" te doen. met wag vir voltooiing van werk en daaropvolgende verwerking van resultate, gebruik Node.js die beginsel van asynchrone uitvoering, m.a.w. die kode word getransformeer na "db.query("selekteer..", funksie (resultaat) {resultaatverwerking});", waarin beheer onmiddellik na verdere kode sal oorgaan, en die navraagresultaat sal verwerk word soos data aankom.

Bron: opennet.ru

Voeg 'n opmerking