Servera puses JavaScript Node.js 13.0 laidiens

Pieejams atbrīvot Node.js 13.0,platformas tīkla lietojumprogrammu palaišanai JavaScript. Vienlaikus ir pabeigta iepriekšējā Node.js 12.x atzara stabilizācija, kas ir pārcelta uz ilgtermiņa atbalsta izlaidumu kategoriju, kuru atjauninājumi tiek izlaisti uz 4 gadiem. Iepriekšējai Node.js 10.0 LTS filiālei atbalsts ilgs līdz 2021. gada aprīlim, bet pēdējai LTS nozarei 8.0 – līdz 2020. gada janvārim.

Galvenais uzlabojumi:

  • V8 dzinējs atjaunināts uz versiju 7.8, kas izmanto jaunas veiktspējas optimizācijas metodes, uzlabo objektu iznīcināšanu, samazina atmiņas patēriņu un samazina WebAssembly izpildes sagatavošanas laiku;
  • Pēc noklusējuma ir iespējots pilns internacionalizācijas un uz bibliotēku balstītas Unikoda atbalsts ICU (International Components for Unicode), kas ļauj izstrādātājiem rakstīt kodu atbalstošs strādāt ar dažādām valodām un lokalizācijām. Pilna icu modulis tagad ir instalēts pēc noklusējuma;
  • API stabilizēta Strādnieku pavedieni, ļaujot izveidot vairāku pavedienu notikumu cilpas. Ieviešanas pamatā ir modulis worker_threads, kas ļauj palaist JavaScript kodu vairākos paralēlos pavedienos. Stabils atbalsts Workers Threads API ir arī atpakaļportēts uz Node.js 12.x LTS filiāli;
  • Ir paaugstinātas prasības platformām. Šobrīd montāžai nepieciešams vismaz macOS 10.11 (nepieciešams Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Uzlabots atbalsts Python 3. Ja sistēmā ir gan Python 2, gan Python 3, Python 2 joprojām tiek izmantots, taču ir pievienota iespēja veidot, kad sistēmā ir instalēts tikai Python 3;
  • Vecā HTTP parsētāja ieviešana (“—http-parser=legacy”) ir noņemta. Noņemti vai novecojuši izsaukumi un rekvizīti FSWatcher.prototype.start(), ChildProcess._channel, open() metode ReadStream un WriteStream objektos, request.connection, response.connection, module.createRequireFromPath();
  • Nākamais iznāca atjauninājums 13.0.1, kas ātri izlaboja vairākas kļūdas. Jo īpaši ir atrisināta problēma ar npm 6.12.0, kas parāda brīdinājumu par neatbalstītas versijas izmantošanu.

Atgādināsim, ka Node.js platformu var izmantot gan Web aplikāciju serveru atbalstam, gan parastu klientu un serveru tīkla programmu veidošanai. Lai paplašinātu Node.js lietojumprogrammu funkcionalitāti, liels skaits moduļu kolekcija, kurā var atrast moduļus ar serveru un klientu ieviešanu HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduļus integrācijai ar dažādiem tīmekļa ietvariem, WebSocket un Ajax apdarinātājus, savienotājus ar DBVS (MySQL, PostgreSQL, SQLite , MongoDB), veidņu dzinēji, CSS dzinēji, kriptogrāfijas algoritmu un autorizācijas sistēmu (OAuth) ieviešana, XML parsētāji.

Lai apstrādātu lielu skaitu paralēlu pieprasījumu, Node.js izmanto asinhronā koda izpildes modeli, kura pamatā ir notikumu nebloķējoša apstrāde un atzvanīšanas apstrādātāju noteikšana. Atbalstītās savienojumu multipleksēšanas metodes ietver epoll, kqueue, /dev/poll un select. Bibliotēka tiek izmantota savienojumu multipleksēšanai libuv, kas ir virsbūve libevs Unix sistēmās un IOCP sistēmā Windows. Bibliotēka tiek izmantota, lai izveidotu pavedienu pūlu libeio, DNS vaicājumu veikšanai nebloķējošā režīmā ir integrēts c-ari. Visi sistēmas izsaukumi, kas izraisa bloķēšanu, tiek izpildīti pavedienu pūlā un pēc tam, tāpat kā signālu apstrādātāji, nodod sava darba rezultātu atpakaļ caur nenosauktu cauruli. JavaScript koda izpilde tiek nodrošināta, izmantojot Google izstrādāto dzinēju V8 (Turklāt Microsoft izstrādā Node.js versiju ar Chakra-Core dzinēju).

Savā pamatā Node.js ir līdzīgs ietvariem Perl AnyEvent, Rubīna notikumu mašīna, Python Twisted и īstenošana notikumi Tcl, bet notikumu cilpa Node.js ir paslēpta no izstrādātāja un atgādina notikumu apstrādi tīmekļa lietojumprogrammā, kas darbojas pārlūkprogrammā. Rakstot lietojumprogrammas node.js, ir jāņem vērā notikumu virzītās programmēšanas specifika, piemēram, nevis jādara “var result = db.query(“select..”);” ar darba pabeigšanas gaidīšanu un sekojošu rezultātu apstrādi Node.js izmanto asinhronās izpildes principu, t.i. kods tiek pārveidots par “db.query(“select..”, funkcija (rezultāts) {rezultāta apstrāde});”, kurā vadība nekavējoties tiks nodota tālākam kodam, un vaicājuma rezultāts tiks apstrādāts līdz ar datu saņemšanu. .

Avots: opennet.ru

Pievieno komentāru