Dostupna je JavaScript platforma Node.js 19.0 na strani servera

Objavljena je Node.js 19.0, platforma za pokretanje mrežnih aplikacija u JavaScript-u. Node.js 19 je redovna grana podrške sa ažuriranjima dostupnim do juna 2023. U narednim danima će biti završena stabilizacija grane Node.js 18, koja će dobiti LTS status i biće podržana do aprila 2025. godine. Održavanje prethodne LTS grane Node.js 16.0 trajaće do septembra 2023., a pretprošle LTS grane 14.0 do aprila 2023. godine.

Glavna poboljšanja:

  • V8 motor je ažuriran na verziju 10.7, korištenu u Chromiumu 107. Među promjenama u motoru u odnosu na granu Node.js 18, primjećuje se implementacija treće verzije API-ja Intl.NumberFormat, koja dodaje nove funkcije formatRange (), formatRangeToParts() i selectRange(), grupisanje skupova, nove opcije za zaokruživanje i preciznost podešavanja, mogućnost tumačenja nizova kao decimalnih brojeva. Uključene zavisnosti llhttp 8.1.0 i npm 8.19.2 su također ažurirane.
  • Predložena je eksperimentalna naredba "node -watch" sa implementacijom moda praćenja koji osigurava da se proces ponovo pokrene kada se uvezena datoteka promijeni (na primjer, ako se "node -watch index.js" izvrši, proces će biti automatski se ponovo pokreće kada se index.js promijeni).
  • Za sve odlazne HTTP/HTTPS veze omogućena je podrška za HTTP 1.1 mehanizam Keep-Alive, koji ostavlja vezu otvorenom određeno vrijeme za obradu nekoliko HTTP zahtjeva unutar iste veze. Očekuje se da će Keep-Alive poboljšati propusnost i performanse. Podrazumevano, vremensko ograničenje otvaranja veze je postavljeno na 5 sekundi. Podrška za raščlanjivanje Keep-Alive HTTP zaglavlja u odgovorima servera je dodana implementaciji HTTP klijenta, a automatsko isključenje neaktivnih klijenata koji koriste Keep-Alive dodano je implementaciji Node.js HTTP servera.
  • WebCrypto API je prebačen u stabilnu kategoriju, sa 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 alate za praćenje DTrace, SystemTap i ETW (Traženje događaja za Windows) je uklonjena, čije se održavanje smatralo neprikladnim zbog složenosti održavanja ažurnim u nedostatku odgovarajućeg plana podrške.

Node.js platforma se može koristiti i za serversko održavanje web aplikacija i za kreiranje redovnih klijentskih i serverskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js, pripremljena je velika zbirka modula u kojoj se mogu pronaći moduli sa implementacijom HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 servera i klijenata, moduli za integraciju sa raznim web okvirima, WebSocket i Ajax rukovaocima, DBMS konektorima (MySQL, PostgreSQL, SQLite, MongoDB), šablonskim mašinama, CSS motorima, implementacijama kripto algoritama i sistema autorizacije (OAuth), XML parserima.

Da bi se osigurala obrada velikog broja paralelnih zahtjeva, Node.js koristi model izvršavanja asinhronog koda zasnovan na rukovanju događajima bez blokiranja i definiciji rukovatelja povratnim pozivima. 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 sistemima i IOCP na Windows. Biblioteka libeio se koristi za kreiranje spremišta niti, a c-ares je integriran za obavljanje DNS upita u neblokirajućem načinu. Svi sistemski pozivi koji uzrokuju blokiranje izvode se unutar spremišta niti, a zatim, kao rukovaoci signala, prenose rezultat svog rada nazad kroz neimenovanu cijev (cijev). Izvršenje JavaScript koda je obezbeđeno korišćenjem V8 motora koji je razvio Google (pored toga, Microsoft razvija verziju Node.js sa Chakra-Core motorom).

U svojoj srži, Node.js je sličan Perl AnyEvent, Ruby Event Machine, Python Twisted framework-u i Tcl implementaciji događaja, ali je petlja događaja u Node.js skrivena od programera i nalikuje rukovanju događajima u web aplikaciji koja radi u pretraživaču. Kada pišete aplikacije za node.js, morate 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 asinhronog izvršavanja, tj. kod se transformira u "db.query("select..", function (result) {result processing});", u kojem će kontrola trenutno proći daljem kodu, a rezultat upita će biti obrađen kako podaci stignu.

izvor: opennet.ru

Dodajte komentar