Server-side JavaScript Node.js 14.0 release

vond plaats релиз Knooppunt.js 14.0, platforms voor het uitvoeren van netwerkapplicaties in JavaScript. Node.js 14.0 behoort tot de lange ondersteuningstakken, maar deze status zal pas in oktober worden toegewezen, na stabilisatie. Ondersteuning voor Node.js 14.0 zal zijn voerde uit tot april 2023. Het onderhoud van de vorige Node.js 12.0 LTS-vertakking duurt tot april 2022, en de vorige 10.0 LTS-vertakking tot april 2021. Ondersteuning voor de 13.x staging branch eindigt in juni van dit jaar.

De belangrijkste verbeteringen:

  • Het vermogen om on-the-fly te genereren of wanneer bepaalde gebeurtenissen plaatsvinden, is gestabiliseerd diagnostische rapporten, die gebeurtenissen weerspiegelen die helpen bij het diagnosticeren van problemen zoals crashes, prestatiedalingen, geheugenlekken, hoge CPU-belasting, onverwachte foutuitvoer, enz.
  • Experimentele API-ondersteuning toegevoegd Asynchrone lokale opslag met een implementatie van de klasse AsyncLocalStorage die kan worden gebruikt om een ​​asynchrone status te creëren met handlers op basis van callbacks en beloften. Met AsyncLocalStorage kunt u gegevens opslaan terwijl een webverzoek wordt verwerkt, net zoals Thread-Local Storage in andere talen.
  • Waarschuwing voor experimentele functie bij opstarten verwijderd modules ECMAScript 6 verbonden en geëxporteerd met behulp van de import- en exportinstructies. Tegelijkertijd is de implementatie van ESM-modules nog steeds experimenteel.
  • V8-motor bijgewerkt naar versie 8.1 (1, 2, 3), dat nieuwe prestatie-optimalisaties introduceert en nieuwe functies toevoegt, zoals de nieuwe logische join-operator "???" (retourneert de rechter operand als de linker operand NULL of ongedefinieerd is, en omgekeerd), de "?." voor een eenmalige controle van de gehele keten van eigenschappen of aanroepen (bijvoorbeeld "db?.user?.name?.length" zonder voorafgaande controles), de Intl.DisplayName-methode voor het verkrijgen van gelokaliseerde namen, enz.
  • De Streams API is gereviseerd om de consistentie van de Streams API's te verbeteren en verschillen in het gedrag van de kernonderdelen van Node.js aan te pakken. Het gedrag van http.OutgoingMessage is bijvoorbeeld vergelijkbaar met stream.Writable, en net.Socket is vergelijkbaar met stream.Duplex. De autoDestroy-optie is standaard ingesteld op "true", wat betekent dat "_destroy" zal worden aangeroepen na voltooiing.
  • Experimentele API-ondersteuning toegevoegd WAS IK (WebAssembly-systeeminterface) dat programmeerinterfaces biedt voor directe interactie met het besturingssysteem (POSIX API voor het werken met bestanden, sockets, enz.).
  • Verhoogde eisen voor minimale versies compilers en platforms: macOS 10.13 (High Sierra), GCC 6, Windows nieuwer dan 7/2008R2.

Bedenk dat het Node.js-platform zowel kan worden gebruikt voor serveronderhoud van webapplicaties als voor het maken van gewone client- en servernetwerkprogramma's. Om de functionaliteit van applicaties voor Node.js uit te breiden, is een groot verzameling modules, waarin u modules kunt vinden met de implementatie van HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-servers en -clients, modules voor integratie met verschillende webframeworks, WebSocket- en Ajax-handlers, connectoren naar DBMS (MySQL, PostgreSQL, SQLite , MongoDB), sjabloon-engines, CSS-engines, implementaties van crypto-algoritmen en autorisatiesystemen (OAuth), XML-parsers.

Om de verwerking van een groot aantal parallelle verzoeken te garanderen, gebruikt Node.js een asynchrone code-uitvoeringsmodel gebaseerd op niet-blokkerende gebeurtenisafhandeling en de definitie van callback-handlers. Ondersteunde methoden voor het multiplexen van verbindingen zijn epoll, kqueue, /dev/poll en select. De bibliotheek wordt gebruikt voor multiplexverbindingen libuv, waar een bovenbouw overheen zit libev op Unix-systemen en via IOCP op Windows. De bibliotheek wordt gebruikt om een ​​threadpool te maken vrij, om DNS-query's in niet-blokkerende modus geïntegreerd uit te voeren c-aren. Alle systeemaanroepen die blokkering veroorzaken, worden binnen de threadpool uitgevoerd en sturen vervolgens, net als signaalbehandelaars, het resultaat van hun werk terug via een naamloze pijp (pipe). De uitvoering van JavaScript-code wordt verzorgd door het gebruik van een door Google ontwikkelde engine V8 (Daarnaast ontwikkelt Microsoft een Node.js-variant met de Chakra-Core-engine).

In de kern is Node.js vergelijkbaar met frameworks. Perl AnyEvent, Ruby evenementenmachine, Python gedraaid и implementatie gebeurtenissen in Tcl, maar de gebeurtenislus in Node.js is verborgen voor de ontwikkelaar en lijkt op gebeurtenisafhandeling in een webtoepassing die in een browser wordt uitgevoerd. Wanneer u toepassingen voor node.js schrijft, moet u bijvoorbeeld rekening houden met de specifieke kenmerken van gebeurtenisgestuurd programmeren, in plaats van "var result = db.query("select..");" met wachten op voltooiing van het werk en daaropvolgende verwerking van resultaten, gebruikt Node.js het principe van asynchrone uitvoering, d.w.z. de code wordt omgezet in "db.query("select..", function (result) {result processing});", waarin de controle onmiddellijk wordt doorgegeven aan verdere code en het queryresultaat wordt verwerkt zodra de gegevens binnenkomen. .

Bron: opennet.ru

Voeg een reactie