release , een platform voor het uitvoeren van netwerkapplicaties in de programmeertaal JavaScript. Node.js 14.0 valt onder de versies met langdurige ondersteuning, maar deze status zal pas in oktober worden toegewezen, na stabilisatie. Ondersteuning voor Node.js 14.0 zal tot april 2023. Ondersteuning voor de vorige LTS-versie Node.js 12.0 zal doorgaan tot april 2022, terwijl de versie daarvoor, LTS 10.0, tot april 2021 zal worden ondersteund. De ondersteuning voor de tussentijdse versie 13.x eindigt deze juni.
Belangrijkste :
- De mogelijkheid om dynamisch of bij bepaalde gebeurtenissen , waarin gebeurtenissen worden weergegeven die helpen bij het diagnosticeren van problemen zoals crashes, prestatieverlies, geheugenlekken, hoge CPU-belasting, onverwachte foutuitvoer, enz.
- Er is experimentele ondersteuning toegevoegd voor de API met de implementatie van de klasse AsyncLocalStorage, die kan worden gebruikt om asynchrone statuses te creƫren met handlers op basis van callback-aanroepen en promises. AsyncLocalStorage stelt je in staat om gegevens op te slaan tijdens de verwerking van een webverzoek, vergelijkbaar met thread-local storage in andere talen.
- De waarschuwing over de experimentele functie bij het laden is verwijderd van modules die zijn geïmporteerd en geëxporteerd met behulp van de expressies import en export. De implementatie van ESM-modules blijft vooralsnog experimenteel.
- De V8-engine is bijgewerkt naar versie (, , ), waarin nieuwe prestatieverbeteringen zijn doorgevoerd en innovaties zijn toegevoegd, zoals de nieuwe logische operator '??' (die de rechteroperand retourneert als de linkeroperand NULL of undefined heeft, en vice versa), de operator '?.' voor ƩƩnmalige controle van een hele keten van eigenschappen of aanroepen (bijvoorbeeld 'db?.user?.name?.length' zonder voorafgaande controles), de methode Intl.DisplayName voor het verkrijgen van gelokaliseerde namen, enz.
- Er is een herziening van de API Streams uitgevoerd, gericht op het verbeteren van de consistentie van de API-interfaces van Streams en het elimineren van gedragsverschillen in de basiselementen van Node.js. Bijvoorbeeld, het gedrag van http.OutgoingMessage is dichter bij stream.Writable gebracht, en net.Socket naar stream.Duplex. De optie autoDestroy is standaard ingesteld op 'true', wat inhoudt dat '_destroy' wordt aangeroepen na voltooiing.
- Er is experimentele ondersteuning toegevoegd voor de API (), die programmeerinterfaces biedt voor directe interactie met het besturingssysteem (POSIX API voor bestands- en socketbewerking, enz.).
- Verhoogde eisen aan compilers en platforms: macOS 10.13 (High Sierra), GCC 6, .
Ter herinnering, het Node.js-platform kan worden gebruikt voor zowel serverondersteuning van Webtoepassingen als voor het maken van algemene client- en servernetwerkprogramma's. Voor het uitbreiden van de functionaliteit van Node.js-toepassingen is er een grote , waarin modules kunnen worden gevonden voor de implementatie van HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-servers en clients, modules voor integratie met verschillende webframeworks, WebSocket- en Ajax-handlers, connectors naar databases (MySQL, PostgreSQL, SQLite, MongoDB), template engines, CSS-templates, implementaties van cryptografie-algoritmen en autorisatiesystemen (OAuth), XML-parsers.
Om een groot aantal gelijktijdige verzoeken te verwerken, maakt Node.js gebruik van een asynchroon model voor code-uitvoering, gebaseerd op event-driven processing in een niet-blokkende modus en het definiëren van callback-handlers. Ondersteunde multiplexingmethoden zijn epoll, kqueue, /dev/poll en select. Voor multiplexing van verbindingen wordt de bibliotheek , die een laag boven , in Unix-systemen en boven IOCP in Windows is. Voor het creëren van een thread pool wordt de bibliotheek , voor het uitvoeren van DNS-verzoeken in een niet-blokkende modus is geïntegreerd . Alle systeemaanroepen die blokkeren, worden uitgevoerd binnen de thread pool en vervolgens, net als de signal handlers, wordt het resultaat van hun werk teruggegeven via een unnamed pipe. De uitvoering van JavaScript-code wordt mogelijk gemaakt door de engine ontwikkeld door Google (bovendien ontwikkelt Microsoft een versie van Node.js met de Chakra-Core engine).
In wezen lijkt Node.js op de frameworks , , en evenementen in Tcl, maar de event loop in Node.js is verborgen voor de ontwikkelaar en lijkt op event processing in een webapplicatie die in een browser draait. Bij het schrijven van applicaties voor node.js is het belangrijk om rekening te houden met de specificiteit van event-driven programming. In plaats van "var result = db.query('select..');" te schrijven en te wachten op de voltooiing en vervolgens de resultaten te verwerken, gebruikt men in Node.js het principe van asynchrone uitvoering, d.w.z. de code wordt getransformeerd in "db.query('select..', function (result) {result verwerken});", waarbij de controle onmiddellijk overgaat naar de volgende code, en het resultaat van de query wordt verwerkt zodra de gegevens beschikbaar zijn.
Bron: opennet.ru
