Guida per principianti a Node.js (lato server JavaScript)
Node.js - in parole semplici - è JavaScript lato server. Al giorno d'oggi ha suscitato molto entusiasmo. Se ne hai sentito parlare o sei interessato a imparare e a farne alcune - questo post è per te.
Quindi, qual è esattamente la necessità di utilizzare JavaScript nel server? Per rendere chiaro il concetto di Node.js, vorrei confrontarlo con i normali linguaggi lato server come PHP. Node.js utilizza un procedura di esecuzione del server basata su eventi piuttosto che l'esecuzione multithread in PHP.
Per spiegarlo ulteriormente, parleremo dell'idea di cosa è Node.js insieme ad alcuni suggerimenti di hosting provider e suggerimenti per l'installazione. Sono richieste conoscenze di livello intermedio di JavaScript, jQuery e Ajax, ma forniremo anche esempi per capire meglio l'intera faccenda e persino lavorarci su, quindi impariamo di più su Node.js!
Consideriamo un caso:
Si consideri un sito Web in cui è necessario caricare il contenuto in modo dinamico da un altro server Web che è lento. In PHP puoi farlo in 2 modi - codificandolo in un semplice file e codificandolo come un altro script, poi eseguendolo in un approccio multithread.
Nel primo metodo anche se il codice è semplice l'esecuzione si ferma per un po ' nel punto in cui si accede al server web lento. Il secondo metodo è più ottimizzato in caso di prestazioni ma è difficile da codificare e ha un overhead di gestione multithread. Il caso è simile per la maggior parte dei linguaggi di programmazione Web diversi dal JavaScript lato server, ad esempio Node.js.
Qual è la differenza in Node.js? Per capire Node.js devi tenere a mente il Programmazione basata su eventi di JavaScript nel browser. Utilizziamo la stessa tecnologia qui. Invece di usare un thread separato, a la funzione è allegata all'evento finale del “accesso lento al server web” menzionato sopra, quindi ottieni il piena funzionalità nella seconda opzione ottimizzata di cui sopra senza alcun overhead multithread.
Iniziare con Node.js
Node.js è JavaScript. Perché non possiamo utilizzare la funzionalità basata su eventi di JavaScript nel client su un server? Questo pensiero potrebbe aver portato allo sviluppo di Node.js.
Detto questo, il clou principale di Node.js - si tratta di funzioni asincrone basate su eventi. Usa un ciclo degli eventi invece di attendere le operazioni di I / O (accesso al servizio web esterno, accesso all'hardware).
Node.js potrebbe ancora fare uso della sua potenza di elaborazione quando il server è in attesa di altre operazioni. Questo rende Node.js scalabile a milioni di connessioni simultanee.
Come funziona JavaScript su un server?
Node.js funziona su un ambiente v8: è un macchina virtuale o a Motore JavaScript che esegue il codice JavaScript, quindi per l'hosting non è possibile utilizzare gli host web ordinari. Avrai bisogno di quelli che hanno il ambiente v8.
Ecco alcuni suggerimenti del provider per l'hosting di Node.js:
- Cloud Foundry
- Cloudnode
- DotCloud
- Duostack
Installare Node.js
Nodo lo farà funziona perfettamente su sistemi operativi Linux, Macintosh e Solaris. Su Windows puoi installarlo usando il livello di emulazione Cygwin. Nessuna delle build di Windows è soddisfacente, ma è comunque possibile ottenere qualcosa in esecuzione.
Opzione 1: creazione del nodo dalla fonte.
Uso rendere
per costruire e installare node.js (eseguire quanto segue sulla riga di comando). È richiesto Git.
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 'esporta NODE_PATH = $ HOME / local / node: $ HOME / local / node / lib / node_modules' >> ~ / .profile source ~ / .profile
Opzione 2: installazione di Node.js dal pacchetto
Per gli utenti Mac, puoi installare Node.js come pacchetto da https://sites.google.com/site/nodejsmacosx/ che è piuttosto auto-esplicativo.
Test dell'installazione del nodo
Per verificare la corretta installazione del Nodo, possiamo provare un semplice programma "Hello World" della console. Crea un file chiamato "test.js"e scrivi il seguente codice.
var sys = require ("sys"); sys.puts ("Hello World");
Spiegazione del codice:
Carica il SYS
classe in una variabile SYS
. Quindi usa il SYS
oggetto per eseguire le attività della console. Il sys.puts
è un comando simile al cout
in C ++, quindi per eseguire lo script precedente vai al prompt dei comandi ed eseguilo con il comando seguente:
nodo test.js
Se l'installazione ha esito positivo, sullo schermo verrà visualizzato un output mondiale.
Creazione di un server HTTP
Ora è il momento di creare un "Hello World" tramite il server web utilizzando Node.js. Ecco cosa faremo noi crea un server che emette a “Ciao mondo” al localhost sulla porta 8080 non importa quale sia l'URL, dandoti un'idea di cosa evento è.
I codici:
var sys = require ("sys"), my_http = require ("http"); my_http.createServer (funzione (richiesta, risposta) sys.puts ("I got kicked"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hello World "); response.end ();). listen (8080); sys.puts ("Server in esecuzione su 8080");
Spiegazione del codice:
La parte più interessante di Node.js è la sua programmazione basata sugli eventi. Per creare un server HTTP abbiamo bisogno del Libreria HTTP, quindi andiamo avanti e lo aggiungiamo usando my_http
. Creiamo server tramite la funzione:
my_http.createServer (function (richiesta, risposta) ) ascolta (8080).;
La funzione data come primo argomento viene eseguita ogni volta che viene attivato un evento nella porta 8080, quindi la funzione stessa suggerisce al nodo di ascoltare un evento nella porta 8080. Per rilevarlo, ho aggiunto un “Sono stato preso a calci” messaggio che verrà visualizzato sullo schermo della console ogni volta che viene ricevuta una richiesta.
Il richiesta
l'oggetto contiene tutte le informazioni sulla richiesta che è stata fatta al server. Ad esempio contiene la stringa dell'URL. Il risposta
l'oggetto è l'oggetto che gestisce la risposta dal server. Per prima cosa impostiamo l'intestazione della risposta come a text / plain
contenuto, quindi output “Ciao mondo“, quindi terminare il flusso di output. 200 è la risposta di stato.
Bene, il precedente è un esempio molto semplice ma possiamo vedere che qualunque URL diamo nel browser per lo stesso server otteniamo lo stesso output come “Ciao mondo”.
Creazione di un semplice file server statico
Creiamo un semplice file server statico nel prossimo tutorial.
I codici:
var sys = require ("sys"), my_http = require ("http"), percorso = require ("percorso"), url = require ("url"), filesys = require ("fs"); my_http.createServer (function (request, response) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (percorso_completo, funzione (esiste ) 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 (file, "binary"); response.end ();););). ascoltare (8080); sys.puts ("Server in esecuzione su 8080");
Spiegazione dei codici:
Il codice sopra è piuttosto semplice, lo discuteremo come blocchi.
var sys = require ("sys"), my_http = require ("http"), percorso = require ("percorso"), url = require ("url"), filesys = require ("fs");
Tutte queste librerie sono necessarie per il programma. Il suo utilizzo sarà chiaro nel seguente codice.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);
Il richiesta
oggetto ha i dettagli della richiesta come abbiamo discusso in precedenza. Noi usiamo il analizzare
funzione della classe URL che abbiamo incluso per ottenere il percorso
dell'URL della richiesta. Dopo aver ottenuto il percorso, lo concateniamo con il percorso della directory di lavoro corrente per ottenere il percorso completo del file.
Per partecipare agli URL abbiamo una funzione chiamata aderire
nella libreria dei percorsi.
path.exists (percorso_completo, esiste function ()
Dopo aver ottenuto il percorso completo, controlliamo se il percorso esiste per la funzione esiste
. Dopo il controllo, la funzione di callback viene chiamata e passata come secondo argomento.
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 (file, "binary"); response.end (););
Ora nella funzione di callback se il file non esiste, inviamo un "404 pagina non trovata"errore.
Se la pagina viene trovata, leggiamo il file con readFile
funzione nel file system. Possiamo anche vedere la funzione di callback per readFile
funzione definita lì stesso. Se non ci sono errori nella lettura del file, verrà visualizzato. Se si verifica un errore, viene restituito uno stato 500 con il testo dell'errore.
Raccomando anche di inserire i codici del tutorial precedente in una funzione in modo da poterlo utilizzare nel prossimo tutorial o per uso futuro.
var sys = require ("sys"), my_http = require ("http"), percorso = require ("percorso"), url = require ("url"), filesys = require ("fs"); my_http.createServer (function (request, response) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (percorso_completo, funzione (esiste ) 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 (file, "binary"); response.end (););); my_http. createServer (function (request, response) var my_path = url.parse (request.url) .pathname; load_file (my_path, response);). listen (8080); sys.puts ("Server in esecuzione su 8080");
Rimanete sintonizzati !
È tutto. Spero che questo ti dia una buona idea di Node.js. Nel prossimo articolo, ti mostrerò come carica e mostra il numero di Mi piace di Facebook usando Node.js. Rimanete sintonizzati!
Nota dell'editore: Questo post è scritto da Geo Paul per Hongkiat.com. Geo è uno sviluppatore indipendente di Web / iPhone che ama lavorare con PHP, Codeigniter, WordPress, jQuery e Ajax. Ha 4 anni di esperienza in PHP e 2 anni di esperienza nello sviluppo di applicazioni iniPhone.