Domača » Kodiranje » Navodila za začetnike za Node.js (JavaScript na strežniku)

    Navodila za začetnike za Node.js (JavaScript na strežniku)

    Node.js - v preprostih besedah ​​- je JavaScript na strani strežnika. V teh dneh je postajalo veliko buzzov. Če ste slišali za to ali vas zanima učenje in pridobivanje nekaterih rok - to je za vas.

    Torej, kaj točno je treba uporabiti JavaScript v strežniku? Da bi koncept Node.js jasen, bi ga rad primerjal z navadnimi strežniškimi jeziki, kot je PHP. Node.js uporablja postopek izvedbe strežnika na osnovi dogodkov namesto večnitnega izvajanja v PHP-ju.

    Da bi to še pojasnili, bomo govorili o ideji kaj je Node.js skupaj z nekaterimi predloge za ponudnika gostovanja in nasvete za namestitev. Zahtevajo se vmesni nivo znanja JavaScript, jQuery in Ajax, vendar vam bomo zagotovili tudi primere, s katerimi boste lažje razumeli celotno stvar in celo delali na njej, zato spoznajte več o Node.js!

    Oglejmo si primer:

    Razmislite o spletni strani, na kateri morate dinamično naložiti vsebino iz drugega spletnega strežnika, ki je počasen. V PHP-u lahko to storite na dva načina - kodiranje v preprosti datoteki in kodiranje kot drug skript, potem izvedbo v večnitnem pristopu.

    V prvi metodi, čeprav je koda preprosta izvršitev se za nekaj časa ustavi na mestu, kjer je dostopen počasen spletni strežnik. Druga metoda je bolj optimizirana v primeru uspešnosti vendar je težko kodirati in ima režijske stroške za večnitno upravljanje. Primer je podoben za večino spletnih programskih jezikov, razen za strežniški JavaScript, tj. Node.js.

    Kakšna je razlika v Node.js? Da bi razumeli Node.js, morate imeti v mislih Programiranje na osnovi dogodkov v brskalniku. Tu uporabljamo isto tehnologijo. Namesto ločene niti, a funkcija je dodana končnemu dogodku od “počasen dostop do spletnega strežnika” zgoraj, tako dobite polno funkcionalnost v zgoraj opisani optimizirani drugi možnosti brez multithread režijskih stroškov.

    Prvi koraki z Node.js

    Node.js je JavaScript. Zakaj ne moremo uporabljati funkcionalnosti JavaScripta, ki temelji na dogodkih, v odjemalcu na strežnik? Ta misel je lahko pripeljala do razvoja Node.js.

    To je glavni poudarek Node.js - to so asinhrone funkcije, ki temeljijo na dogodkih. Uporablja dogodka namesto čakanja na I / O operacije (dostop do zunanje spletne storitve, dostop do strojne opreme).

    Node.js bi lahko še vedno uporablja svojo procesno moč ko strežnik čaka na katerokoli drugo operacijo. To naredi Node.js prilagodljiva na milijone sočasnih povezav.

    Kako deluje JavaScript na strežniku?

    Node.js deluje v okolju v8 - to je navidezni stroj ali a Motor JavaScript ki izvaja kodo JavaScript, zato za gostovanje ne morete uporabljati navadnih spletnih gostiteljev. Potrebovali boste tiste, ki imajo V8 okolje.

    Tukaj je nekaj predlogov ponudnika za gostovanje Node.js:

    1. Livarna v oblaku
    2. Cloudnode
    3. DotCloud
    4. Duostack

    Namestitev Node.js

    Node bo odlično deluje na operacijskih sistemih Linux, Macintosh in Solaris. V operacijskem sistemu Windows ga lahko namestite s plastjo emulacije Cygwin. Nobena od gradenj v sistemu Windows ni zadovoljiva, vendar je še vedno mogoče zagnati nekaj.

    Možnost 1: Gradnja vozlišča iz vira.

    Uporaba make za izgradnjo in namestitev node.js (v ukazni vrstici izvedite naslednje). Potreben je Git.

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

    Možnost 2: Namestitev Node.js iz paketa

    Za uporabnike Mac lahko namestite Node.js kot paket iz https://sites.google.com/site/nodejsmacosx/, ki je precej samoumeven.

    Namestitev testnega vozlišča

    Za preverjanje uspešne namestitve Node lahko preizkusimo zelo preprost program "Hello World". Ustvarite datoteko z imenom "test.jsin vnesite naslednjo kodo.

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

    Razlaga kode:

    Naloži sys v spremenljivko sys. Nato uporablja sys predmet za izvajanje nalog konzole. The sys.puts je ukaz, podoben ukazu cout v C ++, zato, da boste zagnali zgornjo skripto, pojdite v ukazni poziv in jo zaženite z ukazom spodaj:

     vozlišče test.js 

    Če je vaša namestitev uspešna, boste na zaslonu dobili svetovni izhod.

    Ustvarjanje strežnika HTTP

    Zdaj je čas, da ustvarite "Hello World" prek spletnega strežnika z uporabo Node.js. Evo, kaj bomo storili - mi ustvarite strežnik, ki oddaja a “Pozdravljen, svet” na localhost na vratih 8080 ne glede na to, kaj je URL, ki vam daje idejo, kaj dogodka je.

    Kode:

     var sys = require ("sys"), my_http = require ("http"); my_http.createServer (funkcija (zahteva, odgovor) sys.puts ("dobila sem brcanje"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hello World") reply.end ();) poslušaj (8080); sys.puts ("strežnik, ki deluje na 8080"); 

    Razlaga kode:

    Najbolj zanimiv del v Node.js je programiranje na osnovi dogodkov. Za ustvarjanje strežnika HTTP potrebujemo Knjižnica HTTP, zato gremo naprej in jo dodamo z uporabo my_http. S funkcijo ustvarjamo strežnik:

     my_http.createServer (funkcija (zahteva, odgovor) ). poslušaj (8080); 

    Funkcija, podana kot prvi argument, se izvede vsakič, ko se dogodek sproži v vratih 8080, tako funkcija sama predlaga, da vozlišče posluša dogodek v vratih 8080. Da bi to zaznal, sem dodal a “Iztrebili so me” sporočilo, ki bo prikazano na zaslonu konzole, ko bo prejeta zahteva.

    The prošnja predmet vsebuje vse informacije o zahtevi, ki je bila podana strežniku. Na primer vsebuje niz URL. The odziv predmet je predmet, ki obravnava odziv strežnika. Najprej nastavimo glavo odgovora kot a text / plain vsebine, nato izide “Pozdravljen, svet“, nato končajte izhodni tok. 200 je odziv stanja.

    No, zgornji je zelo preprost primer, vendar lahko vidimo, da ne glede na URL, ki ga podajamo v brskalniku za isti strežnik, dobimo enako izhodno vrednost kot “Pozdravljen, svet”.

    Ustvarjanje enostavnega statičnega datotečnega strežnika

    Ustvarimo preprost statični datotečni strežnik v naslednjem vodiču.

    Kode:

     var sys = require ("sys"), my_http = require ("http"), path = require ("pot"), url = require ("url"), filesys = require ("fs"); my_http.createServer (funkcija (zahteva, odgovor) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (polna pot, funkcija (obstaja) ) if (! exist) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found"); response.end (); else filesys.readFile (full_path, "binary", funkcija (napaka, datoteka) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (err + response.end (); else response.writeHeader (200); response.write (datoteka, "binary"); response.end ();););). poslušaj (8080); sys.puts ("strežnik, ki deluje na 8080"); 

    Razlaga kod:

    Zgornja koda je precej preprosta, razpravljali jo bomo kot bloki.

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

    Vse te knjižnice so potrebne za program. Njegova uporaba bo jasna v naslednji kodi.

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

    The prošnja predmet ima podrobnosti zahteve, kot smo razpravljali prej. Uporabljamo razčleniti funkcijo razreda URL, ki smo ga vključili, da dobimo ime poti naslova URL zahteve. Po pridobitvi imena poti ga povežemo s potjo trenutnega delovnega imenika, da dobimo celotno pot datoteke.

    Za povezovanje URL-jev imamo funkcijo, ki se imenuje pridružite se v knjižnici poti.

     path.exists (polna pot, funkcija (obstaja)  

    Po pridobitvi celotne poti preverimo, ali pot obstaja s funkcijo obstaja. Po opravljenem preverjanju se pokliče funkcija povratnega klica in posreduje kot drugi argument.

     če (! obstaja) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found"); response.end ();  else filesys.readFile (full_path, "binary", funkcija (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write ( err + "n"); response.end (); drugo response.writeHeader (200); response.write (datoteka, "binary"); response.end (););  

    Zdaj v funkciji povratnega klica, če datoteka ne obstaja, pošljemo "404 Strani ni mogoče najti"napaka.

    Če najdete stran, potem datoteko preberemo readFile v datotečnem sistemu. Vidimo lahko tudi funkcijo povratnega klica za readFile tam definirana funkcija. Če pri branju datoteke ni napake, se prikaže. Če je prišlo do napake, se vrne stanje 500 z besedilom napake.

    Priporočam tudi, da kodo prejšnje vadnice zavijete v funkcijo, tako da jo lahko uporabite v naslednji vadnici ali za prihodnjo uporabo.

     var sys = require ("sys"), my_http = require ("http"), path = require ("pot"), url = require ("url"), filesys = require ("fs"); my_http.createServer (funkcija (zahteva, odgovor) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists (polna pot, funkcija (obstaja) ) if (! exist) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found"); response.end (); else filesys.readFile (full_path, "binary", funkcija (napaka, datoteka) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (err + response.end (); else response.writeHeader (200); response.write (datoteka, "binary"); response.end (););); my_http. createServer (funkcija (zahteva, odgovor) var my_path = url.parse (request.url) .pathname; load_file (my_path, response);). poslušaj (8080); sys.puts ("strežnik teče na 8080"); 

    Ostani na vezi !

    To je vse. Upam, da je to dobra ideja za Node.js. V naslednjem članku vam bom pokazal, kako obremenitev in prikaz števila Facebookov rad uporablja Node.js. Ostani na vezi!

    Opomba urednika: To objavo je napisal Geo Paul za Hongkiat.com. Geo je neodvisni razvijalec spleta / iPhoneov, ki ima rad s PHP, Codeigniter, WordPress, jQuery in Ajax. Ima 4 leta izkušenj v PHP-ju in dve leti izkušenj z razvojem aplikacij iniPhone.