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

került sor kiadás Node.js 14.0,platformok hálózati alkalmazások futtatásához JavaScriptben. A Node.js 14.0 egy hosszú távú támogatási ág, de ez az állapot csak októberben, stabilizálás után kerül kiosztásra. A Node.js 14.0 támogatott végrehajtani 2023 áprilisáig. A Node.js 12.0 korábbi LTS-ágának karbantartása 2022 áprilisáig, a tavalyelőtti LTS 10.0-s ága pedig 2021 áprilisáig tart. A 13.x állomásozó ág támogatása ez év júniusában megszűnik.

A főbb fejlesztések:

  • A generálás képessége menet közben vagy bizonyos események bekövetkezésekor stabilizálódott diagnosztikai jelentések, amelyek olyan eseményeket jelenítenek meg, amelyek segítenek diagnosztizálni a problémákat, például összeomlásokat, teljesítménycsökkenést, memóriaszivárgást, nagy CPU-terhelést, váratlan hibakimenetet stb.
  • Kísérleti API támogatás hozzáadva Aszinkron helyi tárhely az AsyncLocalStorage osztály megvalósításával, amellyel a visszahívások és ígéretek alapján aszinkron állapotot lehet létrehozni a kezelőkkel. Az AsyncLocalStorage lehetővé teszi az adatok tárolását egy webes kérés feldolgozása közben, ami más nyelveken a szálalapú tárolásra emlékeztet.
  • Betöltéskor eltávolítottuk a kísérleti funkcióra vonatkozó figyelmeztető üzenetet modulok ECMAScript 6 csatlakoztatva és exportálva import és export nyilatkozatok segítségével. Ugyanakkor maga az ESM modulok megvalósítása kísérleti jellegű.
  • V8-as motor verzióra frissítve 8.1 (1, 2, 3), amely új teljesítményoptimalizálást és olyan funkciókat tartalmaz, mint például az új logikai összefűzési operátor "???" (a jobb oldali operandust adja vissza, ha a bal oldali operandus NULL vagy nem definiált, és fordítva), a "?." operátor a tulajdonságok vagy hívások teljes láncának egyszeri ellenőrzéséhez (például „db?.user?.name?.length” előzetes ellenőrzések nélkül), az Intl.DisplayName metódus honosított nevek megszerzéséhez stb.
  • Megtörtént a Streams API felülvizsgálata, melynek célja a Streams API-k konzisztenciájának javítása és a Node.js alapvető részeinek viselkedésében mutatkozó különbségek kiküszöbölése volt. Például a http.OutgoingMessage viselkedése közel áll a stream.Writable-hoz, a net.Socket pedig a stream.Duplex-hez. Az autoDestroy opció alapértelmezés szerint "true"-ra van állítva, ami a "_destroy" meghívását jelenti a befejezés után.
  • Kísérleti API támogatás hozzáadva VOLTAM ÉN (WebAssembly rendszerfelület), szoftveres interfészeket biztosít az operációs rendszerrel való közvetlen interakcióhoz (POSIX API fájlokkal, socketekkel stb.).
  • Fokozott követelmények a minimális verziók fordítók és platformok: macOS 10.13 (High Sierra), GCC 6, Windows újabb 7/2008R2.

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ése érdekében számos modulok gyűjteménye, amelyben megtalálhatók a szerverek és kliensek HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 implementációjával rendelkező modulok, különféle webes keretrendszerekkel való integrációs modulok, WebSocket és Ajax kezelők, DBMS-hez csatlakozók (MySQL, PostgreSQL, SQLite) , MongoDB ), sablonmotorok, CSS motorok, kriptográfiai algoritmusok és engedélyezési rendszerek (OAuth) megvalósításai, XML-elemzők.

Nagyszámú párhuzamos kérés kezelésére a Node.js aszinkron kódvégrehajtási modellt használ, amely nem blokkoló eseményfeldolgozáson és visszahíváskezelők meghatározásán alapul. A kapcsolatok multiplexelésének támogatott módszerei közé tartozik az epoll, a kqueue, a /dev/poll és a select. A könyvtár multiplex kapcsolatokra szolgál libuv, ami egy felépítmény át libev Unix rendszereken és IOCP-n keresztül Windows rendszeren. A szálkészlet létrehozására könyvtárat használnak libeio, a DNS-lekérdezések nem blokkoló módban történő végrehajtásához integrálva van c-arok. Az összes 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övön keresztül továbbítja munkájuk eredményét. A JavaScript kód végrehajtását a Google által fejlesztett motor biztosítja V8 (Emellett a Microsoft a Node.js egy verzióját is fejleszti a Chakra-Core motorral).

Lényegében a Node.js hasonló a keretrendszerekhez Perl AnyEvent, Ruby Event Machine, Python Twisted и végrehajtás események a Tcl-ben, de a Node.js eseményhurok rejtve van a fejlesztő elől, és egy böngészőben futó webalkalmazás eseménykezeléséhez hasonlít. A node.js-hoz való alkalmazások írásakor figyelembe kell venni például az eseményvezérelt programozás sajátosságait a „var result = db.query(“select..”);” helyett. a munka befejezésének megvárá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