Node.js

Nga Wikipedia, enciklopedia e lirë
Node.js
AutorRyan Dahl
ZhvilluesFondacioni OpenJS
Versioni i parëmaj 27, 2009; 14 vite më parë (2009-05-27)[1]
Versioni i fundit21.6.1[2] Edit this on Wikidata / janar 22, 2024; Error: first parameter cannot be parsed as a date or time. (janar 22, 2024)
Gjuhet e programimitC, C++, JavaScript
Sistemi operativz/OS, Linux, macOS, Microsoft Windows, SmartOS, FreeBSD, OpenBSD, IBM AIX[3]
Përdoret përAmbient ekzekutimi
LicencaMIT License[4][5]

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",[6]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).[7]

Projekti i zhvillimit të shpërndarë Node.js më parë drejtohej nga Fondacioni Node.js,[8] 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.[9]

Përdoruesit e korporatave të softuerit Node.js përfshijnë GoDaddy, Groupon,[10] IBM,[11] LinkedIn,[12][13] Microsoft,[14][15] Netflix, PayPal,[16][17] SAP,[18] Walmart,[19] Yahoo!,[20] dhe Amazon Web Services.[21]

Historia[Redakto | Redakto nëpërmjet kodit]

Ryan Dahl, krijues i Node.js, në 2010

Node.js u shkrua fillimisht nga Ryan Dahl në 2009,[22] rreth trembëdhjetë vjet pas prezantimit të mjedisit të parë JavaScript nga serveri, LiveWire Pro Web i Netscape.[23] 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.[24]

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.[25]

Dahl e demonstroi projektin në inaugurimin Evropian JSConf më 8 nëntor 2009.[26][27] 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.[28] 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.[29] 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.[30] Në janar 2014, Schlueter njoftoi se Timothy J. Fontaine do të drejtonte projektin.[31]

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ë.[32] Ndryshe nga Node.js,[33] autorët planifikuan të mbajnë io.js të përditësuar me versionet më të fundit të motorit Google V8 JavaScript.[34]

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.[35]

Në shtator 2015, Node.js v0.12 dhe io.js v3.3 u bashkuan përsëri në Node v4.0.[36]Ky bashkim solli veçoritë e V8 ES6 në Node.js dhe një cikël lëshimi afatgjatë të mbështetjes.[37] 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.[38]

Vështrim i përgjithshëm[Redakto | Redakto nëpërmjet kodit]

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.[39] Modulet ofrohen për sistemin e skedarëve I/O, rrjetëzimin (DNS, HTTP, TCP, TLS/SSL ose UDP), të dhënat binare (buffers), funksionet e kriptografisë, rrjedhat e të dhënave dhe funksione të tjera thelbësore.[40][39] Modulet e Node.js përdorin një API të krijuar për të reduktuar kompleksitetin e shkrimit të aplikacioneve të serverit.[40]

JavaScript është e vetmja gjuhë që Node.js mbështet në mënyrë të pavarur, por shumë gjuhë të përpilimit në JS janë të disponueshme.[41] Si rezultat, aplikacionet Node.js mund të shkruhen në CoffeeScript,[42]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,[43][44] dhe përdorni kthimet e thirrjeve për të sinjalizuar përfundimin ose dështimin).[45]

Node.js mbështetet zyrtarisht në Linux, macOS dhe Microsoft Windows 8.1 dhe Server 2012 (dhe më vonë), me mbështetje të nivelit 2 për SmartOS dhe IBM AIX dhe mbështetje eksperimentale për FreeBSD. OpenBSD gjithashtu funksionon, dhe versionet LTS të disponueshme për IBM i (AS/400).[46] 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[47] dhe serverët Unix.

Arkitektura e platformës[Redakto | Redakto nëpërmjet kodit]

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.[40] Node.js lidh lehtësinë e një gjuhe skriptimi (JavaScript) me fuqinë e programimit të rrjetit Unix.[40]

Node.js u ndërtua në krye të motorit V8 JavaScript të Google pasi ishte me burim të hapur nën licencën BSD. Është i aftë me bazat e internetit si HTTP, DNS dhe TCP. JavaScript ishte gjithashtu një gjuhë e njohur, duke e bërë Node.js të aksesueshme për komunitetin e zhvillimit të uebit.

Mbështetja e industrisë[Redakto | Redakto nëpërmjet kodit]

Ka mijëra biblioteka me burim të hapur për Node.js, shumica e tyre të pritura në faqen e internetit npm. Ka shumë konferenca dhe ngjarje zhvilluesish që mbështesin komunitetin Node.js, duke përfshirë NodeConf, Node Interactive dhe Node Summit, si dhe një numër ngjarjesh rajonale.

Komuniteti me burim të hapur ka zhvilluar korniza ueb për të përshpejtuar zhvillimin e aplikacioneve. Korniza të tilla përfshijnë Connect, Express.js, Socket.IO, Feathers.js, Koa.js, Hapi.js, Sails.js, Meteor, Derby dhe shumë të tjerë. Janë krijuar gjithashtu paketa të ndryshme për ndërlidhje me gjuhë të tjera ose mjedise të kohës së funksionimit si Microsoft .NET.

IDE-të moderne të desktopit ofrojnë veçori redaktimi dhe korrigjimi posaçërisht për aplikacionet Node.js. IDE të tilla përfshijnë Atom, Brackets, JetBrains WebStorm, Microsoft Visual Studio (me Node.js Tools për Visual Studio, ose TypeScript me përkufizime Node,[48]) NetBeans,[49] 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.

  1. ^ "node-v0.x-archive on GitHub". GitHub. Marrë më 2 gusht 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  2. ^ "Release 21.6.1". 22 janar 2024. Marrë më 1 shkurt 2024. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  3. ^ "nodejs/node". GitHub. 13 prill 2022. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  4. ^ "node/LICENSE at master". GitHub. Node.js Foundation. 17 shtator 2018. Marrë më 17 shtator 2018. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  5. ^ "The MIT License". Open Source Initiative. 17 shtator 2018. Marrë më 17 shtator 2018. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  6. ^ gcuomo (24 tetor 2013). "JavaScript Everywhere and the Three Amigos (Into the wild BLUE yonder!)". www.ibm.com. Marrë më 2013-10-24. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  7. ^ Laurent Orsini (2013-11-07). "What You Need To Know About Node.js". readwrite.com. Marrë më 2022-02-06. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  8. ^ "Node.js Foundation - Node.js". nodejs.org. Marrë më 4 korrik 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  9. ^ "Linux Foundation Collaborative Projects". linuxfoundation.org. 2015-07-04. Marrë më 4 korrik 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  10. ^ "I-Tier: Dismantling the Monoliths" (në anglisht). Groupon. Arkivuar nga origjinali më 10 shtator 2015. Marrë më 30 prill 2014.
  11. ^ "IBM Bluemix". IBM (në anglisht). Marrë më 4 korrik 2015.
  12. ^ "You'll never believe how LinkedIn built its new iPad app" (në anglisht). VentureBeat. 2 maj 2012. Marrë më 10 maj 2012.
  13. ^ "Blazing fast node.js: 10 performance tips from LinkedIn Mobile". Marrë më 7 prill 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  14. ^ Baxter-Reynolds, Matthew (9 nëntor 2011). "Here's why you should be happy that Microsoft is embracing Node.js". The Guardian (në anglisht). London. Marrë më 10 maj 2012.
  15. ^ "WebMatrix - Front End Web Developers take note (ASP.NET, PHP, node.js and more)" (në anglisht). Marrë më 2 gusht 2014.
  16. ^ "Clash of the Titans: Releasing the Kraken, NodeJS @paypal". fluentconf.com. 28 maj 2013. Arkivuar nga origjinali më 8 tetor 2017. Marrë më 11 shtator 2013. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: BOT: Gjendja e adresës origjinale është e panjohur (lidhja)
  17. ^ "All such companies and their products in which Node.js is used". GitHub. Marrë më 2 gusht 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  18. ^ "SAP AppBuilder" (në anglisht). SAP. 10 mars 2014. Arkivuar nga origjinali më 12 shkurt 2014. Marrë më 10 tetor 2018.
  19. ^ "Why Walmart is using Node.js" (në anglisht). VentureBeat. 24 janar 2012. Marrë më 10 maj 2012.
  20. ^ "Why You Really Need (A) node.js development services" (në anglisht). codebrahma. 10 janar 2018. Marrë më 10 janar 2018.
  21. ^ "Deploy a Node.js Web App - Launch and run a highly available Node.js web application on AWS" (në anglisht). amazon.com. Marrë më 3 tetor 2020.
  22. ^ "About Node.js, and why you should add Node.js to your skill set?". Training.com. Training.com. 2016-09-11. Arkivuar nga origjinali më 1 prill 2017. Marrë më 23 tetor 2016. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  23. ^ Staff, CNET News (1996-10-15). "Netscape opens intranet attack". CNET (në anglisht). Marrë më 2017-04-20.
  24. ^ Ryan Dahl (2010-11-09). "Joyent and Node". Google Groups. Marrë më 2015-02-05. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  25. ^ Garbar, Dzmitry. "PHP 7 vs Node.js? They Can Be Partners, Not Competitors For a Developer!". belitsoft.com. Marrë më 21 dhjetor 2016. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  26. ^ Ubl, Malte (2009-09-09). "JSConf.eu 2009, Berlin, Germany". www.jsconf.eu. Marrë më 2009-09-09. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  27. ^ "Ryan Dahl: Original Node.js presentation". Arkivuar nga origjinali më 14 mars 2023. Marrë më 24 qershor 2023 – nëpërmjet www.youtube.com. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: BOT: Gjendja e adresës origjinale është e panjohur (lidhja)
  28. ^ "Earliest releases of npm". GitHub. Marrë më 27 korrik 2016. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  29. ^ Ryandahl (2011-06-23). "Porting Node to Windows With Microsoft's Help". nodejs.org. Marrë më 17 prill 2016. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  30. ^ Dahl, Ryan. "New gatekeeper". Marrë më 26 tetor 2013. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  31. ^ Schlueter, Isaac (15 janar 2014). "The Next Phase of Node.js". Marrë më 21 janar 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  32. ^ Krill, Paul (4 dhjetor 2014). "Why io.js Decided to Fork Node.js". JavaWorld. Arkivuar nga origjinali më 30 qershor 2017. Marrë më 15 dhj 2014. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  33. ^ Ben Noordhuis (12 nëntor 2014). "Issue 3692: function suddenly becomes undefined". V8 JavaScript Engine Issues. Marrë më 2 shkurt 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  34. ^ Mikeal, Rogers (28 janar 2015). "State of io.js". Marrë më 2 shkurt 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  35. ^ "Node.js Foundation Advances Community Collaboration, Announces New Members and Ratified Technical Governance". Arkivuar nga origjinali më 24 qershor 2015. Marrë më 4 korrik 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  36. ^ "Node.js Foundation Combines Node.js and io.js Into Single Codebase in New Release". nodejs.org. 2015-09-14. Marrë më 28 janar 2016. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  37. ^ "io.js and Node.js merge". medium.com. 19 maj 2015. Marrë më 27 qershor 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  38. ^ "Previous Releases". Node.js. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  39. ^ a b Gabim referencash: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura b4
  40. ^ a b c d Gabim referencash: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura b1
  41. ^ "List of languages that compile to JS". Github. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  42. ^ CoffeeScript on Node.js. O'Reilly Media, Inc. 15 prill 2013. ISBN 9781449316846. Marrë më 17 maj 2015. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  43. ^ "Node.js's cluster module". nodejs.org. Marrë më 19 tetor 2017. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  44. ^ "Node.js's child_process module". nodejs.org. Marrë më 19 tetor 2017. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  45. ^ Gabim referencash: Etiketë <ref> e pavlefshme; asnjë tekst nuk u dha për refs e quajtura b2
  46. ^ Foundation, Node js. "Installing Node.js via package manager". Node.js (në anglisht). Marrë më 2019-05-19.
  47. ^ "bomBora - Node.js for NonStop". infrasoft.com.au. Infrasoft. Arkivuar nga origjinali më 11 mars 2018. Marrë më 14 gusht 2015. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)
  48. ^ "The repository for high quality TypeScript type definitions". definitelytyped.org (në anglisht). Arkivuar nga origjinali më 3 shkurt 2016.
  49. ^ Krill, Paul (2015-11-10). "Node.js takes center stage in NetBeans 8.1". infoworld.com. InfoWorld. Marrë më 2015-11-10. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)