Servilflanka JavaScript-platformo Node.js 18.0 havebla

Node.js 18.0 estis publikigita, platformo por ruli retajn aplikojn en JavaScript. Node.js 18.0 estas klasifikita kiel longdaŭra subtena branĉo, sed ĉi tiu statuso estos atribuita nur en oktobro, post stabiligo. Node.js 18.x estos subtenata ĝis aprilo 2025. Prizorgado de la antaŭa LTS-filio de Node.js 16.x daŭros ĝis aprilo 2024, kaj la jaron antaŭ la lasta LTS-filio 14.x ĝis aprilo 2023. La 12.x LTS-branĉo estos ĉesigita la 30-an de aprilo, kaj la Node.js 17.x sursceniga branĉo estos ĉesigita la 1-an de junio.

Ĉefaj plibonigoj:

  • La V8-motoro estis ĝisdatigita al versio 10.1, kiu estas uzata en Chromium 101. Kompare kun la 17.9.0 eldono de Node.js, ekzistas nun subteno por funkcioj kiel la findLast kaj findLastIndex-metodoj por trovi elementojn rilate al la fino de tabelo, kaj la funkcio Intl.supportedValuesOf. Plibonigita Intl.Locale API. La inicialigo de klasaj kampoj kaj privataj metodoj estis akcelita.
  • La eksperimenta fetch() API estas ebligita defaŭlte, dizajnita por ŝarĝi rimedojn tra la reto. La efektivigo baziĝas sur kodo de la kliento HTTP/1.1 undici kaj estas kiel eble plej proksima al la simila API provizita en retumiloj. Ĉi tio inkluzivas subtenon por la interfacoj FormData, Headers, Request kaj Response por manipuli HTTP-petojn kaj respondajn kapliniojn. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = atendi res.json (); console.log(datenoj); }
  • Eksperimenta efektivigo de la Web Streams API estis aldonita, disponigante aliron al datumfluoj ricevitaj tra la reto. La API ebligas aldoni viajn proprajn traktilojn por labori kun datumoj kiam informoj alvenas tra la reto, sen atendi ke la tuta dosiero estos elŝutita. Objektoj nun haveblaj en Node.js inkluzivas ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream kaj DecompressionStream.
  • La Blob API estis movita al stabila, permesante al vi enkapsuligi neŝanĝeblajn krudajn datumojn por sekura uzo en malsamaj laborfadenoj.
  • La BroadcastChannel API fariĝis stabila, permesante al vi organizi la interŝanĝon de mesaĝoj en nesinkrona reĝimo en la formato "unu sendinto - multaj ricevantoj".
  • Aldonita eksperimenta modula nodo:testo por krei kaj ruli testojn en JavaScript, kiuj resendas rezultojn en formato TAP (Test Anything Protocol).
  • La generacio de pretaj asembleoj por Red Hat Enterprise Linux (RHEL) 8 kaj aliaj distribuoj bazitaj sur Glibc 2.28+, inkluzive de Debian 10 kaj Ubuntu 20.04, same kiel por macOS 10.15+ estas provizita. Pro problemoj kun la V8-motora konstruo, la kreado de 32-bitaj konstruoj por Vindozo estis provizore ĉesigita.
  • Provizis eksperimentan opcion por konstrui Node.js ruleblan kun uzant-elektitaj komponentoj pravigitaj ĉe ekfunkciigo. Por difini la komencajn komponantojn, la opcio "--node-snapshot-main" estis aldonita al la konfigura konstrua skripto, ekzemple, "./configure —node-snapshot-main=marked.js; nomo nodo"

La platformo Node.js povas esti uzata kaj por servila prizorgado de Retaj aplikaĵoj kaj por krei regulajn programojn pri kliento kaj servilo. Por vastigi la funkciecon de aplikoj por Node.js, granda kolekto de moduloj estis preparita, en kiuj vi povas trovi modulojn kun la efektivigo de HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-serviloj kaj klientoj, moduloj por integriĝo. kun diversaj retkadroj, WebSocket kaj Ajax-traktiloj, DBMS-konektiloj (MySQL, PostgreSQL, SQLite, MongoDB), ŝablonaj motoroj, CSS-motoroj, efektivigoj de kriptaj algoritmoj kaj rajtigaj sistemoj (OAuth), XML-analiziloj.

Por certigi la prilaboradon de granda nombro da paralelaj petoj, Node.js uzas nesinkronan kodan ekzekutmodelon bazitan sur ne-bloka evento-traktado kaj la difino de revokaj pritraktiloj. Subtenataj metodoj por multipleksaj konektoj estas epoll, kqueue, /dev/poll, kaj select. Por koneksa multipleksado, la biblioteko libuv estas uzata, kiu estas aldonaĵo por libev ĉe Unikso-sistemoj kaj IOCP ĉe Vindozo. La biblioteko libeio estas uzata por krei fadenan naĝejon, kaj c-ares estas integrita por fari DNS-demandojn en ne-bloka reĝimo. Ĉiuj sistemvokoj kiuj kaŭzas blokadon estas ekzekutitaj ene de la fadena naĝejo kaj tiam, kiel signaltraktantoj, translokigas la rezulton de sia laboro reen tra nenomita pipo (pipo). La ekzekuto de JavaScript-kodo estas provizita per la uzo de la V8-motoro evoluigita de Guglo (krome, Microsoft disvolvas version de Node.js kun la Chakra-Core-motoro).

En ĝia kerno, Node.js estas simila al la Perl AnyEvent, Ruby Event Machine, Python Twisted kadroj, kaj la Tcl-okazaĵefektivigo, sed la eventa buklo en Node.js estas kaŝita de la programisto kaj similas evento-traktadon en TTT-aplikaĵo funkcianta. en retumilo. Kiam vi verkas aplikaĵojn por node.js, vi devas konsideri la specifaĵojn de okazaĵa programado, ekzemple, anstataŭ fari "var result = db.query ("select..");" kun atendado de fino de laboro kaj posta prilaborado de rezultoj, Node.js uzas la principon de nesinkrona ekzekuto, t.e. la kodo estas transformita en "db.query ("elekto..", funkcio (rezulto) {rezulta prilaborado});", en kiu kontrolo tuj pasos al plia kodo, kaj la demandrezulto estos prilaborita kiam datumoj alvenas.

fonto: opennet.ru

Aldoni komenton