Dostupna JavaScript platforma na strani poslužitelja Node.js 19.0

Objavljena je Node.js 19.0, platforma za pokretanje mrežnih aplikacija u JavaScriptu. Node.js 19 redovita je grana podrške s ažuriranjima dostupnima do lipnja 2023. U narednim danima bit će dovršena stabilizacija grane Node.js 18 koja će dobiti LTS status i bit će podržana do travnja 2025. godine. Održavanje prethodne LTS grane Node.js 16.0 trajat će do rujna 2023., a pretprošle LTS grane 14.0 do travnja 2023.

Glavna poboljšanja:

  • V8 motor je ažuriran na verziju 10.7, koja se koristi u Chromiumu 107. Među promjenama u motoru u usporedbi s granom Node.js 18, primjećuje se implementacija treće verzije Intl.NumberFormat API-ja, koja dodaje nove funkcije formatRange (), formatRangeToParts() i selectRange(), grupiranje skupova, nove mogućnosti zaokruživanja i postavljanja preciznosti, mogućnost tumačenja nizova kao decimalnih brojeva. Uključene ovisnosti llhttp 8.1.0 i npm 8.19.2 također su ažurirane.
  • Predložena je eksperimentalna naredba "node -watch" s implementacijom načina promatranja koji osigurava da se proces ponovno pokrene kada se uvezena datoteka promijeni (na primjer, ako se izvrši "node -watch index.js", proces će biti automatski se ponovno pokreće kada se promijeni index.js).
  • Za sve odlazne HTTP/HTTPS veze omogućena je podrška za HTTP 1.1 Keep-Alive mehanizam koji vezu ostavlja otvorenom određeno vrijeme za obradu nekoliko HTTP zahtjeva unutar iste veze. Očekuje se da će Keep-Alive poboljšati propusnost i performanse. Prema zadanim postavkama vrijeme čekanja otvorene veze postavljeno je na 5 sekundi. Podrška za analiziranje Keep-Alive HTTP zaglavlja u odgovorima poslužitelja dodana je implementaciji HTTP klijenta, a automatsko prekidanje veze neaktivnih klijenata koji koriste Keep-Alive dodano je implementaciji Node.js HTTP poslužitelja.
  • WebCrypto API je prebačen u stabilnu kategoriju, s izuzetkom funkcija koje koriste algoritme Ed25519, Ed448, X25519 i X448. Za pristup WebCrypto modulu sada možete koristiti globalThis.crypto ili require('node:crypto').webcrypto.
  • Podrška za DTrace, SystemTap i ETW (Event Tracing for Windows) alate za praćenje je uklonjena, čije se održavanje smatra neprikladnim zbog složenosti održavanja ažurnosti u nedostatku odgovarajućeg plana podrške.

Platforma Node.js može se koristiti i za poslužiteljsko održavanje web aplikacija i za kreiranje regularnih klijentskih i poslužiteljskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js pripremljena je velika zbirka modula u kojoj možete pronaći module s implementacijom HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 poslužitelja i klijenata, module za integraciju s raznim web okvirima, WebSocket i Ajax rukovateljima, DBMS konektorima (MySQL, PostgreSQL, SQLite, MongoDB), mehanizmima za izradu predložaka, CSS motorima, implementacijama kripto algoritama i autorizacijskim sustavima (OAuth), XML parserima.

Kako bi se osigurala obrada velikog broja paralelnih zahtjeva, Node.js koristi model izvršavanja asinkronog koda koji se temelji na rukovanju događajima bez blokiranja i definiciji rukovatelja povratnim pozivom. Podržane metode za multipleksiranje veza su epoll, kqueue, /dev/poll i select. Za multipleksiranje veze koristi se biblioteka libuv, koja je dodatak za libev na Unix sustavima i IOCP na Windowsima. Biblioteka libeio koristi se za stvaranje skupa niti, a c-ares je integriran za izvođenje DNS upita u načinu rada bez blokiranja. Svi sistemski pozivi koji uzrokuju blokiranje izvršavaju se unutar skupa niti i zatim, poput rukovatelja signalima, prenose rezultat svog rada natrag kroz neimenovanu cijev (pipe). Izvršenje JavaScript koda omogućeno je korištenjem V8 motora koji je razvio Google (pored toga, Microsoft razvija verziju Node.js s Chakra-Core motorom).

U svojoj srži, Node.js je sličan Perl AnyEvent, Ruby Event Machine, Python Twisted okvirima i Tcl implementaciji događaja, ali petlja događaja u Node.js skrivena je od programera i nalikuje rukovanju događajima u pokrenutoj web aplikaciji u pregledniku. Kada pišete aplikacije za node.js, trebate uzeti u obzir specifičnosti programiranja vođenog događajima, na primjer, umjesto da radite "var result = db.query("select..");" uz čekanje završetka rada i naknadnu obradu rezultata, Node.js koristi princip asinkronog izvođenja, tj. kod se transformira u "db.query("select..", function (result) {result processing});", u kojem će kontrola trenutno prijeći na daljnji kod, a rezultat upita će se obrađivati ​​kako podaci stignu.

Izvor: opennet.ru

Dodajte komentar