lëshimi , platforma për ekzekutimin e aplikacioneve me rrjet në JavaScript. Në të njëjtën kohë është përfunduar stabilizimi i degës së kaluar Node.js 12.x, e cila është kaluar në kategorinë e publikimeve me mbështetje të zgjatur, për të cilat përditësimet lëshohen për 4 vjet. Mbështetje për degën e kaluar LTS Node.js 10.0 do të vazhdojë deri në prill 2021, ndërsa për degën e LTS-ës së mëparshme 8.0 deri në janar 2020.
Ndryshimet kryesore :
- Motor V8 është përditësuar në versionin , i cili përfshin metoda të reja për optimizimin e performances, përmirësim të destrukturizimit të objekteve, zvogëlim të konsumit të memories dhe reduktim të kohës së përgatitjes për ekzekutimin e WebAssembly;
- Për defaut, është aktivizuar mbështetje e plotë për internacionalizimin dhe Unicode bazuar në bibliotekat (Komponentet Ndërkombëtare për Unicode), duke lejuar zhvilluesit të shkruajnë kod që përpunimin e gjuhëve dhe lokaliteteve të ndryshme. Moduli full-icu tani instalohet si parazgjedhje;
- API , përdorimi i cikleve të shumëfishta për përpunimin e ngjarjeve (event loop). Realizimi është i bazuar në modulin worker_threads, i cili lejon ekzekutimin e kodit JavaScript në disa procese paralele. Mbështetje e qëndrueshme e API Workers Threads është gjithashtu e përfshirë në degën LTS të Node.js 12.x;
- Këto janë rritur kërkesat për platformat. Tani për ndërtimin është e nevojshme në minimale macOS 10.11 (nevojitet Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- Mbështetje më e përmirësuar për Python 3. Nëse në sistem janë të pranishëm si Python 2 ashtu edhe Python 3, vazhdon të përdoret Python 2, por tani është e mundur ndërtimi me praninë vetëm të Python 3;
- Zgjidhja e vjetĂ«r e parser-it HTTP («âhttp-parser=legacy») Ă«shtĂ« hequr. JanĂ« hequr ose klasifikuar si tĂ« pasiperfituar thirrjet dhe pronat FSWatcher.prototype.start(), ChildProcess._channel, metoda open() nĂ« objektet ReadStream dhe WriteStream, request.connection, response.connection, module.createRequireFromPath();
- Pas kësaj aktualizimi 13.0.1, në të cilin janë shënuar disa gabime. Ndër to, është zgjidhur problemi me shfaqjen e paralajmërimeve në npm 6.12.0 për përdorimin e një versioni të papërshtatur.
Duam të kujtojmë se platforma Node.js mund të përdoret si për mbështetje të serverëve të aplikacioneve Web, ashtu edhe për krijimin e programeve të zakonshme të klientëve dhe serverëve të rrjeteve. Për të rritur funksionalitetin e aplikacioneve për Node.js, është përgatitur një koleksion i madh , ku mund të gjeni module me implementimin e serverëve dhe klientëve HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrimin me framework-e të ndryshme web, trajtesa WebSocket dhe Ajax, lidhës për DBMS (MySQL, PostgreSQL, SQLite, MongoDB), gjenerues të shablloneve, motorë CSS, implementime të algoritmave kripto dhe sistemeve të autorizimit (OAuth), parserë XML.
Për të siguruar përpunimin e një numri të madh kërkesash paralele, Node.js përdor modelin asinkron të ekzekutimit të kodit, të bazuar në përpunimin e ngjarjeve në mënyrë jo bllokuese dhe përcaktimin e trajtesave callback. Si metoda të multiplikimit të lidhjeve, mbështeten metoda si epoll, kqueue, /dev/poll dhe select. Për multiplikimin e lidhjeve përdoret biblioteka , e cila është një shtresë mbi në sistemet Unix dhe mbi IOCP në Windows. Për krijimin e një grupi thread-ash (thread pool) përdoret biblioteka , për kryerjen e kërkesave DNS në një mod të pa bllokuar të integruar . Të gjitha thirrjet sistemore që shkaktojnë bllokim ekzekutohen brenda një pooli fshirës dhe pastaj, siç është edhe menaxhimi i sinjaleve, kthejnë rezultatin e punës së tyre përmes një kanali të pa emëruar (pipe). Ekzekutimi i kodit JavaScript sigurohet përmes angazhimit të motorit të zhvilluar nga Google (përveç kësaj, Microsoft zhvillon një variant Node.js me motorin Chakra-Core).
Në thelb, Node.js është e ngjashme me strukturat , , dhe Evenimentet në Tcl, por cikli i përpunimit të ngjarjeve (event loop) në Node.js është i fshehur nga zhvilluesi dhe i ngjan përpunimit të ngjarjeve në aplikacionet web që funksionojnë në shfletues. Kur shkruani aplikacione për node.js, duhet të keni parasysh specifikat e programimit orientuar ndaj ngjarjeve, për shembull, në vend që të realizoni 'var result = db.query('select..');' me pritje për përfundimin e punës dhe përpunimin e rezultateve të mëvonshme, në Node.js përdoret parimi i ekzekutimit asinkron, dmth kodi transformohet në 'db.query('select..', function (result) { përpunimi i rezultatit });' ku kontrolli do të kalojë menjëherë në kodin tjetër, dhe rezultati i kërkesës do të përpunohen sipas ardhjes së të dhënave.
Burimi: opennet.ru
