Szerveroldali JavaScript platform Node.js 19.0 elérhető

Megjelent a Node.js 19.0, a hálózati alkalmazások JavaScriptben futtatására szolgáló platform. A Node.js 19 egy szokásos támogatási ág, amelynek frissítései 2023 júniusáig érhetők el. A következő napokban befejeződik a Node.js 18 ág stabilizálása, amely LTS státuszt kap, és 2025 áprilisáig lesz támogatott. A Node.js 16.0 korábbi LTS-ágának karbantartása 2023 szeptemberéig, a tavalyelőtti LTS 14.0-s ágának karbantartása pedig 2023 áprilisáig tart.

Főbb fejlesztések:

  • A V8-as motort a Chromium 10.7-ben használt 107-es verzióra frissítették. A motorban a Node.js 18-as ághoz képest történt változtatások között megemlítendő az Intl.NumberFormat API harmadik verziójának megvalósítása, amely új formatRange funkciókat ad hozzá. (), formatRangeToParts() és selectRange(), halmazok csoportosítása, új lehetőségek a kerekítéshez és a pontosság beállításához, a karakterláncok decimális számként való értelmezésének lehetősége. A mellékelt llhttp 8.1.0 és npm 8.19.2 függőségek is frissültek.
  • Egy kísérleti "node -watch" parancsot javasoltak egy figyelési mód megvalósításával, amely biztosítja, hogy a folyamat újrainduljon, amikor az importált fájl megváltozik (például ha a "node -watch index.js" fut, akkor a folyamat automatikusan újraindul, ha az index.js megváltozik).
  • Minden kimenő HTTP/HTTPS kapcsolatnál engedélyezve van a HTTP 1.1 Keep-Alive mechanizmus, amely egy bizonyos ideig nyitva hagyja a kapcsolatot több HTTP-kérelem feldolgozásához ugyanazon a kapcsolaton belül. A Keep-Alive várhatóan javítja az átviteli sebességet és a teljesítményt. Alapértelmezés szerint a kapcsolat megnyitásának időkorlátja 5 másodpercre van beállítva. A HTTP-kliens-megvalósításhoz hozzáadták a Keep-Alive HTTP-fejléc elemzésének támogatását a kiszolgálóválaszokban, és az inaktív ügyfelek Keep-Alive használatával történő automatikus leválasztása hozzáadásra került a Node.js HTTP-kiszolgáló megvalósításához.
  • A WebCrypto API átkerült a stabil kategóriába, kivéve az Ed25519, Ed448, X25519 és X448 algoritmusokat használó függvényeket. A WebCrypto modul eléréséhez használhatja a globalThis.crypto-t vagy a request('node:crypto').webcrypto-t.
  • Megszűnt a DTrace, SystemTap és ETW (Event Tracing for Windows) nyomkövető eszközök támogatása, amelyek karbantartását megfelelő támogatási terv hiányában nem tartották megfelelőnek a naprakész karbantartás bonyolultsága miatt.

A Node.js platform webalkalmazások szerverkarbantartására és normál kliens és szerver hálózati programok létrehozására egyaránt használható. A Node.js alkalmazások funkcionalitásának bővítésére egy nagy modulgyűjtemény készült, amelyben megtalálhatók a HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 szerverek és kliensek megvalósításával rendelkező modulok, az integrációhoz szükséges modulok különféle webes keretrendszerekkel, WebSocket és Ajax kezelőkkel, DBMS csatlakozókkal (MySQL, PostgreSQL, SQLite, MongoDB), sablonozó motorokkal, CSS motorokkal, kriptoalgoritmusok és engedélyezési rendszerek implementációival (OAuth), XML elemzőkkel.

Nagyszámú párhuzamos kérés feldolgozásának biztosítása érdekében a Node.js aszinkron kódvégrehajtási modellt használ, amely nem blokkoló eseménykezelésen és a visszahíváskezelők meghatározásán alapul. A kapcsolatok multiplexelésének támogatott módszerei az epoll, kqueue, /dev/poll és select. A kapcsolat multiplexeléséhez a libuv könyvtárat használják, amely a libev kiegészítője Unix rendszereken és IOCP Windows rendszeren. A libeio könyvtár szálkészlet létrehozására szolgál, a c-ares pedig integrálva van DNS-lekérdezések végrehajtásához nem blokkoló módban. Minden blokkolást okozó rendszerhívás a szálkészleten belül kerül végrehajtásra, majd a jelkezelőkhöz hasonlóan egy névtelen csőn (pipe) keresztül továbbítja a munkájuk eredményét. A JavaScript kód végrehajtását a Google által kifejlesztett V8-as motor biztosítja (a Microsoft emellett a Node.js egy verzióját is fejleszti Chakra-Core motorral).

Lényegében a Node.js hasonló a Perl AnyEvent, Ruby Event Machine, Python Twisted keretrendszerekhez és a Tcl eseménymegvalósításhoz, de a Node.js eseményhurok rejtve van a fejlesztő elől, és egy futó webalkalmazás eseménykezelésére hasonlít. böngészőben. Amikor alkalmazásokat ír a node.js számára, figyelembe kell vennie az eseményvezérelt programozás sajátosságait, például a "var result = db.query("select..");" a munka befejezésének várakozásával és az eredmények későbbi feldolgozásával a Node.js az aszinkron végrehajtás elvét használja, azaz. a kód átalakul "db.query("select..", függvény (eredmény) {eredményfeldolgozás});", amelyben a vezérlés azonnal átkerül a további kódra, és a lekérdezés eredménye az adatok beérkezésekor kerül feldolgozásra.

Forrás: opennet.ru

Hozzászólás