kiadás , a JavaScript nyelvű hálózatos alkalmazások végrehajtására szolgáló platform. Egyidejűleg befejeződött a korábbi Node.js 12.x ág stabilizálása, amely átkerült a hosszú távú támogatású kiadások kategóriájába, amelyek frissítései 4 éven át jelennek meg. A korábbi LTS ág, a Node.js 10.0 támogatása 2021 áprilisáig tart, míg a megelőző LTS ág, a 8.0 januárig a 2020-as évben.
Fő :
- A V8 motor frissítve lett a verzióra, amelyben új teljesítményoptimalizáló módszerek kerültek bevezetésre, a objektumok destrukturálása javult, csökkent a memóriafogyasztás és lerövidült a WebAssembly végrehajtási előkészítési ideje;
- Alapértelmezés szerint teljes támogatás biztosított a nemzetközivé tételhez és a Unicode-hoz a (International Components for Unicode) könyvtárak alapján, amelyek lehetővé teszik a fejlesztők számára, hogy olyan kódot írjanak, támogatja a különböző nyelvek és lokációk használatát. A full-icu modul mostantól alapértelmezett telepítve van;
- Stabilizálták az API-t , több szálú eseménykezelő ciklusok (event loop) létrehozását. A megvalósítás a worker_threads modulon alapul, amely lehetővé teszi JavaScript-kód futtatását több párhuzamos szálon. A Workers Threads API stabil támogatása szintén visszafelé kompatibilissé vált a Node.js 12.x LTS ágba;
- Fokozottak a platform követelményei. A fordításhoz mostantól legalább macOS 10.11 (Xcode 10 szükséges), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- Javították a Python 3 támogatását. Ha a rendszerben Python 2 és Python 3 is található, akkor továbbra is a Python 2-t használják, de hozzáadták a lehetőséget, hogy csak Python 3 használata esetén is fordítani lehessen;
- Eltávolították a régi HTTP-parsert („--http-parser=legacy”). Eltávolították vagy elavultként jelölték meg a FSWatcher.prototype.start(), ChildProcess._channel, a ReadStream és WriteStream objektumok open() metódusát, a request.connection, response.connection és module.createRequireFromPath() hívásokat;
- Ezután a 13.0.1 frissítés, amelyben azonnal több hibát is kijavítottak. Köztük megoldották az npm 6.12.0 figyelmeztetési problémát a nem támogatott verzió használatával kapcsolatban.
Emlékezzünk, hogy a Node.js platform használható a Web-alapú alkalmazások szerveroldali működtetésére, valamint hagyományos kliens- és szerveroldali hálózati programok létrehozására. A Node.js alkalmazások funkcionalitásának kiterjesztésére egy nagy , amely lehetővé teszi HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 szerverek és kliensek megvalósítását, valamint különböző webkeretrendszerekkel való integrációt támogató modulokat, WebSocket és Ajax kezelőket, adatbázis-kapcsolókat (MySQL, PostgreSQL, SQLite, MongoDB), sablonkezelőket, CSS-motorokat, kriptográfiai algoritmusok megvalósítását és hitelesítési rendszereket (OAuth), XML-parszereket.
A párhuzamos kérések nagy számának kezelésére a Node.js aszinkron kódvégrehajtási modellt alkalmaz, amely esemény-alapú, nem blokkoló módban működik, és callback kezelőket használ. A kapcsolatok multiplexelésére olyan módszereket támogat, mint az epoll, kqueue, /dev/poll és select. A multiplexeléshez használt könyvtár , amely a Unix rendszereken és IOCP-n Windows alatt. A szálkészség (thread pool) létrehozásához a könyvtárat használják, a DNS-kérések nem blokkoló végrehajtásához integrálva van . Minden blokkoló rendszerhívást a szálkészség keretében hajtanak végre, majd, akárcsak a jelzőkezelők, az eredményt egy anonim csövön (pipe) keresztül továbbítják. A JavaScript kód végrehajtását a Google által kifejlesztett motor segítségével biztosítják (továbbá a Microsoft a Chakra-Core motorral fejleszti a Node.js egy változatát).
A Node.js lényegében hasonlít a , , és Tcl eseménykezelőire, de a Node.js eseménykezelő ciklusa rejtve van a fejlesztő elől, és hasonlít a webalkalmazásokban, böngészőben történő eseménykezeléshez. Node.js alkalmazások írásakor figyelembe kell venni az esemény-alapú programozás sajátosságait, például ahelyett, hogy a "var result = db.query('select..');" kódot használnánk, amely megvárná a végrehajtás befejezését és az eredmények feldolgozását, a Node.js az aszinkron végrehajtási elvet alkalmazza, vagyis a kód átíródik "db.query('select..', function (result) {eredmény feldolgozása});" formára, amelynél a vezérlés azonnal továbbmegy a következő kódra, és az eredmény feldolgozása az adatok megérkezésekor történik.
Forrás: opennet.ru
