izlaidums , platforma tÄ«mekļa lietojumprogrammu izpildei JavaScript valodÄ. Vienlaikus noslÄgta iepriekÅ”ÄjÄs Node.js 12.x versijas stabilizÄcija, kas pÄrcelta uz ilgtermiÅa atbalsta izlaiÅ”anas kategoriju, kurai atjauninÄjumi tiks izlaisti 4 gadus. IepriekÅ”ÄjÄs LTS versijas Node.js 10.0 atbalsts ilgs lÄ«dz 2021. gada aprÄ«lim, bet pirms divÄm LTS versijÄm 8.0 lÄ«dz 2020. gada janvÄrim.
īpaŔības :
- V8 dzinÄjs ir atjauninÄts uz versiju , kurÄ tiek izmantotas jaunas veiktspÄjas optimizÄcijas metodes, uzlabota objektu destrukturÄÅ”ana, samazinÄta atmiÅas patÄriÅÅ” un saÄ«sinÄts WebAssembly izpildes sagatavoÅ”anas laiks;
- NodroÅ”inÄta pilna internacionalizÄcijas un Unicode atbalsta iespÄja, pamatojoties uz bibliotÄkÄm (International Components for Unicode), kas ļauj izstrÄdÄtÄjiem rakstÄ«t kodu, darbu ar dažÄdÄm valodÄm un lokalizÄcijÄm. Modulis full-icu tagad ir uzstÄdÄ«ts pÄc noklusÄjuma;
- StabilizÄts API , ļauj izveidot daudzplÅ«smu notikumu apstrÄdes ciklus (event loop). RealizÄcija balstÄs uz moduli worker_threads, kas ļauj izpildÄ«t JavaScript kodu vairÄkÄs paralÄlÄs plÅ«smÄs. Stabils atbalsts API Workers Threads arÄ« ir atpakaļportÄts uz LTS versiju Node.js 12.x;
- PalielinÄtas platformu prasÄ«bas. Tagad bÅ«vÄjot 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;
- Uzlabota Python 3 atbalsts. Ja sistÄmÄ ir gan Python 2, gan Python 3, joprojÄm tiek izmantots Python 2, taÄu pievienota iespÄja veikt bÅ«vi, ja sistÄmÄ ir tikai Python 3;
- IzvÄrsta vecÄ HTTP parsera realizÄcija (Ā«āhttp-parser=legacyĀ»). NoÅemti vai pÄrvÄrsti par novecojuÅ”iem izsaukumi un Ä«paŔības FSWatcher.prototype.start(), ChildProcess._channel, metode open() ReadStream un WriteStream objektiem, request.connection, response.connection, module.createRequireFromPath();
- PÄc tam atjauninÄjums 13.0.1, kurÄ nekavÄjoties novÄrstas vairÄkas kļūdas. Ieskaitot problÄmu ar brÄ«dinÄjumu npm 6.12.0 par neatzÄ«tu versiju.
AtgÄdinÄm, ka Node.js platforma var tikt izmantota gan servera puses Web lietojumprogrammu apkalpoÅ”anai, gan parasto klientu un servera tÄ«kla programmu izveidei. Lai paplaÅ”inÄtu Node.js lietojumprogrammu funkcionalitÄti, ir sagatavota liela , kurÄ var atrast moduļus ar HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serveru un klientu Ä«stenojumiem, integrÄcijas moduļiem ar dažÄdiem tÄ«mekļa ietvariem, WebSocket un Ajax apstrÄdÄtÄjiem, savienotÄjiem uz datubÄzÄm (MySQL, PostgreSQL, SQLite, MongoDB), Å”ablonÄÅ”anas rÄ«kiem, CSS dzinÄjiem, kriptogrÄfijas algoritmu Ä«stenojumiem un autorizÄcijas sistÄmÄm (OAuth), XML parsÄtÄjiem.
Lai nodroÅ”inÄtu lielÄ skaita paralÄlo pieprasÄ«jumu apstrÄdi, Node.js izmanto asinscÄÅ”anas koda izpildes modeli, kas balstÄs uz notikumu apstrÄdi bez bloÄ·ÄÅ”anas režīmÄ un callback apstrÄdÄtÄju noteikÅ”anu. Savienojumu multiplikÄcija tiek atbalstÄ«ta ar tÄdÄm metodÄm kÄ epoll, kqueue, /dev/poll un select. Savienojumu multiplikÄcijai tiek izmantota bibliotÄka , kas ir augstÄka virs Unix sistÄmÄs un virs IOCP Windows. Datu apstrÄdes pavedienu grupas (thread pool) izveidei tiek izmantota bibliotÄka , lai veiktu DNS pieprasÄ«jumus bez bloÄ·ÄÅ”anas režīmÄ, tiek integrÄts . Visi bloÄ·ÄjoÅ”ie sistÄmas izsaukumi tiek izpildÄ«ti pavedienu grupÄ, un pÄc tam, kÄ arÄ« signÄlu apstrÄdÄtÄji, rezultÄts tiek nodots atpakaļ caur nemainÄ«gu cauruli (pipe). JavaScript koda izpilde tiek nodroÅ”inÄta, izmantojot Google izstrÄdÄto dzinÄju (papildu Microsoft attÄ«sta Node.js variantu ar Chakra-Core dzinÄju).
VispÄrÄ«gÄ izpratnÄ Node.js ir lÄ«dzÄ«gs ietvariem , , un Tcl notikumu, tomÄr Node.js notikumu apstrÄdes cikls (event loop) ir slÄpts no izstrÄdÄtÄja un atgÄdina notikumu apstrÄdi web lietojumprogrammÄ, kas darbojas pÄrlÅ«kprogrammÄ. IzstrÄdÄjot lietojumprogrammas Node.js, ir jÄÅem vÄrÄ notikumu vidÄ balstÄ«tas programmÄÅ”anas specifika, piemÄram, atŔķirÄ«bÄ no "var result = db.query(āselect..ā);" izpildes ar rezultÄtu gaidīŔanu un tÄlÄku apstrÄdi, Node.js izmanto asenkronÄs izpildes principu, t.i., kods tiek pÄrveidots uz "db.query(āselect..ā, function (result) { rezultÄta apstrÄde });" , kur vadÄ«ba nekavÄjoties pÄries pie tÄlÄkÄ koda, bet pieprasÄ«juma rezultÄts tiks apstrÄdÄts, tiklÄ«dz dati bÅ«s iegÅ«ti.
Avots: opennet.lv
