Strežniška platforma JavaScript Node.js 19.0 je na voljo

Izdan je bil Node.js 19.0, platforma za izvajanje omrežnih aplikacij v JavaScriptu. Node.js 19 je običajna veja podpore s posodobitvami, ki so na voljo do junija 2023. V naslednjih dneh bo končana stabilizacija veje Node.js 18, ki bo prejela status LTS in bo podprta do aprila 2025. Vzdrževanje prejšnje veje LTS Node.js 16.0 bo trajalo do septembra 2023, predlanske veje LTS 14.0 pa do aprila 2023.

Glavne izboljšave:

  • Motor V8 je bil posodobljen na različico 10.7, ki se uporablja v Chromiumu 107. Med spremembami v motorju v primerjavi z vejo Node.js 18 je omenjena implementacija tretje različice API-ja Intl.NumberFormat, ki doda nove funkcije formatRange (), formatRangeToParts() in selectRange(), združevanje nizov, nove možnosti zaokroževanja in nastavitve natančnosti, možnost interpretacije nizov kot decimalnih števil. Posodobljeni sta bili tudi vključeni odvisnosti llhttp 8.1.0 in npm 8.19.2.
  • Predlagan je bil eksperimentalni ukaz "node -watch", ki izvaja način opazovanja, ki zagotavlja, da se postopek znova zažene, ko se uvožena datoteka spremeni (na primer, če se izvede "node -watch index.js", se bo postopek samodejno znova zagnal ko se spremeni index.js).
  • Za vse odhodne povezave HTTP/HTTPS je omogočena podpora za mehanizem HTTP 1.1 Keep-Alive, ki pusti povezavo odprto za določen čas za obdelavo več zahtev HTTP znotraj iste povezave. Keep-Alive naj bi izboljšal prepustnost in zmogljivost. Privzeto je časovna omejitev odprte povezave nastavljena na 5 sekund. Podpora za razčlenjevanje glave HTTP Keep-Alive v odzivih strežnika je bila dodana implementaciji odjemalca HTTP, samodejna prekinitev povezave neaktivnih odjemalcev z uporabo Keep-Alive pa je bila dodana implementaciji strežnika HTTP Node.js.
  • WebCrypto API je bil prenesen v kategorijo stabilnih, z izjemo funkcij, ki uporabljajo algoritme Ed25519, Ed448, X25519 in X448. Za dostop do modula WebCrypto lahko zdaj uporabite globalThis.crypto ali require('node:crypto').webcrypto.
  • Odstranjena je bila podpora za orodja za sledenje DTrace, SystemTap in ETW (Event Tracing for Windows), katerih vzdrževanje je bilo ocenjeno kot neustrezno zaradi zapletenosti posodabljanja brez ustreznega načrta podpore.

Platformo Node.js je mogoče uporabiti tako za strežniško vzdrževanje spletnih aplikacij kot za ustvarjanje rednih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je bila pripravljena velika zbirka modulov, v kateri najdete module z implementacijo HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 strežnikov in odjemalcev, module za integracijo z različnimi spletnimi okviri, upravljalniki WebSocket in Ajax, konektorji DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mehanizmi za predloge, motorji CSS, implementacijami kripto algoritmov in avtorizacijskih sistemov (OAuth), razčlenjevalniki XML.

Da bi zagotovil obdelavo velikega števila vzporednih zahtev, Node.js uporablja model izvajanja asinhrone kode, ki temelji na neblokirni obravnavi dogodkov in definiciji obdelovalcev povratnih klicev. Podprte metode za multipleksiranje povezav so epoll, kqueue, /dev/poll in select. Za multipleksiranje povezav se uporablja knjižnica libuv, ki je dodatek za libev v sistemih Unix in IOCP v sistemu Windows. Knjižnica libeio se uporablja za ustvarjanje skupine niti, c-ares pa je integriran za izvajanje poizvedb DNS v načinu brez blokiranja. Vsi sistemski klici, ki povzročijo blokado, se izvedejo znotraj področja niti in nato, kot upravljalci signalov, prenesejo rezultat svojega dela nazaj skozi neimenovano cev (pipe). Izvajanje kode JavaScript je zagotovljeno z uporabo motorja V8, ki ga je razvil Google (poleg tega Microsoft razvija različico Node.js z motorjem Chakra-Core).

V svojem jedru je Node.js podoben ogrodjem Perl AnyEvent, Ruby Event Machine, Python Twisted in implementaciji dogodkov Tcl, vendar je zanka dogodkov v Node.js skrita pred razvijalcem in je podobna obravnavanju dogodkov v delujoči spletni aplikaciji v brskalniku. Ko pišete aplikacije za node.js, morate na primer upoštevati posebnosti programiranja, ki temelji na dogodkih, namesto da naredite "var result = db.query("select..");" s čakanjem na zaključek dela in kasnejšo obdelavo rezultatov Node.js uporablja princip asinhronega izvajanja, tj. koda se preoblikuje v "db.query("select..", function (result) {result processing});", v katerem bo nadzor takoj prešel na nadaljnjo kodo, rezultat poizvedbe pa bo obdelan, ko podatki prispejo.

Vir: opennet.ru

Dodaj komentar