izdanje , platforme za izvajanje omrežnih aplikacij v jeziku JavaScript. Node.js 14.0 spada med različice z dolgo podporo, vendar bo ta status dodeljen šele oktobra, po stabilizaciji. Podpora za Node.js 14.0 bo do aprila 2023. Podpora prejšnje LTS različice Node.js 12.0 bo trajala do aprila 2022, prejšnji LTS različici 10.0 pa do aprila 2021. Podpora za prehodno različico 13.x se bo končala junija letos.
Glavne :
- Stabilizirana je možnost sprotne generacije ali ob določenih dogodkih , ki prikazujejo dogodke, potrebne za diagnosticiranje težav, kot so zrušitve, zmanjšana učinkovitost, uhajanje pomnilnika, velika obremenitev CPU, nenadne napake in podobno.
- Dodana je eksperimentalna podpora za API z implementacijo razreda AsyncLocalStorage, ki se lahko uporablja za ustvarjanje asinhronega stanja z obdelovalci na osnovi klicev callback in promise. AsyncLocalStorage omogoča shranjevanje podatkov med obdelavo spletnih zahtev, kar spominja na lokalne za posamezne niti sklade (Thread-Local Storage) v drugih jezikh.
- Odtaknjeno je opozorilo o eksperimentalni funkcionalnosti pri nalaganju ki se povezujejo in izvozi s pomočjo izrazov import in export. Sama implementacija modulov ESM pa ostaja eksperimentalna.
- Motor V8 je posodobljen na različico (, , ), v kateri so vnesene nove optimizacije zmogljivosti in dodane novosti, kot je nov logični operator združitve „??“ (vrne desni operand, če je levi operand NULL ali undefined, in obratno), operator „?.“ za enkratno preverjanje cele verige lastnosti ali klicev (na primer „db?.user?.name?.length“ brez predhodnih preverjanj), metoda Intl.DisplayName za pridobivanje lokaliziranih imen itd.
- Izvedena je revizija API Streams, usmerjena v izboljšanje doslednosti API-jev Streams in odpravo razlik v obnašanju osnovnih delov Node.js. Na primer, obnašanje http.OutgoingMessage je približano stream.Writable, medtem ko je net.Socket približno stream.Duplex. Možnost autoDestroy je privzeto nastavljena na „true“, kar pomeni klic „_destroy“ po končanju.
- Dodana je eksperimentalna podpora za API (), ki ponuja programske vmesnike za neposredno interakcijo z operacijskim sistemom (POSIX API za delo s datotekami, podjetji itd.).
- Povečane zahteve za kompajlerjev in platform: macOS 10.13 (High Sierra), GCC 6, .
Spomnimo, da se lahko platforma Node.js uporablja tako za strežniško podporo delovanju spletnih aplikacij, kot tudi za ustvarjanje običajnih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je pripravljena obsežna , v katerem lahko najdete Module z implementacijo strežnikov in odjemalcev HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module za integracijo z različnimi spletnimi okviri, obdelovalnike WebSocket in Ajax, povezovalnike do DBMS (MySQL, PostgreSQL, SQLite, MongoDB), predloge, CSS motorje, implementacije kripto algoritmov in sistemov avtorizacije (OAuth), XML-parsere.
Za obdelavo velikega števila vzporednih zahtev Node.js uporablja asimetričen model izvajanja kode, ki temelji na obdelavi dogodkov v neblokirnem načinu in opredelitvi callback obdelovalnikov. Kot načini multiplexiranja povezav podpiramo metode, kot so epoll, kqueue, /dev/poll in select. Za multiplexiranje povezav se uporablja knjižnica , ki je nadgradnja nad v sistemih Unix in nad IOCP v sistemih Windows. Za ustvarjanje nabora niti (thread pool) se uporablja knjižnica , za izvajanje DNS-poizvedb v neblokirnem načinu pa je integriran . Vse sistemske klice, ki povzročajo blokado, izvajamo znotraj nabora niti in nato, kot tudi obdelovalniki signalov, pošljejo rezultate svojega dela nazaj preko neimenovane cevi (pipe). Izvajanje JavaScript kode se zagotavlja skozi vključitev motorja (dodatno Microsoft razvija različico Node.js z motorjem Chakra-Core).
Essencialno je Node.js podoben okvirjem , , in Dogodki v Tcl, vendar je krog obdelave dogodkov (event loop) v Node.js skrit pred razvijalcem in spominja na obdelavo dogodkov v spletnem aplkacijah, ki tečejo v brskalniku. Pri pisanju aplikacij za node.js je treba upoštevati specifiko dogodkovno usmerjenega programiranja, na primer namesto izvajanja „var result = db.query(„select..“);“ z čakanjem na zaključek dela in nadaljnjo obdelavo rezultatov, Node.js uporablja načelo asinhronega izvajanja, torej se koda transformira v „db.query(„select..“, function (result) {obdelava rezultata});“, pri čemer nadzor takoj preide na nadaljnjo kodo, rezultat poizvedbe pa se obdela, ko se podatki prejemajo.
Izvor: opennet.ru
