Izdanje poslužiteljske JavaScript platforme Node.js 14.0

Održano izdanje Node.js 14.0, 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 provođena 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 poboljšanja:

  • Stabilizirana je mogućnost generiranja na let ili pri pojavljivanju određenih događaja dijagnostičkih izvještaja, 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 Async Local Storage 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 modula ECMAScript 6 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 8.1 (1, 2, 3), 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 WASI (WebAssembly System Interface), koji pruža programske sučelja za izravnu interakciju s operacijskim sustavom (POSIX API za rad s datotekama, socketima itd.).
  • Povećani zahtjevi za minimalnim verzijama kompajlera i platformi: macOS 10.13 (High Sierra), GCC 6, Windows noviji od 7/2008R2.

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 kolekcija modula, 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 libuv, koja je nadogradnja na libev u Unix sustavima i na IOCP u Windowsu. Za stvaranje bazena niti (thread pool) koristi se biblioteka libeio, za izvođenje DNS-zahtjeva u neblokirajućem načinu integriran je c-ares. 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 V8 (dodatno, Microsoft razvija varijantu Node.js s motorom Chakra-Core).

Po svojoj suštini, Node.js nalikuje frameworkima Perl AnyEvent, Ruby Event Machine, Python Twisted i implementacija 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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster