Node.js

Node.js është një mjedis server ndër-platformë, me burim të hapur që mund të funksionojë në Windows, Linux, Unix, macOS dhe më shumë. Node.js është një mjedis ekzekutimi i JavaScript-it në fund, funksionon në motorin JavaScript V8 dhe ekzekuton kodin JavaScript jashtë një shfletuesi uebi.

Node.js i lejon zhvilluesit të përdorin JavaScript për të shkruar mjetet e linjës së komandës dhe për skriptimin nga ana e serverit. Aftësia për të ekzekutuar kodin JavaScript në server përdoret shpesh për të gjeneruar përmbajtje dinamike të faqes së internetit përpara se faqja të dërgohet në shfletuesin e internetit të përdoruesit. Rrjedhimisht, Node.js përfaqëson një paradigmë "JavaScript kudo",unifikimi i zhvillimit të aplikacioneve në internet rreth një gjuhe të vetme programimi, në krahasim me përdorimin e gjuhëve të ndryshme për programimin nga serveri kundrejt klientit.

Node.js ka një arkitekturë të drejtuar nga ngjarje të aftë për hyrje/dalje asinkrone. Këto zgjedhje të projektimit synojnë të optimizojnë xhiron dhe shkallëzueshmërinë në aplikacionet ueb me shumë operacione hyrëse/dalëse, si dhe për aplikacionet në ueb në kohë reale (p.sh., programet e komunikimit në kohë reale dhe lojërat e shfletuesit).

Projekti i zhvillimit të shpërndarë Node.js më parë drejtohej nga Fondacioni Node.js, dhe tani është bashkuar me Fondacionin JS për të formuar Fondacionin OpenJS. OpenJS Foundation lehtësohet nga programi i Projekteve Bashkëpunuese të Fondacionit Linux.

Përdoruesit e korporatave të softuerit Node.js përfshijnë GoDaddy, Groupon, IBM, LinkedIn, Microsoft, Netflix, PayPal, SAP, Walmart, Yahoo!, dhe Amazon Web Services.

## Historia 
alt=|parapamje|Ryan Dahl, krijues i Node.js, në 2010
Node.js u shkrua fillimisht nga Ryan Dahl në 2009, rreth trembëdhjetë vjet pas prezantimit të mjedisit të parë JavaScript nga serveri, LiveWire Pro Web i Netscape. Lëshimi fillestar mbështeti vetëm Linux dhe Mac OS X. Zhvillimi dhe mirëmbajtja e tij u drejtua nga Dahl dhe më vonë u sponsorizua nga Joyent.

Dahl kritikoi mundësitë e kufizuara të ueb serverit më të njohur në 2009, Apache HTTP Server, për të trajtuar shumë lidhje të njëkohshme (deri në 10,000 e më shumë) dhe mënyrën më të zakonshme të krijimit të kodit (programimi vijues), kur kodi ose bllokoi i gjithë procesi ose rafte të shumëfishta ekzekutimi të nënkuptuara në rastin e lidhjeve të njëkohshme.

Dahl e demonstroi projektin në inaugurimin Evropian JSConf më 8 nëntor 2009. Node.js kombinoi motorin V8 JavaScript të Google, një qark ngjarjesh dhe një API I/O të nivelit të ulët.

Në janar 2010, u prezantua një menaxher i paketave për mjedisin Node.js i quajtur npm. Menaxheri i paketave e bën më të lehtë për programuesit publikimin dhe ndarjen e kodit burimor të paketave Node.js dhe është krijuar për të thjeshtuar instalimin, përditësimin dhe çinstalimin e paketave.

Në qershor 2011, Microsoft dhe Joyent implementuan një version të Windows të Node.js. Ndërtimi i parë i Node.js që mbështet Windows u lëshua në korrik 2011.

Në janar 2012, Dahl u largua, duke promovuar bashkëpunëtorin dhe krijuesin e npm Isaac Schlueter për të menaxhuar projektin. Në janar 2014, Schlueter njoftoi se Timothy J. Fontaine do të drejtonte projektin.

Në dhjetor 2014, Fedor Indutny filloi io.js, një fork i Node.js. Për shkak të konfliktit të brendshëm mbi qeverisjen e Joyent, io.js u krijua si një alternativë e qeverisjes së hapur me një komitet teknik të veçantë. Ndryshe nga Node.js, autorët planifikuan të mbajnë io.js të përditësuar me versionet më të fundit të motorit Google V8 JavaScript.

Në shkurt 2015, u njoftua synimi për të formuar një Fondacion neutral Node.js. Deri në qershor 2015, komunitetet Node.js dhe io.js votuan për të punuar së bashku nën Fondacionin Node.js.

Në shtator 2015, Node.js v0.12 dhe io.js v3.3 u bashkuan përsëri në Node v4.0.Ky bashkim solli veçoritë e V8 ES6 në Node.js dhe një cikël lëshimi afatgjatë të mbështetjes. Që nga viti 2016, faqja e internetit io.js rekomandon që zhvilluesit të kthehen në Node.js dhe që të mos planifikohen lëshime të mëtejshme të io.js për shkak të bashkimit.

Në vitin 2019, Fondacioni JS dhe Fondacioni Node.js u bashkuan për të formuar Fondacionin OpenJS.

Më 15 mars 2023, Node.js 19.8.1 u lëshua.

## Vështrim i përgjithshëm 
Node.js lejon krijimin e serverëve të uebit dhe mjeteve të rrjetit duke përdorur JavaScript dhe një koleksion "modulesh" që trajtojnë funksione të ndryshme thelbësore. Si rezultat, aplikacionet Node.js mund të shkruhen në CoffeeScript,Dart, TypeScript, ClojureScript dhe të tjerë.

Node.js përdoret kryesisht për të ndërtuar programe rrjeti siç janë serverët në ueb. Dallimi më domethënës midis Node.js dhe PHP është se shumica e funksioneve në PHP bllokojnë deri në përfundim (komandat ekzekutohen vetëm pasi të mbarojnë komandat e mëparshme), ndërsa funksionet Node.js janë jobllokuese (komandat ekzekutohen njëkohësisht ose edhe paralelisht, dhe përdorni kthimet e thirrjeve për të sinjalizuar përfundimin ose dështimin). Kodi burimor i ofruar mund të ndërtohet gjithashtu në sisteme operative të ngjashme me ato të mbështetura zyrtarisht ose të modifikohet nga palët e treta për të mbështetur të tjerët si NonStop OS dhe serverët Unix.

### Arkitektura e platformës 
Node.js sjell programim të drejtuar nga ngjarje në serverët e uebit, duke mundësuar zhvillimin e serverëve të shpejtë të uebit në JavaScript. Zhvilluesit mund të krijojnë serverë të shkallëzuar pa përdorur threading, duke përdorur një model të thjeshtuar të programimit të drejtuar nga ngjarjet që përdor thirrjet për të sinjalizuar përfundimin e një detyre.) NetBeans, Nodeclipse Enide Studio (Eclipse-based), and Visual Studio Code.
Disa IDE të bazuara në ueb mbështesin gjithashtu Node.js, si Codeanywhere, Codenvy, Cloud9 IDE, Koding dhe redaktuesin e rrjedhës vizuale në Node-RED.

Node.js mbështetet në një sërë platformash të pritjes së cloud si Jelastic, Google Cloud Platform, AWS Elastic Beanstalk, Joyent dhe të tjera.