Wat is Node.JS en waarvoor wordt het gebruikt?

0
264

Als u enige vorm van webontwikkeling doet, moet u 8217; je zult waarschijnlijk op een gegeven moment JavaScript moeten leren en schrijven. Node is bedoeld om de ontwikkeling van webapplicaties te vereenvoudigen door de server- en client-side talen te verenigen.

Wat is Node?

Node.JS , gewoonlijk eenvoudigweg Node genoemd, is een JavaScript-runtime waarmee u JS-code buiten een webbrowser kunt uitvoeren. Node is gebouwd op de V8 JavaScript-engine van Google, dezelfde die wordt gebruikt voor verwerking in Chrome.

Het wordt vaak gebruikt voor het bouwen van applicaties, het werken met moderne webapp-frameworks en server-side scripting met JS. In de praktijk kun je met Node .js-bestanden uitvoeren met de node-opdracht, vergelijkbaar met hoe je .py-bestanden zou uitvoeren met python:

node main.js

JavaScript-code werkt een beetje anders wanneer deze in Node wordt uitgevoerd. Allereerst is er geen DOM (de geladen HTML van een webpagina), dus je hebt geen toegang tot HTML-elementen of een bibliotheek zoals jQuery met veel effect (hoewel er alternatieven zijn). Maar u hebt toegang tot systeembronnen en kunt bestanden lezen en schrijven, netwerkverbindingen maken en zelfs applicaties bedienen.

Node wordt ook gebruikt om desktop-apps te bouwen, door het gebruik van een framework genaamd Electron. Electron drijft Slack, Discord, Visual Studio Code en Skype aan. In wezen draait het een afgeslankte versie van Chrome die is ontworpen voor de desktop, en de app zelf is eigenlijk gewoon een web-app. Als gevolg hiervan hebben Electron-apps echter veel RAM-honger en zullen ze een beetje slechter werken dan hun native tegenhangers, maar die ruil wordt vaak gemaakt voor uniformiteit over alle besturingssystemen en het web.

Het node-ecosysteem (npm-modules)

Node zelf is cool, maar het zou niet in de buurt komen van waar het nu is als het niet voor npm, de Node-pakketbeheerder. Met npm kan Node worden uitgebreid met frameworks en plug-ins, en kan code eenvoudig worden geïnstalleerd en in een nieuw project worden opgenomen.

Advertentie

Stel bijvoorbeeld dat u aan een script werkt en een POST-verzoek moet indienen bij een externe bron. Je zou de ingebouwde ophaalmethode van JS kunnen gebruiken, of je zou axios kunnen gebruiken, die beloften gebruikt en gemakkelijker te gebruiken is. Als u axios aan uw project wilt toevoegen, wilt u uw script naar zijn eigen map verplaatsen en uitvoeren:

npm init npm install axios

Dit creëert een bestand met de naam package.json, dat de projectinstellingen en geïnstalleerde pakketten bijhoudt. De npm install-opdracht maakt een map met de naam node_modules, waarin gedownloade modules worden opgeslagen. Wees gewaarschuwd, deze map kan erg groot zijn bij grote projecten met veel modules.

Om axios in je script te gebruiken, moet je deze regel helemaal bovenaan zetten:

const axios = vereisen('axios');

Of, in de ES6-syntaxis:

importeer axios van 'axios';

Hiermee wordt de module geïmporteerd uit node_modules en krijgt uw script er toegang toe. Van daaruit kun je het gebruiken alsof het een onderdeel is van je project en gewoon een andere functie die je hebt gemaakt.

Axios is slechts een eenvoudig voorbeeld van een handig npm-hulpprogramma. Je hebt waarschijnlijk wel eens gehoord van andere modules zoals React, Angular of Vue; dit zijn allemaal volledige webapplicatie-frameworks die worden gebruikt voor het bouwen van interactieve apps die in de browser worden uitgevoerd. Apps die met deze frameworks zijn gebouwd, worden gewoonlijk 'Node-apps' genoemd. Hoewel ze niet echt met Node draaien, aangezien het uiteindelijke product statische HTML is die je met elke oude webserver kunt gebruiken, wordt Node gebruikt voor ontwikkeling en worden pakketten geïnstalleerd vanuit het Node-ecosysteem met npm.

Advertentie

Het is tenslotte allemaal JavaScript. Vaak zal de ontwikkelcode gebruik maken van “next-gen” JavaScript zoals ES6, en samen met Webpack en Babel worden gecompileerd tot één grote “bundle.js” bestand dat aan de client kan worden aangeboden om uit te voeren.

Hoe werkt Node met nginx en Apache?

Node zelf communiceert niet rechtstreeks met nginx of Apache. Het enige wat Node doet is het uitvoeren van .js-bestanden. Maar Node-apps die zijn gebouwd met React of andere frameworks werken een beetje anders dan normale HTML-pagina's.

Met React biedt u in wezen een lege HTML-pagina die een bundel.js-bestand laadt. Dit bundelbestand werkt net als elk ander javaScript-bestand en u kunt nginx of Apache gebruiken als webserver om het te hosten. De bundel laadt React, die zichzelf vervolgens op de webpagina zal weergeven en uw inhoud zal weergeven. Alle inhoud zit in het bundelbestand.

Een ding om op te merken is een populaire bibliotheek genaamd Express. Express biedt webinhoud en kan functioneren als een HTTP-server. Het wordt vaak gebruikt als de router voor het maken van een op nodes gebaseerde REST API; Express kan op een poort luisteren, het verzoek doorsturen naar een andere functie (meestal toegang tot een andere bron zoals een database) en vervolgens een HTTP-antwoord terugsturen.

In dit geval zet je Express achter de nginx-server die je gebruikt voor je statische inhoud, en routeer je alle /api-routes naar Express. Hierdoor heeft uw web-app toegang tot externe bronnen en maakt het volledig gebruik van de server-side scriptingkracht van Node en de mogelijkheid om te communiceren met databases. Je kunt nginx gebruiken als een omgekeerde proxy voor de /api-route en het gebruiken als een webserver voor de andere statische inhoud.

Express is echter geen webserver. Het mag in dit voorbeeld niet de plaats van nginx innemen. Het kan als één geheel functioneren en het is erg handig om een ​​eenvoudige Express-server op te zetten voor ontwikkeling, of een eenvoudige pagina die niet veel verkeer ontvangt. Maar het staat ver af van de prestaties van nginx en Apache, die native apps zijn. Als je een echte webtoepassing bouwt, dien deze dan met nginx en gebruik Express alleen om API's te bedienen.

Moet ik Node gebruiken voor My Website?

Ben je een web-app aan het bouwen? Als dat zo is, moet u Node serieus overwegen. Alternatieven zijn Ruby on Rails, Laravel met PHP en Django met Python. Maar Node heeft verreweg de grootste community en heeft veel keuze als het gaat om frameworks. Als je Ruby on Rails niet leuk vindt, zit je eraan vast zonder een andere taal te leren, maar de verschuiving van een framework als React naar Vue is veel eenvoudiger, omdat ze allebei JavaScript zijn. Advertentie

Als je geen web-app bouwt, heb je waarschijnlijk Node niet nodig. Het is niet bedoeld voor statische pagina's. Dat kan zeker, maar je zult niet veel voordeel zien. Als je van plan bent een volledig webframework zoals React te gebruiken voor een statische (of zelfs grotendeels statische) site, wil je misschien nog eens nadenken, aangezien React veel overhead op je site introduceert. De laadtijden van de reactie zijn over het algemeen veel langzamer zonder weergave aan de serverzijde, wat prima is voor webapplicaties die zijn ontworpen voor lange sessieduur, maar niet voor een blog of iets dat op zoek is naar goede SEO. Vanilla JS kan zelf behoorlijk wat DOM-manipulatie doen, vooral met behulp van jQuery.