Paglabas ng JavaScript Node.js 14.0 sa gilid ng server

naganap pakawalan Node.js 14.0, mga platform para sa pagpapatakbo ng mga aplikasyon ng network sa JavaScript. Ang Node.js 14.0 ay isang pangmatagalang sangay ng suporta, ngunit ang status na ito ay itatalaga lamang sa Oktubre, pagkatapos ng pag-stabilize. Susuportahan ang Node.js 14.0 maisakatuparan hanggang Abril 2023. Ang pagpapanatili ng nakaraang LTS branch ng Node.js 12.0 ay tatagal hanggang Abril 2022, at ang taon bago ang huling LTS branch 10.0 hanggang Abril 2021. Ang suporta para sa 13.x staging branch ay magtatapos sa Hunyo ng taong ito.

Ang pangunahing mga pagpapabuti:

  • Ang kakayahang bumuo sa mabilisang o sa paglitaw ng ilang partikular na kaganapan ay na-stabilize mga ulat ng diagnostic, na nagpapakita ng mga kaganapan na tumutulong sa pag-diagnose ng mga problema gaya ng mga pag-crash, pagkasira ng pagganap, pagtagas ng memorya, mabigat na pag-load ng CPU, hindi inaasahang output ng error, atbp.
  • Nagdagdag ng suporta sa pang-eksperimentong API Async Lokal na Imbakan sa pagpapatupad ng klase ng AsyncLocalStorage, na maaaring magamit upang lumikha ng asynchronous na estado na may mga humahawak batay sa mga callback na tawag at pangako. Binibigyang-daan ka ng AsyncLocalStorage na mag-imbak ng data habang pinoproseso ang isang kahilingan sa web, na katulad ng thread-local na storage sa ibang mga wika.
  • Inalis ang mensahe ng babala tungkol sa pang-eksperimentong tampok kapag naglo-load mga modyul ECMAScript 6 konektado at na-export gamit ang mga pahayag sa pag-import at pag-export. Kasabay nito, ang pagpapatupad ng mga module ng ESM mismo ay nananatiling eksperimental.
  • Ang V8 engine ay na-update sa bersyon 8.1 (1, 2, 3), na kinabibilangan ng mga bagong pag-optimize ng pagganap at mga tampok tulad ng bagong lohikal na concatenation operator "??" (ibinabalik ang kanang operand kung ang kaliwang operand ay NULL o hindi natukoy, at vice versa), ang "?." operator para sa isang beses na pagsusuri sa buong chain ng mga property o tawag (halimbawa, β€œdb?.user?.name?.length” nang walang paunang pagsusuri), ang Intl.DisplayName na paraan para sa pagkuha ng mga localized na pangalan, atbp.
  • Nagsagawa ng rebisyon ng Streams API, na naglalayong pahusayin ang pagkakapare-pareho ng Streams API at alisin ang mga pagkakaiba sa pag-uugali ng mga pangunahing bahagi ng Node.js. Halimbawa, ang gawi ng http.OutgoingMessage ay malapit sa stream.Writable, at net.Socket ay katulad ng stream.Duplex. Ang pagpipiliang autoDestroy ay nakatakda sa "true" bilang default, na nangangahulugan ng pagtawag sa "_destroy" kapag nakumpleto na.
  • Nagdagdag ng suporta sa pang-eksperimentong API WASI (WebAssembly System Interface), na nagbibigay ng mga interface ng software para sa direktang pakikipag-ugnayan sa operating system (POSIX API para sa pagtatrabaho sa mga file, socket, atbp.).
  • Nadagdagang mga kinakailangan para sa kaunting mga bersyon compiler at platform: macOS 10.13 (High Sierra), GCC 6, Windows mas bagong 7/2008R2.

Alalahanin natin na ang Node.js platform ay maaaring gamitin kapwa para sa server-side na suporta ng mga Web application at para sa paglikha ng mga ordinaryong client at server network programs. Upang palawakin ang functionality ng mga application para sa Node.js, isang malaking bilang ng koleksyon ng mga module, kung saan makakahanap ka ng mga module na may pagpapatupad ng mga server at kliyente HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, mga module para sa pagsasama sa iba't ibang web frameworks, WebSocket at Ajax handler, connectors sa DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), template engine, CSS engine, pagpapatupad ng cryptographic algorithm at authorization system (OAuth), XML parsers.

Upang mahawakan ang malaking bilang ng mga parallel na kahilingan, gumagamit ang Node.js ng isang modelo ng asynchronous na code execution batay sa hindi naka-block na pagpoproseso ng kaganapan at pagtukoy sa mga handler ng callback. Kasama sa mga sinusuportahang paraan para sa multiplexing na koneksyon ang epoll, kqueue, /dev/poll, at piliin. Ang library ay ginagamit sa multiplex na koneksyon libuv, na isang superstructure na tapos na libev sa mga Unix system at higit sa IOCP sa Windows. Ang isang library ay ginagamit upang lumikha ng isang thread pool libeio, para sa pagsasagawa ng mga query sa DNS sa non-blocking mode ay isinama c-ares. Ang lahat ng mga tawag sa system na nagdudulot ng pagharang ay isinasagawa sa loob ng thread pool at pagkatapos, tulad ng mga humahawak ng signal, ipapasa muli ang resulta ng kanilang trabaho sa isang hindi pinangalanang pipe. Ang pagpapatupad ng JavaScript code ay sinisiguro sa pamamagitan ng paggamit ng isang engine na binuo ng Google V8 (Sa karagdagan, ang Microsoft ay gumagawa ng isang bersyon ng Node.js gamit ang Chakra-Core engine).

Sa kaibuturan nito, ang Node.js ay katulad ng mga frameworks Perl AnyEvent, Ruby Event Machine, Sawa Twisted ΠΈ pagpapatupad mga kaganapan sa Tcl, ngunit ang loop ng kaganapan sa Node.js ay nakatago mula sa developer at kahawig ng pangangasiwa ng kaganapan sa isang web application na tumatakbo sa isang browser. Kapag nagsusulat ng mga application para sa node.js, kinakailangang isaalang-alang ang mga detalye ng programming na hinimok ng kaganapan, halimbawa, sa halip na gawin ang "var result = db.query("select..");" sa paghihintay para sa pagkumpleto ng trabaho at kasunod na pagproseso ng mga resulta, ginagamit ng Node.js ang prinsipyo ng asynchronous execution, i.e. ang code ay binago sa "db.query("select..", function (result) {result processing});", kung saan ang kontrol ay agad na mapapasa sa karagdagang code, at ang resulta ng query ay ipoproseso pagdating ng data. .

Pinagmulan: opennet.ru

Magdagdag ng komento