Servilflanka JavaScript Node.js 14.0 eldono

okazis liberigi Node.js 14.0,platformoj por ruli retajn aplikojn en JavaScript. Node.js 14.0 estas longdaŭra subtena branĉo, sed ĉi tiu statuso estos asignita nur en oktobro, post stabiligo. Node.js 14.0 estos subtenata esti efektivigita ĝis aprilo 2023. Prizorgado de la antaŭa LTS-branĉo de Node.js 12.0 daŭros ĝis aprilo 2022, kaj la jaron antaŭ la lasta LTS-filio 10.0 ĝis aprilo 2021. Subteno por la 13.x sursceniga branĉo finiĝos en junio de ĉi tiu jaro.

Ĉefa plibonigoj:

  • La kapablo generi sur la muŝo aŭ sur la okazo de certaj okazaĵoj estis stabiligita diagnozaj raportoj, kiuj montras eventojn, kiuj helpas diagnozi problemojn kiel kraŝoj, rendimento-degenero, memorfuĝoj, peza CPU-ŝarĝo, neatendita erarproduktaĵo ktp.
  • Aldonita eksperimenta API-subteno Nesinkroniga Loka Stokado kun la efektivigo de la AsyncLocalStorage klaso, kiu povas esti uzita por krei nesinkronan staton kun pritraktiloj bazitaj sur revokvokoj kaj promesoj. AsyncLocalStorage permesas vin stoki datumojn dum retpeto estas procesita, rememorigante pri faden-loka stokado en aliaj lingvoj.
  • Forigita averta mesaĝo pri eksperimenta funkcio dum ŝarĝo moduloj ECMAScript 6 konektita kaj eksportita per import- kaj eksporta deklaroj. Samtempe, la efektivigo de ESM-moduloj mem restas eksperimenta.
  • V8-motoro ĝisdatigita al versio 8.1 (1, 2, 3), kiu inkluzivas novajn rendimentooptimumigojn kaj funkciojn kiel la nova logika kunkatenigfunkciigisto "???" (resendas la dekstran operandon se la maldekstra operando estas NULL aŭ nedifinita, kaj inverse), la "?." operatoro por unufoja kontrolo de la tuta ĉeno de propraĵoj aŭ vokoj (ekzemple, "db?.user?.name?.length" sen antaŭkontroloj), la Intl.DisplayName-metodo por akiri lokalizitajn nomojn, ktp.
  • Revizio de la Streams API estis efektivigita, celante plibonigi la konsistencon de la Streams-API-oj kaj forigi diferencojn en la konduto de la bazaj partoj de Node.js. Ekzemple, la konduto de http.OutgoingMessage estas proksima al stream.Writable, kaj net.Socket similas al stream.Duplex. La opcio autoDestroy estas agordita al "vera" defaŭlte, kio signifas voki "_destroy" post kompletigo.
  • Aldonita eksperimenta API-subteno WASI (Interfaco de WebAssembly System), disponigante softvarinterfacojn por rekta interagado kun la operaciumo (POSIX-API por labori kun dosieroj, ingoj, ktp.).
  • Pliigitaj postuloj por minimumaj versioj kompililoj kaj platformoj: macOS 10.13 (Alta Sierra), GCC 6, Vindozo pli nova 7/2008R2.

Ni rememoru, ke la platformo Node.js povas esti uzata kaj por servila subteno de Retaj aplikaĵoj kaj por krei ordinarajn klientajn kaj servilojn retajn programojn. Por vastigi la funkciecon de aplikoj por Node.js, granda nombro da kolekto de moduloj, en kiuj vi povas trovi modulojn kun la efektivigo de serviloj kaj klientoj HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduloj por integriĝo kun diversaj retkadroj, WebSocket kaj Ajax-traktiloj, konektiloj al DBMS (MySQL, PostgreSQL, SQLite). , MongoDB ), ŝablonmotoroj, CSS-motoroj, efektivigoj de kriptografiaj algoritmoj kaj rajtigaj sistemoj (OAuth), XML-analiziloj.

Por trakti grandajn nombrojn da paralelaj petoj, Node.js uzas nesinkronan kodan ekzekutmodelon bazitan sur ne-bloka okazaĵa prilaborado kaj difinaj revokadtraktiloj. Subtenataj metodoj por multipleksaj ligoj inkluzivas epoll, kqueue, /dev/poll kaj select. La biblioteko estas uzata por multipleksi konektojn libuv, kiu estas superkonstruaĵo super libev en Unikso-similaj sistemoj kaj super IOCP en Vindozo. Biblioteko estas uzata por krei fadenan grupon libeio, por plenumi DNS-demandojn en ne-bloka reĝimo estas integrita c-areoj. Ĉiuj sistemvokoj kiuj kaŭzas blokadon estas efektivigitaj ene de la fadena naĝejo kaj tiam, kiel signaltraktantoj, pasas la rezulton de sia laboro reen tra nenomita tubo. Ekzekuto de JavaScript-kodo estas certigita per la uzo de motoro evoluigita de Guglo V8 (Krome, Microsoft disvolvas version de Node.js kun la Chakra-Core-motoro).

En ĝia kerno, Node.js similas al kadroj Perl AnyEvent, Ruby Eventa Maŝino, Python Tordita и efektivigo eventoj en Tcl, sed la eventa buklo en Node.js estas kaŝita de la programisto kaj similas eventon pritraktado en TTT-aplikaĵo funkcianta en retumilo. Dum skribado de aplikoj por node.js, necesas konsideri la specifaĵojn de okazaĵa programado, ekzemple, anstataŭ fari "var result = db.query ("select..");" kun atendado de la fino de laboro kaj posta prilaborado de la rezultoj, Node.js uzas la principon de nesinkrona ekzekuto, t.e. la kodo estas transformita en “db.query(“elektu..”, funkcio (rezulto) {rezulta prilaborado});”, en kiu kontrolo tuj pasos al plia kodo, kaj la demandrezulto estos prilaborita kiam datumoj alvenos. .

fonto: opennet.ru

Aldoni komenton