udgivelse , platforme til kørsel af netapplikationer skrevet i JavaScript. Samtidig er stabiliseringen af den tidligere version Node.js 12.x afsluttet, som nu er klassificeret som en version med langvarig support, med opdateringer der udgives i 4 år. Støtten til den tidligere LTS-version Node.js 10.0 vil vare indtil april 2021, og for den før-sidste LTS-version 8.0 indtil januar 2020.
Vigtige :
- V8-motoren er opdateret til version , hvor nye metoder til ydeevneoptimering er blevet implementeret, objekt-destrukturering er forbedret, hukommelsesforbruget er reduceret, og forberedelsestiden til udførelse af WebAssembly er forkortet;
- Der er som standard aktiveret fuld støtte til internationalisering og Unicode baseret på biblioteker (International Components for Unicode), hvilket gør det muligt for udviklere at skrive kode, arbejde med forskellige sprog og lokaliteter. Modulet full-icu er nu installeret som standard;
- API'en , til at skabe multi-trådede event-loop. Implementeringen er baseret på modulet worker_threads, som tillader kørsel af JavaScript-kode i flere parallelle tråde. Den stabile støtte til API'en Workers Threads er også blevet backporteret til LTS-versionen Node.js 12.x;
- Kravene til platformene er blevet hævet. For samling kræves nu mindst macOS 10.11 (kræver Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- Støtten til Python 3 er blevet forbedret. I tilfælde af at både Python 2 og Python 3 er til stede i systemet, benyttes stadig Python 2, men der er tilføjet mulighed for samling, hvis der kun er Python 3 i systemet;
- Den gamle implementering af HTTP-parseren ("--http-parser=legacy") er blevet fjernet. Kald og egenskaber som FSWatcher.prototype.start(), ChildProcess._channel, metoden open() i objekterne ReadStream og WriteStream, request.connection, response.connection, module.createRequireFromPath(); er blevet fjernet eller kategoriseret som forældede.
- Næste opdatering 13.0.1, hvor flere fejl er blevet rettet hurtigt. Dette inkluderer løsning af et problem med npm 6.12.0, der advarede om brug af en ikke-understøttet version.
Vi mindes om, at Node.js-platformen kan bruges både til serveradministration af webapplikationer og til at udvikle almindelige klient- og serversnetværksprogrammer. For at udvide funktionaliteten af Node.js-applikationer er der forberedt en stor , hvor man kan finde moduler med implementeringer af HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-servere og -klienter, moduler til integration med forskellige web-rammeværk, WebSocket- og Ajax-håndterere, forbindelser til databaser (MySQL, PostgreSQL, SQLite, MongoDB), templating-motorer, CSS-motorer, implementeringer af kryptografiske algoritmer og godkendelsessystemer (OAuth), XML-analysatorer.
For at sikre behandling af et stort antal parallelle anmodninger anvender Node.js en asynkron kodekørselsmodel baseret på hændelseshåndtering i ikke-blokerende tilstand og bestemmelse af callback-håndterere. Som metoder til multiplexing af forbindelser understøttes metoder som epoll, kqueue, /dev/poll og select. Til multiplexing af forbindelser bruges biblioteket , som er et lag oven på i Unix-systemer og IOCP i Windows. For at oprette en trådpool (thread pool) anvendes biblioteket , til at udføre DNS-anmodninger i ikke-blokerende tilstand er integreret . Alle systemopkald, der forårsager blokering, udføres inden for trådpoolen og sender derefter, ligesom signalhåndtererne, resultatet af deres arbejde tilbage via et anonymt rør (pipe). Udførelsen af JavaScript-kode sikres gennem brugen af den motor, der er udviklet af Google, (yderligere udvikler Microsoft en version af Node.js med Chakra-Core-motoren).
I sin essens ligner Node.js rammeværkerne , , og Der event-loop i Node.js er skjult for udvikleren og minder om begivenhedshåndtering i en webapplikation, der kører i en browser. Ved skrivning af applikationer til node.js skal man tage hensyn til de specifikke forhold inden for begivenhedsorienteret programmering; for eksempel, i stedet for at udføre «var result = db.query(«select..»);» og vente på, at udførelsen afsluttes og derefter behandle resultaterne, benytter Node.js princippet om asynkron udførelse, hvilket betyder, at koden transformeres til «db.query(«select..», function (result) {behandling af resultat});», hvor kontrol straks overgår til den næste kode, mens resultatet af forespørgslen behandles, efterhånden som dataene modtages.
Kilde: opennet.ru
