Ghidul începătorului pentru Node.js (JavaScript de la server)
Node.js - cu cuvinte simple - este server-side JavaScript. Ea a fost obtinerea de multe buzz aceste zile. Dacă ați auzit de ea sau sunteți interesat să învățați și să obțineți niște mâini pe ea - acest post este pentru dvs..
Deci, exact ce este necesitatea utilizării JavaScript în server? Pentru a face clar conceptul de Node.js, aș dori să îl comparăm cu limbile obișnuite de pe server, cum ar fi PHP. Node.js utilizează un bazate pe eveniment mai degrabă decât executarea multithreaded în PHP.
Pentru a explica mai departe, vom vorbi despre ideea ce este Node.js împreună cu unii oferirea de sugestii de furnizor și sfaturi de instalare. Sunt necesare cunoștințe de nivel interstatal despre JavaScript, jQuery și Ajax, dar vom oferi și exemple pentru a înțelege mai ușor totul și chiar pentru a lucra la el, așa că să ne cunoaștem mai multe despre Node.js!
Să luăm în considerare un caz:
Luați în considerare un site web în care trebuie să încărcați conținut dinamic de la un alt server web, care este lent. În PHP puteți să o faceți în 2 moduri - codarea într-un fișier simplu și codificându-l ca pe un alt scenariu, atunci executându-l într-o abordare multietajată.
În prima metodă, chiar dacă codul este simplu execuția se oprește o clipă în punctul în care este accesat serverul web lent. A doua metodă este mai optimizat în caz de performanță dar este greu de codat și are o gestionare multiplă deasupra capului. Cazul este similar pentru majoritatea limbajelor de programare web, altele decât JavaScript-ul de pe server, adică Node.js.
Care este diferența în Node.js? Pentru a înțelege Node.js, trebuie să țineți minte Programarea JavaScript bazată pe eveniment în browser. Folosim aceeași tehnologie aici. În loc să folosiți un fir separat, a funcția este atașată la evenimentul de finisare din “acces lent la serverul web” menționate mai sus, astfel veți obține funcționalitate completă în cea de-a doua opțiune optimizată menționată mai sus, fără nicio cheltuială multiplă.
Noțiuni de bază cu Node.js
Node.js este JavaScript. De ce nu putem utiliza funcționalitatea bazată pe eveniment a JavaScript-ului pe client la un server? Acest gând ar fi putut duce la dezvoltarea Node.js.
Acestea fiind spuse, punctul culminant al Node.js - funcțiile asincrone bazate pe evenimente. Folosește un bucla de eveniment în loc să aștepte operațiile I / O (accesarea serviciului web extern, accesarea hardware-ului).
Node.js ar putea încă să utilizeze puterea de procesare când serverul așteaptă o altă operație. Acest lucru face Node.js scalabil la milioane de conexiuni concurente.
Cum funcționează JavaScript pe un server?
Node.js funcționează pe un mediu v8 - este a mașină virtuală sau a Motorul JavaScript care rulează codul JavaScript, deci pentru găzduire nu puteți folosi gazdele obișnuite. Veți avea nevoie de cei care au v8.
Iată câteva sugestii de furnizor pentru găzduirea Node.js:
- Cloud Foundry
- Cloudnode
- DotCloud
- Duostack
Instalarea Node.js
Nodul va să lucreze perfect pe sistemele de operare Linux, Macintosh și Solaris. Pe Windows, îl puteți instala utilizând stratul de emulare Cygwin. Niciunul dintre constructorii din Windows nu este satisfăcător, dar este încă posibil să se întâmple ceva.
Opțiunea 1: Construirea nodului din sursă.
Utilizare face
pentru a construi și a instala node.js (executați următoarele în linia de comandă). Git este necesar.
git clone - det. 1 git: //github.com/joyent/node.git cd nod git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / nod make make install echo 'export PATH = $ HOME / local / nod / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / local / node: $ HOME / .profile source ~ / .profile
Opțiunea 2: Instalarea Node.js din pachet
Pentru utilizatorii de Mac, puteți instala Node.js ca pachet de la adresa https://sites.google.com/site/nodejsmacosx/, ceea ce este destul de explicabil.
Testarea nodului de instalare
Pentru a verifica instalarea cu succes a Nodului, putem încerca o simplă consola "Hello World". Creați un fișier numit "test.js"și scrieți următorul cod în el.
var sys = necesită ("sys"); sys.puts ("Hello World");
Explicarea codului:
Se încarcă sys
clasificați într-o variabilă sys
. Apoi utilizează sys
obiect pentru a efectua sarcinile consolei. sys.puts
este o comandă similară cu cout
în C ++, deci pentru a rula scriptul de mai sus mergeți la linia de comandă și executați-l prin comanda de mai jos:
nod test.js
În cazul în care instalarea dvs. are succes, veți obține o ieșire de salut în lume pe ecran.
Crearea unui server HTTP
Acum este momentul să creați un "Hello World" prin intermediul serverului web folosind Node.js. Iată ce vom face - noi creează un server care emite a “Salut Lume” la localhost pe portul 8080 indiferent de ce este adresa URL, oferindu-vă o idee ce eveniment este.
Codurile:
var sys = cer ("sys"), my_http = necesită ("http"); my_http.createServer (functie (cerere, raspuns) sys.puts ("M-am lovit"); reply.writeHeader (200, "Content-Type" "); răspuns.end ();) ascultați (8080); sys.puts ("Server care rulează pe 8080");
Explicarea codului:
Partea cea mai interesantă din Node.js este programarea bazată pe eveniment. Pentru a crea un server HTTP avem nevoie de Bibliotecă HTTP, așa că mergem înainte și o adăugăm folosind my_http
. Creăm server prin funcția:
my_http.createServer (funcție (cerere de răspuns) ) asculta (8080).
Funcția dată ca primul argument este executată de fiecare dată când un eveniment este declanșat în portul 8080, astfel încât funcția în sine sugerează ca nodul să asculte un eveniment în portul 8080. Pentru a detecta acest lucru, am adăugat o “M-am lovit” mesaj care va fi afișat pe ecranul consolei ori de câte ori este primită o solicitare.
cerere
obiect conține toate informațiile despre cererea care a fost făcută către server. De exemplu, conține șirul de adrese URL. raspuns
obiect este obiectul care gestionează răspunsul de la server. Mai întâi am setat antetul răspunsului ca a text / plain
conținut, apoi ieșiri “Salut Lume“, apoi opriți fluxul de ieșire. 200 este răspunsul la statut.
Ei bine, exemplul de mai sus este un exemplu foarte simplu, dar putem vedea că indiferent de URL-ul pe care îl oferim în browser-ul pentru același server primim aceeași ieșire ca “Salut Lume”.
Crearea unui server de fișiere static simplu
Să creați un simplu server de fișiere statice în tutorialul următor.
Codurile:
var sys = cer ("sys"), my_http = necesită ("http"), path = require ("path"); my_path = path.join (process.cwd (), my_path); path.exists (full_path, function (exists) (functie (cerere, raspuns) ) if (! exists) answer.writeHeader (404, "Content-Type": "text / plain") filesys.readFile (full_path, "binar", functie (err, fisier) if (err) response.writeHeader (500, Content-Type " " altceva answer.writeHeader (200); answer.write (fișier," binar "); răspuns.end ();););). asculta (8080); sys.puts ("Server care rulează pe 8080");
Coduri explicație:
Codul de mai sus este destul de simplu, îl vom discuta ca blocuri.
var sys = cer ("sys"), my_http = necesită ("http"), path = require ("path");
Toate aceste biblioteci sunt necesare pentru program. Utilizarea sa va fi clară în următorul cod.
var my_path = adresa url.parse (request.url) .pathname; var pl_path = path.join (process.cwd (), calea mea);
cerere
obiect are detaliile cererii așa cum am discutat mai devreme. Noi folosim analiza
funcție de clasa URL pe care am inclus-o pentru a obține caii de acces
din adresa URL a solicitării. După obținerea denumirii de cale, îl concatenăm cu calea directorului curent de lucru pentru a obține calea completă a fișierului.
Pentru aderarea la URL-uri avem o funcție numită a adera
în biblioteca căilor.
path.exists (full_path, există funcția ()
După ce am parcurs calea completă, verificăm dacă calea există de funcție există
. După efectuarea controlului, funcția de apel inversă este apelată și trecută ca al doilea argument.
dacă ! există) response.writeHeader (404, "Content-Type": "text / simplu"); response.write ("404 nu a fost găsit \ n"); response.end (); altceva filesys.readFile (full_path, "binary", funcția (err, file) if (err) response.writeHeader (500, Content-Type ": text / plain err + "\ n"); răspuns.end (); altceva answer.writeHeader (200); răspuns.write (fișier, "binar"; răspuns.end (););
Acum, în funcția de apel invers, dacă fișierul nu există, trimitem un mesaj "404 Pagina nu a fost găsită"eroare.
Dacă pagina este găsită, atunci citim fișierul de către readfile
funcția în sistemul de fișiere. De asemenea, putem vedea funcția de apel invers pentru readfile
funcția definită acolo. Dacă nu există nicio eroare în citirea fișierului, acesta va fi afișat. Dacă există o eroare, atunci se returnează o stare 500 cu textul de eroare.
Vă recomandăm, de asemenea, să împachetați codurile din tutorialul anterior într-o funcție, astfel încât să o puteți utiliza în tutorialul următor sau pentru o utilizare ulterioară.
var sys = cer ("sys"), my_http = necesită ("http"), path = require ("path"); my_path = path.join (process.cwd (), my_path); path.exists (full_path, function (exists) (functie (cerere, raspuns) ) if (! exists) answer.writeHeader (404, "Content-Type": "text / plain") filesys.readFile (full_path, "binar", functie (err, fisier) if (err) response.writeHeader (500, Content-Type " " altceva answer.writeHeader (200); answer.write (fișier," binary "); answer.end (););); my_http. createServer (functie (cerere, raspuns) var my_path = url.parse (request.url) .pathname; load_file (my_path, answer);)) asculta (8080); sys.puts ("Server Running on 8080");
Rămâneți aproape !
Asta e tot. Sper că acest lucru vă oferă o idee bună despre Node.js. În următorul articol, vă voi arăta cum să faceți asta încărcați și afișați numărul de persoane de pe Facebook care utilizează Node.js. Rămâneți aproape!
Nota editorului: Această postare este scrisă de Geo Paul pentru Hongkiat.com. Geo este un dezvoltator independent de Web / iPhone care se bucură de colaborarea cu PHP, Codeigniter, WordPress, jQuery și Ajax. Are 4 ani de experiență în PHP și 2 ani de experiență în dezvoltarea aplicațiilor iniPhone.