izdanje , platforme za izvođenje mrežnih aplikacija na jeziku JavaScript. Node.js 14.0 pripada granama s dugoročnom podrškom, no ovaj status će biti dodijeljen tek u listopadu, nakon stabilizacije. Podrška za Node.js 14.0 bit će do travnja 2023. godine. Održavanje prošle LTS grane Node.js 12.0 trajat će do travnja 2022. godine, a pretprošle LTS grane 10.0 do travnja 2021. godine. Podrška za međugranu 13.x završava u lipnju ove godine.
Glavne :
- Stabilizirana je mogućnost generiranja na let ili pri pojavljivanju određenih događaja , u kojima se odražavaju događaji koji pomažu u dijagnostici problema kao što su padovi, smanjenje performansi, curenje memorije, visoka opterećenja na CPU-u, neočekivani ispis pogrešaka itd.
- Dodana je eksperimentalna podrška za API s implementacijom klase AsyncLocalStorage, koja se može koristiti za stvaranje asinkronog stanja s obraditeljima temeljenim na povratnim pozivima i promise-ima. AsyncLocalStorage omogućava pohranu podataka tijekom obrade web zahtjeva, nalik lokalnim spremištima za pojedine niti (Thread-Local Storage) u drugim jezicima.
- Uklonjen je ispis upozorenja o eksperimentalnoj mogućnosti pri učitavanju povezivanih i izvoznih pomoću izraza import i export. Pri tome sama implementacija modula ESM i dalje ostaje eksperimentalna.
- V8 motor je ažuriran na verziju (, , ), u kojoj su uvedene nove optimizacije performansi i dodane novine kao što su novi logički operator spajanja „??“ (vraća desni operand ako je lijevi operand NULL ili undefined, i obrnuto), operator „?.“ za jedinstvenu provjeru cijelog lanca svojstava ili poziva (na primjer „db?.user?.name?.length“ bez prethodnih provjera), metoda Intl.DisplayName za dobivanje lokaliziranih naziva itd.
- Provjerena je API Streams, usmjerena na poboljšanje dosljednosti API sučelja Streams i uklanjanje razlika u ponašanju osnovnih dijelova Node.js. Na primjer, ponašanje http.OutgoingMessage približeno je stream.Writable, a net.Socket stream.Duplex. Opcija autoDestroy prema zadanim postavkama postavljena je na „true“, što podrazumijeva poziv „_destroy“ nakon završetka.
- Dodana je eksperimentalna podrška za API (), koji pruža programske sučelja za izravnu interakciju s operacijskim sustavom (POSIX API za rad s datotekama, socketima itd.).
- Povećani zahtjevi za kompajlera i platformi: macOS 10.13 (High Sierra), GCC 6, .
Podsjećamo, platforma Node.js može se koristiti kako za poslužiteljsko održavanje rada web-aplikacija, tako i za razvijanje običnih klijentskih i poslužiteljskih mrežnih programa. Za proširenje funkcionalnosti aplikacija za Node.js pripremljena je velika , u kojoj se mogu pronaći moduli s implementacijom poslužitelja i klijenata HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduli za integraciju s različitim web-frameworkovima, obrada WebSocket i Ajax, konektori za SBDS (MySQL, PostgreSQL, SQLite, MongoDB), predloška, CSS-motori, implementacije kriptoalgoritama i sustava autorizacije (OAuth), XML-parseri.
Za osiguranje obrade velikog broja paralelnih zahtjeva, Node.js koristi asinhroni model izvođenja koda, temeljen na obradi događaja u neblokirajućem načinu i definiranju callback-handlera. Kao metode multiplikacije veza podržani su takvi načini kao epoll, kqueue, /dev/poll i select. Za multiplikaciju veza koristi se biblioteka , koja je nadogradnja na u Unix sustavima i na IOCP u Windowsu. Za stvaranje bazena niti (thread pool) koristi se biblioteka , za izvođenje DNS-zahtjeva u neblokirajućem načinu integriran je . Svi sistemski pozivi koji uzrokuju blokadu izvršavaju se unutar bazena niti, a zatim, poput rukovatelja signala, vraćaju rezultat svog rada kroz anonimni kanal (pipe). Izvršenje JavaScript koda osigurava se korištenjem motora koji je razvio Google (dodatno, Microsoft razvija varijantu Node.js s motorom Chakra-Core).
Po svojoj suštini, Node.js nalikuje frameworkima , , i Događaji u Tcl, ali petlja obrade događaja (event loop) u Node.js je sakrivena od programera i podsjeća na obradu događaja u web-aplikaciji koja radi u pregledniku. Kada pišete aplikacije za Node.js, potrebno je uzeti u obzir specifičnosti programiranja usmjerenog na događaje, primjerice, umjesto izvršavanja "var result = db.query('select..');" s iščekivanjem završetka rada i naknadnom obradom rezultata, u Node.js se koristi princip asinkronog izvršavanja, tj. kod se transformira u "db.query('select..', function (result) {obrada rezultata});", pri čemu se kontrola odmah prebacuje na daljnji kod, a rezultat upita će biti obrađen po dolasku podataka.
Izvor: opennet.ru
