Vad är Node.JS och vad används det för?

0
432

Om du gör någon form av webbutveckling gör du &# 8217; jag kommer antagligen att behöva lära sig och skriva JavaScript någon gång. Node är tänkt att förenkla webbapplikationsutveckling genom att ena server- och klientsidans språk.

Vad är nod?

Node.JS , som vanligtvis kallas Node, är en JavaScript -körning som låter dig köra JS -kod utanför en webbläsare. Noden är byggd på Googles V8 JavaScript -motor, samma som används för bearbetning i Chrome.

Det är vanligt förekommande för att bygga applikationer, arbeta med moderna ramar för webbappar och scripting på serversidan med JS. I praktiken tillåter Node dig att köra .js -filer med nodkommandot som liknar hur du skulle köra .py -filer med python:

node main.js

JavaScript -koden fungerar lite annorlunda när den körs i Node. Först och främst finns det ingen DOM (den laddade HTML -koden på en webbsida), så du kan inte komma åt HTML -element eller använda ett bibliotek som jQuery med stor effekt (även om det finns alternativ). Men du har tillgång till systemresurser och kan läsa och skriva filer, skapa nätverksanslutningar och till och med betjäna applikationer.

Node används också för att bygga stationära appar genom att använda ett ramverk som kallas Electron. Elektron driver Slack, Discord, Visual Studio Code och Skype. I huvudsak körs den en smalare version av Chrome utformad för skrivbordet, och själva appen är faktiskt bara en webbapp. Som en följd av detta är elektronappar väldigt hungriga i RAM och kommer att fungera lite sämre än sina inhemska motsvarigheter, men den handeln görs ofta för enhetlighet i alla operativsystem och på webben.

Nodens ekosystem (npm-moduler)

Noden i sig är cool, men den skulle inte vara någonstans nära den den är idag om den inte vore för npm, Node -pakethanteraren. npm gör att Node kan utökas med ramverk och plugins, och tillåter kod att enkelt installeras och införlivas i ett nytt projekt.

Annonsering

Säg till exempel att du arbetar med ett skript och måste göra en POST -begäran till en extern resurs. Du kan använda JS ’ s inbyggda hämtningsmetod, eller så kan du använda axios, som använder löften och är lättare att använda. Om du ville lägga till axios i ditt projekt skulle du vilja flytta ditt skript till sin egen mapp och köra:

npm init npm install axios

Detta skapar en fil som heter package.json, som håller reda på projektinställningar och installerade paket. Kommandot npm install skapar en mapp som heter node_modules, som lagrar nedladdade moduler. Varnas, den här mappen kan vara mycket stor på stora projekt med många moduler.

För att använda axios i ditt manus skulle du sätta den här raden högst upp:

const axios = kräver ('axios');

Eller, i ES6 -syntax:

importera axios från 'axios';

Detta importerar modulen från node_modules och låter ditt skript komma åt den. Därifrån kan du använda det som om det är en del av ditt projekt och bara en annan funktion du gjort.

Axios är bara ett grundläggande exempel på ett användbart npm -verktyg. Du har säkert hört talas om andra moduler som React, Angular eller Vue; alla dessa är fullständiga webbapplikationsramar som används för att bygga interaktiva appar som körs i webbläsaren. Appar byggda med dessa ramar kallas vanligtvis för “ Nodappar. ” Även om de faktiskt inte körs med Node, eftersom slutprodukten kommer att vara statisk HTML som du kan betjäna med en gammal webbserver, används Node för utveckling och paket installeras från Node -ekosystemet med npm.

Annons

Det är trots allt JavaScript. Ofta använder utvecklingskoden “ nästa generations ” JavaScript som ES6, och sammanställs med Webpack och Babel till en stor “ bundle.js ” fil som kan skickas till klienten för att köras.

Hur fungerar noden med nginx och Apache?

Noden själv gränsar inte direkt mot nginx eller Apache, allt som Node gör är att köra .js -filer. Men Node -appar byggda med React eller andra ramverk fungerar lite annorlunda än vanliga HTML -sidor.

Med React serverar du i huvudsak en tom HTML -sida som laddar en bundle.js -fil. Den här paketfilen fungerar som alla andra javaScript -filer, och du kan använda nginx eller Apache som en webbserver för att vara värd för den. Paketet laddar React, som sedan återger sig på webbsidan och visar ditt innehåll. Allt innehåll finns i paketfilen.

En sak att notera är ett populärt bibliotek som heter Express. Express serverar webbinnehåll och kan fungera som en HTTP -server. Det är vanligt förekommande som router för att göra ett nodbaserat REST API; Express kan lyssna på en port, vidarebefordra begäran till en annan funktion (vanligtvis komma åt en annan resurs som en databas) och sedan skicka tillbaka ett HTTP -svar.

I det här fallet skulle du lägga Express bakom nginx -servern som du använder för ditt statiska innehåll och dirigera alla /api -rutter till Express. Detta gör att din webbapp får tillgång till externa resurser och fullt ut utnyttja Node -skriptkraften på serversidan och möjligheten att ansluta till databaser. Du kan använda nginx som en omvänd proxy för/api -rutten och använda den som en webbserver för det andra statiska innehållet.

Express är dock inte en webbserver. Det bör inte ta platsen för nginx i det här exemplet. Det kan fungera som en, och det är mycket användbart att skapa en enkel Express -server för utveckling eller en enkel sida som inte tar emot mycket trafik. Men det är långt ifrån prestanda för nginx och Apache, som är inbyggda appar. Om du bygger en riktig webbapplikation, servera den med nginx och bara använda Express för att betjäna API: er.

Ska jag använda Node for My Webbplats?

Skapar du en webbapp? Om så är fallet bör du allvarligt överväga Node. Alternativ skulle vara Ruby on Rails, Laravel med PHP och Django med Python. Men Node har den överlägset största gemenskapen och har många valmöjligheter när det gäller ramar. Om du inte gillar Ruby on Rails, fastnar du i det utan att lära dig ett annat språk, men skiftet från ett ramverk som React to Vue är mycket enklare, eftersom de båda är JavaScript.

Annons

Om du inte bygger en webbapp behöver du förmodligen inte Node. Det är inte avsett för statiska sidor. Det kan du verkligen, men du kommer inte att se någon större fördel. Om du planerar att använda en fullständig webbram som React för en statisk (eller till och med mestadels statisk) webbplats, kanske du vill ompröva, eftersom React introducerar mycket omkostnader för din webbplats. Reakt laddningstider är i allmänhet mycket långsammare utan rendering på serversidan, vilket är bra för webbapplikationer som är utformade för långa sessionstider, men inte för en blogg eller något som letar efter bra SEO. Vanilla JS kan göra ganska mycket DOM -manipulation på egen hand, särskilt med hjälp av jQuery.