nl.hideout-lastation.com
Paradijs Voor Ontwerpers En Ontwikkelaars


Beginner's Guide to Node.js (Server-side JavaScript)

Node.js - in eenvoudige woorden - is JavaScript aan de serverzijde . Het heeft de laatste tijd veel buzz gekregen. Als je er al van gehoord hebt of als je geïnteresseerd bent om het te leren en er een handje van te krijgen - deze post is voor jou.

Dus wat is precies de behoefte om JavaScript op de server te gebruiken? Om het concept van Node.js duidelijk te maken, zou ik het willen vergelijken met de gewone server-side talen zoals PHP. Node.js gebruikt een gebeurtenisgebaseerde serveruitvoeringsprocedure in plaats van de multithreaded-uitvoering in PHP.

Om het verder uit te leggen, hebben we het over het idee van wat Node.js samen met enkele suggesties van hostingproviders en installatietips is . Tussentijds niveau kennis van JavaScript, jQuery en Ajax zijn vereist, maar we zullen ook voorbeelden voor u geven om het hele ding gemakkelijker te begrijpen en er zelfs aan te werken, dus laten we meer weten over Node.js!

Laten we een geval overwegen:

Overweeg een website waarin u inhoud dynamisch van een andere webserver moet laden die traag is. In PHP kun je dit op twee manieren doen: het coderen in een eenvoudig bestand en het coderen als een ander script, en het vervolgens uitvoeren in een multithreaded aanpak .

In de eerste methode, zelfs als de code eenvoudig is, wordt de uitvoering een tijdje onderbroken op het moment dat toegang wordt verkregen tot de trage webserver. De tweede methode is meer geoptimaliseerd in het geval van prestaties, maar het is moeilijk om te coderen en het heeft overhead voor meerdere threads. Het geval is vergelijkbaar voor de meeste andere web-programmeertalen dan JavaScript aan de serverzijde, dat wil zeggen, Node.js.

Wat is het verschil in Node.js? Om Node.js goed te begrijpen, moet je rekening houden met de op gebeurtenissen gebaseerde programmering van JavaScript in de browser . We gebruiken hier dezelfde technologie. In plaats van een afzonderlijke thread te gebruiken, is er een functie gekoppeld aan de afwerkgebeurtenis van de hierboven genoemde "trage webservertoegang", zodat u de volledige functionaliteit in de geoptimaliseerde tweede optie hierboven krijgt zonder enige multithread-overhead.

Aan de slag met Node.js

Node.js is JavaScript . Waarom kunnen we de op gebeurtenissen gebaseerde functionaliteit van JavaScript in de client niet gebruiken voor een server? Deze gedachte kan hebben geleid tot de ontwikkeling van Node.js.

Dat gezegd hebbende, het belangrijkste hoogtepunt van Node.js - het zijn op gebeurtenissen gebaseerde asynchrone functies . Het gebruikt een gebeurtenislus in plaats van te wachten op I / O-bewerkingen (toegang tot externe webservice, toegang tot hardware).

Node.js kan nog steeds gebruik maken van de verwerkingskracht ervan wanneer de server wacht op een andere bewerking. Hierdoor is Node.js schaalbaar voor miljoenen gelijktijdige verbindingen.

Hoe werkt JavaScript op een server?

Node.js werkt op een v8-omgeving - het is een virtuele machine of een JavaScript-engine die de JavaScript-code uitvoert, dus voor hosting kunt u de gewone webhosts niet gebruiken. Je hebt degenen nodig die de v8-omgeving hebben .

Hier zijn enkele suggesties van providers voor Node.js hosting:

  1. Cloud Foundry
  2. Cloudnode
  3. DotCloud
  4. Duostack

Node.js installeren

Knooppunt werkt perfect op Linux-, Macintosh- en Solaris-besturingssystemen . In Windows kunt u het installeren met behulp van de Cygwin-emulatielaag. Geen van de builds in Windows voldoet, maar het is nog steeds mogelijk om iets te laten draaien.

Optie 1: Knooppunt bouwen vanaf bron.

Gebruik make om node.js te bouwen en te installeren (voer het volgende uit op de opdrachtregel). Git is verplicht .

 git clone --depth 1 git: //github.com/joyent/node.git cd-node git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / node make make install echo 'export PATH = $ HOME / local / node / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / lokaal / knooppunt: $ HOME / local / node / lib / node_modules' >> ~ / .profile source ~ / .profile 

Optie 2: Node.js installeren vanuit Package

Voor Mac-gebruikers kun je Node.js als een pakket installeren op https://sites.google.com/site/nodejsmacosx/, wat vrij duidelijk is.

Test Node Installation

Om je succesvolle Node-installatie te controleren, kunnen we een heel eenvoudig console-programma "Hello World" uitproberen. Maak een bestand met de naam " test.js " en schrijf de volgende code erin.

 var sys = require ("sys"); sys.puts ("Hello World"); 

Code uitleg:

Het laadt de sys klasse in een variabel systeem. Vervolgens wordt het sys object gebruikt om de consoletaken uit te voeren. De sys.puts is een opdracht die lijkt op de cout in C ++, dus ga om het bovenstaande script uit te voeren naar de opdrachtprompt en voer het uit met de onderstaande opdracht:

 node test.js 

Als je installatie succesvol is, krijg je een Hello World-uitvoer op het scherm.

Een HTTP-server maken

Nu is het tijd om een ​​"Hello World" te maken via een webserver met Node.js. Dit is wat we gaan doen: we maken een server die een "Hello World" uitvoert naar de localhost op poort 8080, ongeacht de URL, waardoor je een idee krijgt van welke gebeurtenis .

De codes:

 var sys = require ("sys"), my_http = require ("http"); my_http.createServer (functie (verzoek, antwoord) {sys.puts ("I got kicked"); response.writeHeader (200, {"Content-Type": "text / plain"}); response.write ("Hello World "); response.end ();}). listen (8080); sys.puts ("Server draait op 8080"); 

Code uitleg:

Het meest interessante onderdeel in Node.js is de op gebeurtenissen gebaseerde programmering. Om een ​​HTTP-server te maken, hebben we de HTTP-bibliotheek nodig, dus we gaan verder en voegen deze toe met my_http . We creëren server door de functie:

 my_http.createServer (function (verzoek, respons) {}) luisteren (8080).; 

De functie die wordt gegeven als het eerste argument wordt elke keer uitgevoerd als een gebeurtenis wordt geactiveerd in poort 8080, dus de functie zelf suggereert dat het knooppunt naar een gebeurtenis in poort 8080 luistert . Om dit te detecteren, heb ik een bericht ' Ik heb getrapt ' toegevoegd dat wordt weergegeven op het consolescherm wanneer een verzoek wordt ontvangen.

Het request bevat alle informatie over de aanvraag die naar de server is verzonden . Het bevat bijvoorbeeld de URL-reeks. Het response is het object dat de reactie van de server afhandelt . Eerst stellen we de header van het antwoord in als een text/plain inhoud, voeren dan " Hallo wereld " uit en beëindigen de uitvoerstroom. 200 is het statusantwoord.

Welnu, de bovenstaande is een heel eenvoudig voorbeeld, maar we kunnen zien dat welke URL we ook in de browser voor dezelfde server geven, we dezelfde output krijgen als "Hello World".

Het creëren van een eenvoudige statische bestandsserver

Laten we een eenvoudige statische bestandsserver maken in de volgende zelfstudie.

De codes:

 var sys = require ("sys"), my_http = require ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs"); my_http.createServer (functie (verzoek, antwoord) {var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (exists ) {if (! exists) {response.writeHeader (404, {"Content-type": "text / plain"}); response.write ("404 Not Found \ n"); response.end ();} else {filesys.readFile (full_path, "binary", function (err, file) {if (err) {response.writeHeader (500, {"Content-Type": "text / plain"}); response.write (err + "\ n"); response.end ();} else {response.writeHeader (200); response.write (bestand, "binary"); response.end ();}});}});}). luister (8080); sys.puts ("Server draait op 8080"); 

Codes uitleg:

De bovenstaande code is vrij eenvoudig, we zullen het als blokken bespreken.

 var sys = require ("sys"), my_http = require ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs"); 

Al deze bibliotheken zijn vereist voor het programma. Het gebruik ervan zal duidelijk zijn in de volgende code.

 var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); 

Het request heeft de details van de aanvraag zoals we eerder hebben besproken. We gebruiken de parse functie van de URL-klasse die we hebben opgenomen om de pathname van de aanvraag-URL te krijgen. Na het verkrijgen van de padnaam worden deze samengevoegd met het pad van de huidige werkdirectory om het volledige pad van het bestand te krijgen.

Voor het samenvoegen van URL's hebben we de functie join in de padbibliotheek.

 path.exists (full_path, functie (bestaat) { 

Na het verkrijgen van het volledige pad controleren we of het pad bestaat door de functie die exists . Nadat de controle is voltooid, wordt de callback-functie opgeroepen en doorgegeven als het tweede argument.

 if (! exists) {response.writeHeader (404, {"Content-Type": "text / plain"}); response.write ("404 niet gevonden \ n"); Response.End (); } else {filesys.readFile (full_path, "binary", function (err, file) {if (err) {response.writeHeader (500, {"Content-Type": "text / plain"}); response.write ( err + "\ n"); response.end ();} else {response.writeHeader (200); response.write (bestand, "binary"); response.end ();}}); } 

Nu in de callback-functie als het bestand niet bestaat, sturen we een " 404 Page Not Found " -fout.

Als de pagina is gevonden, lezen we het bestand met de functie readFile in het bestandssysteem. We kunnen ook de callback-functie zien voor de functie readFile die daar zelf is gedefinieerd. Als het bestand niet wordt gelezen, wordt het weergegeven. Als er een fout optreedt, wordt een status 500 geretourneerd met de fouttekst.

Ik raad ook de inpakcodes van de vorige zelfstudie aan in een functie, zodat u deze in de volgende zelfstudie kunt gebruiken of later kunt gebruiken.

 var sys = require ("sys"), my_http = require ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs"); my_http.createServer (functie (verzoek, antwoord) {var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (full_path, function (exists ) {if (! exists) {response.writeHeader (404, {"Content-type": "text / plain"}); response.write ("404 Not Found \ n"); response.end ();} else {filesys.readFile (full_path, "binary", function (err, file) {if (err) {response.writeHeader (500, {"Content-Type": "text / plain"}); response.write (err + "\ n"); response.end ();} else {response.writeHeader (200); response.write (bestand, "binary"); response.end ();}});}});} my_http. createServer (functie (verzoek, reactie) {var my_path = url.parse (request.url) .pathname; load_file (my_path, response);}) listen (8080); sys.puts ("Server draait op 8080"); 

Blijf kijken !

Dat is alles. Ik hoop dat dit je een goed idee geeft van Node.js. In het volgende artikel laat ik je zien hoe je het aantal Facebook-likes kunt laden en weergeven met Node.js. Blijf kijken!

Noot van de redacteur: dit bericht is geschreven door Geo Paul voor Hongkiat.com. Geo is een onafhankelijke web- / iPhone-ontwikkelaar die graag werkt met PHP, Codeigniter, WordPress, jQuery en Ajax. Hij heeft 4 jaar ervaring in PHP en 2 jaar ervaring in iPhone Application Development.

How To Rock Being Single op Valentijnsdag

How To Rock Being Single op Valentijnsdag

Op deze Valentijnsdag vrees je waarschijnlijk weer alleen te zijn. Meer nog, als je geen geluk hebt in de datingafdeling, ondanks dat je meer mensen hebt ontmoet dan je kunt tellen in je leven. Of misschien zou dit de eerste keer kunnen zijn dat u deze dag alleen moet doorstaan ​​- na de breuk.Als je de laatste bent, ga je absoluut een hekel hebben aan de bloemen, chocolaatjes en de lovey-dovey-display om elke hoek die je omdraait. Ma

(Technische en ontwerptips)

9 WordPress-plug-ins die kunstmatige intelligentie gebruiken

9 WordPress-plug-ins die kunstmatige intelligentie gebruiken

In het afgelopen jaar begonnen de grootste geesten van de wereld, zoals Elon Musk, Stephen Hawking en Bill Gates zich publiekelijk zorgen te maken over kunstmatige intelligentie (AI) die langzaam ons dagelijks leven ingaat. Andere technische leiders zoals Google's Eric Schmidt beweren dat AI niet iets is waar we noodzakelijkerwijs bang voor moeten zijn

(Technische en ontwerptips)