Servilflanka JavaScript Node.js 13.0 eldono

Disponebla liberigi Node.js 13.0,platformoj por ruli retajn aplikojn en JavaScript. Samtempe, la stabiligo de la antaŭa branĉo de Node.js 12.x estis kompletigita, kiu estis translokigita al la kategorio de longdaŭraj subtenaj eldonoj, por kiuj ĝisdatigoj estas liberigitaj dum 4 jaroj. Subteno por la antaŭa LTS-filio de Node.js 10.0 daŭros ĝis aprilo 2021, kaj subteno por la lasta LTS-filio 8.0 ĝis januaro 2020.

Ĉefa plibonigoj:

  • V8-motoro ĝisdatigita al versio 7.8, kiu uzas novajn agado-optimumigajn teknikojn, plibonigas objektodestrukturadon, reduktas memorkonsumon kaj reduktas prepartempon por WebAssembly-ekzekuto;
  • Plena subteno por internaciigo kaj bibliotek-bazita Unikodo estas ebligita defaŭlte ICU (Internaciaj Komponantoj por Unikodo), kiu permesas al programistoj skribi kodon subtena labori kun malsamaj lingvoj kaj lokoj. La plen-icu-modulo nun estas instalita defaŭlte;
  • API stabiligita Laboristoj Fadenoj, permesante krei multi-fadenajn eventajn buklojn. La efektivigo baziĝas sur la modulo worker_threads, kiu ebligas al vi ruli JavaScript-kodon en pluraj paralelaj fadenoj. Stabila subteno por la Workers Threads API ankaŭ estis retroportita al la LTS-filio de Node.js 12.x;
  • Postuloj por platformoj estis pliigitaj. Kunveni nun postulita almenaŭ macOS 10.11 (postulas Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Plibonigita subteno por Python 3. Se la sistemo havas kaj Python 2 kaj Python 3, Python 2 daŭre estas uzata, sed la kapablo konstrui kiam nur Python 3 estas instalita sur la sistemo estis aldonita;
  • La malnova efektivigo de la HTTP-analizilo ("—http-parser=heredaĵo") estis forigita. Forigitaj aŭ malrekomenditaj vokoj kaj propraĵoj FSWatcher.prototype.start(), ChildProcess._channel, open() metodo en ReadStream kaj WriteStream objektoj, request.connection, response.connection, module.createRequireFromPath ();
  • Sekvante ĝi montriĝis ĝisdatigo 13.0.1, kiu rapide riparis plurajn erarojn. Aparte, la problemo kun npm 6.12.0 montranta averton pri uzado de nesubtenata versio estis solvita.

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