Bedienerkant JavaScript Node.js 13.0 vrystelling

Beskikbaar vrylating Node.js 13.0,platforms om netwerktoepassings in JavaScript te laat loop. Terselfdertyd is die stabilisering van die vorige tak van Node.js 12.x voltooi, wat oorgedra is na die kategorie van langtermyn-ondersteuningsvrystellings, waarvan opdaterings vir 4 jaar vrygestel word. Ondersteuning vir die vorige LTS-tak van Node.js 10.0 sal tot April 2021 duur, en ondersteuning vir die laaste LTS-tak 8.0 tot Januarie 2020.

Die belangrikste verbeterings:

  • V8-enjin opgedateer na weergawe 7.8, wat nuwe werkverrigtingoptimaliseringstegnieke gebruik, voorwerpdestrukturering verbeter, geheueverbruik verminder en voorbereidingstyd vir WebAssembly-uitvoering verminder;
  • Volledige ondersteuning vir internasionalisering en biblioteekgebaseerde Unicode is by verstek geaktiveer ICU (International Components for Unicode), wat ontwikkelaars toelaat om kode te skryf ondersteunend werk met verskillende tale en plekke. Die full-icu-module is nou by verstek geïnstalleer;
  • API gestabiliseer Werkers-drade, toelaat skep multi-threaded event loops. Die implementering is gebaseer op die worker_threads-module, wat jou toelaat om JavaScript-kode in verskeie parallelle drade uit te voer. Stabiele ondersteuning vir die Workers Threads API is ook teruggeplaas na die LTS-tak van Node.js 12.x;
  • Vereistes vir platforms is verhoog. Vir montering nou vereis ten minste macOS 10.11 (vereis Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Verbeterde ondersteuning vir Python 3. As die stelsel beide Python 2 en Python 3 het, word Python 2 steeds gebruik, maar die vermoë om te bou wanneer slegs Python 3 op die stelsel geïnstalleer is, is bygevoeg;
  • Die ou implementering van die HTTP-ontleder ("—http-parser=legacy") is verwyder. Verwyder of afgekeur oproepe en eienskappe FSWatcher.prototype.start(), ChildProcess._channel, open() metode in ReadStream en WriteStream voorwerpe, request.connection, response.connection, module.createRequireFromPath();
  • Volgende dit het uitgedraai opdatering 13.0.1, wat verskeie foute vinnig opgelos het. In die besonder, die probleem met npm 6.12.0 wat 'n waarskuwing oor die gebruik van 'n nie-ondersteunde weergawe vertoon, is opgelos.

Laat ons onthou dat die Node.js-platform gebruik kan word vir beide bediener-kant ondersteuning van webtoepassings en vir die skep van gewone kliënt- en bedienernetwerkprogramme. Om die funksionaliteit van toepassings vir Node.js uit te brei, 'n groot aantal versameling van modules, waarin jy modules kan vind met die implementering van bedieners en kliënte HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modules vir integrasie met verskeie webraamwerke, WebSocket en Ajax hanteerders, verbindings na DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), sjabloonenjins, CSS-enjins, implementering van kriptografiese algoritmes en magtigingstelsels (OAuth), XML-ontleders.

Om groot getalle parallelle versoeke te hanteer, gebruik Node.js 'n asynchrone kode-uitvoeringsmodel gebaseer op nie-blokkerende gebeurtenisverwerking en die definisie van terugbelhanteerders. Ondersteunde metodes vir multipleksing van verbindings sluit in epoll, kqueue, /dev/poll, en kies. Die biblioteek word gebruik om verbindings te vermenigvuldig libuv, wat 'n bobou verby is libev op Unix-stelsels en oor IOCP op Windows. 'n Biblioteek word gebruik om 'n draadpoel te skep libeio, vir die uitvoering van DNS-navrae in nie-blokkerende modus is geïntegreer c-ares. Alle stelseloproepe wat blokkering veroorsaak, word binne die draadpoel uitgevoer en stuur dan, soos seinhanteerders, die resultaat van hul werk terug deur 'n naamlose pyp. Die uitvoering van JavaScript-kode word verseker deur die gebruik van 'n enjin wat deur Google ontwikkel is V8 (Boonop ontwikkel Microsoft 'n weergawe van Node.js met die Chakra-Core-enjin).

In sy kern is Node.js soortgelyk aan raamwerke Perl AnyEvent, Ruby Event Machine, Python gedraai и implementering gebeure in Tcl, maar die gebeurtenislus in Node.js is vir die ontwikkelaar versteek en lyk soos gebeurtenishantering in 'n webtoepassing wat in 'n blaaier loop. Wanneer u toepassings vir node.js skryf, is dit nodig om die besonderhede van gebeurtenisgedrewe programmering in ag te neem, byvoorbeeld, in plaas daarvan om "var result = db.query("select..");" met wag vir die voltooiing van werk en daaropvolgende verwerking van die resultate, gebruik Node.js die beginsel van asynchrone uitvoering, d.w.s. die kode word getransformeer na “db.query(“kies..”, funksie (resultaat) {resultaatverwerking});”, waarin beheer onmiddellik na verdere kode sal oorgaan, en die navraagresultaat sal verwerk word soos data aankom. .

Bron: opennet.ru

Voeg 'n opmerking