A kiszolgálóoldali JavaScript platform Node.js 16.0 kiadása

Megjelent a Node.js 16.0, a hálózati alkalmazások JavaScriptben való futtatására szolgáló platform. A Node.js 16.0 a hosszú távú támogatási ágnak minősül, de ez az állapot csak októberben, a stabilizálás után kerül kiosztásra. A Node.js 16.0 2023 áprilisáig lesz támogatott. A Node.js 14.0 korábbi LTS-ágának karbantartása 2023 áprilisáig, a tavalyelőtti LTS 12.0-s ágának karbantartása pedig 2022 áprilisáig tart. A 10.0 LTS-ág támogatása 10 napon belül megszűnik.

Főbb fejlesztések:

  • A V8-as motort a 9.0-s verzióra frissítették (a Node.js 15 a 8.6-os kiadást használta), amely lehetővé teszi olyan szolgáltatások megvalósítását, mint például a reguláris kifejezések „indexes” tulajdonsága (egy tömböt tartalmaz az egyezések csoportjainak kezdő és záró pozícióival) , az Atomics metódus a Node.js 16-ban .waitAsync (az Atomics.wait aszinkron verziója), az await kulcsszó használatának támogatása a legfelső szintű modulokban. A függvényhívások felgyorsultak olyan helyzetekben, amikor az átadott argumentumok száma nem felel meg a függvényben meghatározott paramétereknek.
  • A Timers Promises API stabilizálva lett, alternatív funkciókészletet biztosítva a Promise objektumokat kimenetként visszaadó időzítőkkel való munkavégzéshez, így nincs szükség az util.promisify() használatára. import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hello, World!'); } fuss();
  • Bekerült a Web Crypto API kísérleti megvalósítása, amely alapvető kriptográfiai műveletek elvégzésére szolgál a webalkalmazások oldalán, mint például a kriptográfiai hashek manipulálása, digitális aláírások generálása és ellenőrzése, adatok kódolása és dekódolása különféle titkosítási módszerekkel, valamint kriptográfiailag biztonságos generálás. véletlen számok. Az API funkciókat is biztosít a kulcsok generálásához és kezeléséhez.
  • Az N-API (API a bővítmények fejlesztéséhez) a 8-as verzióra frissült.
  • Megtörtént az átállás az NPM 7.10 csomagkezelő új kiadására.
  • Stabilizálta az AbortController osztály megvalósítását, amely az AbortController webes API-n alapul, és lehetővé teszi a jelek törlését a kiválasztott Promise-alapú API-kban.
  • A Source Map formátum harmadik verziójának támogatása, amely a generált, feldolgozott vagy csomagolt modulok és az eredeti forráskód összehasonlítására szolgál, stabilizálódott.
  • A régi webes API-kkal való kompatibilitás érdekében a buffer.atob(data) és a buffer.btoa(data) metódusok hozzáadásra kerültek.
  • Megkezdődött az új, M1 ARM chippel felszerelt Apple-eszközök szerelvényeinek kialakítása.
  • A Linux platformon a fordítói verzióra vonatkozó követelményeket a GCC 8.3-ra emelték.

Emlékezzünk vissza, hogy a Node.js platform webes alkalmazások szerveroldali támogatására és hétköznapi 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-hez csatlakozókkal (MySQL, PostgreSQL, SQLite, MongoDB), sablonmotorokkal, CSS motorokkal, kriptográfiai algoritmusok é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.

Emellett megjegyzendő, hogy a Deno cég, amelyet a Node.js létrehozója alapított a következő generációs Deno platform fejlesztésére, 4.9 millió dollár befektetést kapott. Célját tekintve a Deno hasonló a Node.js-hez, de igyekszik kiküszöbölni a Node.js architektúrában elkövetett fogalmi hibákat, és biztonságosabb környezetet biztosítani a felhasználóknak. Megjegyzendő, hogy a Deno üzleti megoldásai teljesen nyitott termékekre épülnek, és a külön fizetős funkciókkal rendelkező Open Core modell elfogadhatatlan a Deno platform számára.

Forrás: opennet.ru

Hozzászólás