Pagpagawas sa server-side nga JavaScript platform nga Node.js 14.0

nahitabo buhian Node.js 14.0, mga plataporma alang sa pagpadagan sa mga aplikasyon sa network sa JavaScript. Ang Node.js 14.0 usa ka long-term nga sanga sa suporta, apan kini nga status ma-assign lang sa Oktubre, human sa stabilization. Ang Node.js 14.0 suportahan ipatuman hangtod Abril 2023. Ang pagmentinar sa miaging LTS branch sa Node.js 12.0 molungtad hangtod Abril 2022, ug sa tuig sa wala pa ang katapusang LTS branch 10.0 hangtod Abril 2021. Ang suporta alang sa 13.x staging branch matapos sa Hunyo ning tuiga.

nag-unang mga kalamboan:

  • Ang abilidad sa pagmugna sa langaw o sa mga panghitabo sa pipila ka mga panghitabo na-stabilize diagnostic nga mga taho, nga nagpakita sa mga panghitabo nga makatabang sa pag-diagnose sa mga problema sama sa pagkahagsa, pagkadaot sa pasundayag, pagtulo sa memorya, bug-at nga karga sa CPU, wala damhang output sa sayop, ug uban pa.
  • Gidugang nga suporta sa eksperimento sa API Async Lokal nga Pagtipig uban ang pagpatuman sa klase sa AsyncLocalStorage, nga magamit sa paghimo og asynchronous nga estado nga adunay mga handler base sa callback nga mga tawag ug mga saad. Gitugotan ka sa AsyncLocalStorage sa pagtipig sa datos samtang giproseso ang usa ka hangyo sa web, nga nagpahinumdum sa pagtipig sa lokal nga hilo sa ubang mga sinultian.
  • Gitangtang ang mensahe sa pasidaan bahin sa eksperimento nga bahin kung nagkarga mga modyul ECMAScript 6 konektado ug gi-eksport gamit ang import ug export nga mga pahayag. Sa parehas nga oras, ang pagpatuman sa mga module sa ESM mismo nagpabilin nga eksperimento.
  • Ang makina sa V8 gi-update sa bersyon 8.1 (1, 2, 3), nga naglakip sa bag-ong performance optimizations ug mga feature sama sa bag-ong logical concatenation operator "??" (ibalik ang tuo nga operand kung ang wala nga operand NULL o wala mahibal-an, ug vice versa), ang "?." operator alang sa usa ka higayon nga pagsusi sa tibuok kadena sa mga kabtangan o mga tawag (pananglitan, "db?.user?.name?.gitas-on" nga walay pasiuna nga pagsusi), ang Intl.DisplayName nga pamaagi para sa pagkuha sa lokal nga mga ngalan, ug uban pa.
  • Gihimo ang usa ka rebisyon sa Streams API, nga gitumong sa pagpauswag sa pagkamakanunayon sa Streams API ug pagwagtang sa mga kalainan sa kinaiya sa mga batakang bahin sa Node.js. Pananglitan, ang kinaiya sa http.OutgoingMessage duol sa stream.Writable, ug net.Socket susama sa stream.Duplex. Ang kapilian sa autoDestroy gitakda sa "tinuod" pinaagi sa default, nga nagpasabut sa pagtawag sa "_destroy" pagkahuman.
  • Gidugang nga suporta sa eksperimento sa API WASI (Interface sa Sistema sa WebAssembly), paghatag ug software interface para sa direktang interaksyon sa operating system (POSIX API para sa pagtrabaho sa mga file, socket, ug uban pa).
  • Dugang nga mga kinahanglanon alang sa gamay nga bersyon compiler ug platform: macOS 10.13 (High Sierra), GCC 6, Windows mas bag-o nga 7/2008R2.

Atong hinumdoman nga ang Node.js nga plataporma mahimong magamit alang sa server-side nga suporta sa mga aplikasyon sa Web ug alang sa pagmugna og ordinaryo nga kliyente ug mga programa sa network sa server. Aron mapalapad ang gamit sa mga aplikasyon alang sa Node.js, daghang gidaghanon sa koleksyon sa mga module, diin makit-an nimo ang mga module nga adunay pagpatuman sa mga server ug kliyente HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, mga module alang sa pag-integrate sa lainlaing mga web frameworks, WebSocket ug Ajax handler, konektor sa DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), template engine, CSS engine, pagpatuman sa cryptographic algorithms ug authorization system (OAuth), XML parser.

Aron madumala ang daghang gidaghanon sa parallel nga mga hangyo, ang Node.js naggamit ug asynchronous code execution model base sa dili pag-block sa pagproseso sa panghitabo ug pagdeterminar sa mga callback handler. Gisuportahan nga mga pamaagi alang sa multiplexing nga mga koneksyon naglakip sa epoll, kqueue, / dev / poll, ug pagpili. Ang librarya gigamit sa multiplex nga mga koneksyon libuv, nga usa ka superstructure sa ibabaw libev sa mga sistema sa Unix ug sa ibabaw sa IOCP sa Windows. Usa ka librarya ang gigamit sa paghimo og thread pool libeio, alang sa paghimo sa DNS nga mga pangutana sa non-blocking mode gisagol c-ares. Ang tanan nga mga tawag sa sistema nga hinungdan sa pag-block gipatuman sulod sa thread pool ug dayon, sama sa mga tigdumala sa signal, ipasa ang resulta sa ilang trabaho balik pinaagi sa wala hinganli nga tubo. Ang pagpatuman sa JavaScript code gisiguro pinaagi sa paggamit sa usa ka makina nga gihimo sa Google V8 (Dugang pa, ang Microsoft nagpalambo sa usa ka bersyon sa Node.js nga adunay Chakra-Core nga makina).

Sa kinauyokan niini, ang Node.js susama sa mga frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted и pagpatuman mga panghitabo sa Tcl, apan ang event loop sa Node.js gitago gikan sa developer ug susama sa pagdumala sa panghitabo sa usa ka web application nga nagdagan sa usa ka browser. Sa pagsulat sa mga aplikasyon alang sa node.js, kinahanglan nga tagdon ang mga detalye sa programa nga gipalihok sa panghitabo, pananglitan, imbes nga buhaton ang "var result = db.query("pilia..");" uban sa paghulat sa pagkompleto sa trabaho ug sa sunod nga pagproseso sa mga resulta, ang Node.js naggamit sa prinsipyo sa asynchronous execution, i.e. ang code giusab ngadto sa "db.query("select..", function (resulta) {result processing});", diin ang kontrol moagi dayon ngadto sa dugang nga code, ug ang resulta sa pangutana maproseso sa pag-abot sa datos. .

Source: opennet.ru

Idugang sa usa ka comment