Aloittelijan opas Node.jsiin (palvelinpuolen JavaScript)
Node.js - yksinkertaisesti sanottuna palvelinpuolen JavaScript. Se on saanut paljon buzzia näinä päivinä. Jos olet kuullut siitä tai olet kiinnostunut oppimaan ja saamaan kädet siihen - tämä viesti on sinulle.
Mitä tarkalleen on JavaScriptin käyttäminen palvelimessa? Node.js -konseptin selvittämiseksi haluan verrata sitä tavallisiin palvelinpuolen kieliin, kuten PHP: hen. Node.js käyttää tapahtumapohjainen palvelimen suoritustapa pikemminkin kuin monisäikeinen toteutus PHP: ssä.
Jotta voisimme selittää sitä edelleen, puhumme ajatuksesta mitä Node.js on yhdessä joidenkin kanssa palveluntarjoajan ehdotukset ja asennusvihjeet. Tarvitaan keskitason JavaScript-, jQuery- ja Ajax-tietämystä, mutta annamme myös esimerkkejä siitä, miten voit ymmärtää koko asia helpommaksi ja jopa työskennellä sen parissa, joten tutustu enemmän Node.js-palveluun!
Tarkastellaan tapausta:
Harkitse verkkosivustoa, jossa sinun täytyy ladata sisältöä dynaamisesti toisesta Web-palvelimesta, joka on hidas. PHP: ssä voit tehdä sen kahdella tavalla - koodataan se yksinkertaiseen tiedostoon ja koodaus sitä toiseksi skriptiksi, sitten suoritetaan se monisäikeisellä lähestymistavalla.
Ensimmäisessä menetelmässä, vaikka koodi on yksinkertainen toteutus keskeytyy jonkin aikaa kohdassa, jossa hitaan web-palvelimen käyttö tapahtuu. Toinen menetelmä on optimoidaan suorituskyvyn tapauksessa mutta on vaikea koodata ja sillä on monisäikeinen hallinta. Tapaus on samanlainen useimmilla muilla web-ohjelmointikielillä kuin palvelinpuolen JavaScript, eli Node.js.
Mitä eroa on Node.js: ssa? Jotta ymmärrät Node.js: n, sinun on pidettävä mielessä JavaScriptin tapahtumapohjainen ohjelmointi selaimessa. Käytämme samaa tekniikkaa täällä. Sen sijaan, että käytettäisiin erillistä säiettä, a toiminto on liitetty maaliin n “hidas web-palvelimen käyttö” edellä mainittu, niin saat täyden toimivuuden edellä mainitussa optimoidussa toisessa vaihtoehdossa ilman monisäikeistä yläpäätä.
Aloittaminen Node.js: n kanssa
Node.js on JavaScript. Miksi emme voi hyödyntää JavaScriptin tapahtumapohjaista toiminnallisuutta palvelimelle palvelimelle? Tämä ajatus olisi voinut johtaa Node.js: n kehittämiseen.
Node.js: n tärkein kohokohta on sanottu - se on tapahtumapohjainen asynkroninen toiminto. Se käyttää tapahtuman silmukka odottamaan I / O-toimintoja (ulkoisen verkkopalvelun käyttäminen, laitteiston käyttäminen).
Node.js voisi silti hyödyntää sen prosessointitehoa kun palvelin odottaa muuta toimintoa. Tämä tekee Node.js-tiedostosta skaalautuva miljoonia samanaikaisia yhteyksiä.
Miten JavaScript toimii palvelimella?
Node.js toimii v8-ympäristössä - se on a virtuaalikone tai a JavaScript-moottori joka käyttää JavaScript-koodia, joten isännöintiin ei voi käyttää tavallisia verkkosivuja. Tarvitset ne, joilla on v8-ympäristö.
Seuraavassa on joitakin palveluntarjoajan ehdotuksia Node.js-palvelimelle:
- Cloud Foundry
- Cloudnode
- DotCloud
- Duostack
Node.js: n asentaminen
Solmu tulee toimivat täydellisesti Linux-, Macintosh- ja Solaris-käyttöjärjestelmissä. Windowsissa voit asentaa sen käyttämällä Cygwin-emulointikerrosta. Mikään Windows-rakennus ei ole tyydyttävä, mutta on vielä mahdollista saada jotain käynnissä.
Vaihtoehto 1: solmun rakentaminen lähteestä.
Käyttää tehdä
rakentaa ja asentaa node.js (suorita seuraava komentorivillä). Git tarvitaan.
git clone - depth 1 git: //github.com/joyent/node.git cd solmu git checkout v0.4.11 vienti JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / node make make install echo 'export PATH = $ HOME / local / solmu / bin: $ PATH' >> ~ / .profile echo-vienti NODE_PATH = $ HOME / local / solmu: $ HOME / local / node / lib / node_modules '>> ~ / .profiililähde ~ / .profile
Vaihtoehto 2: Node.js: n asentaminen paketista
Mac-käyttäjille voit asentaa Node.js-paketin osoitteesta https://sites.google.com/site/nodejsmacosx/ joka on melko itsestään selvä.
Testisolmun asennus
Jotta voisit tarkistaa onnistuneen solmun asennuksen, voimme kokeilla hyvin yksinkertaista konsolin "Hello World" -ohjelmaa. Luo tiedosto nimeltä "test.js"ja kirjoita siihen seuraava koodi.
var sys = vaadi ("sys"); sys.puts ("Hello World");
Koodin selitys:
Se lataa sys
luokka muuttujaksi sys
. Sitten se käyttää sys
suorittaa konsolin tehtävät. sys.puts
on komento, joka on samanlainen kuin cout
C ++: ssa, joten yllä olevan komentosarjan suorittamiseksi siirry komentokehotteeseen ja suorita se seuraavalla komennolla:
solmu test.js
Jos asennus on onnistunut, näyttöön tulee terveellistä maailmaa.
HTTP-palvelimen luominen
Nyt on aika luoda "Hello World" web-palvelimen kautta Node.js. Tässä mitä me aiomme tehdä - me luo palvelin, joka lähettää a “Hei maailma” porttiin 8080 riippumatta URL-osoitteesta, antaa sinulle käsityksen siitä, mitä tapahtuma on.
Koodit:
var sys = vaadi ("sys"), my_http = vaadi ("http"); my_http.createServer (toiminto (pyyntö, vastaus) sys.puts ("Sain potkut"), response.writeHeader (200, "Sisältö-tyyppi": "text / plain"), response.write ("Hello World "); response.end ();) kuuntele (8080); sys.puts ("Palvelimen käyttö 8080: ssa");
Koodin selitys:
Node.js: n mielenkiintoisin osa on sen tapahtumapohjainen ohjelmointi. HTTP-palvelimen luomiseksi tarvitaan HTTP-kirjasto, joten siirrymme eteenpäin ja lisäämme sen my_http
. Luomme palvelimen toiminnon avulla:
my_http.createServer (toiminto (pyyntö, vastaus) ). kuunnella (8080);
Ensimmäinen argumentti annetaan funktiona joka kerta, kun portti 8080 käynnistää tapahtuman, niin toiminto itse ehdottaa solmun kuuntelevan tapahtumaa portissa 8080. Tämän havaitsemiseksi olen lisännyt a “Sain potkia” viestin, joka näytetään konsolinäytössä aina, kun pyyntö vastaanotetaan.
pyyntö
objekti sisältää kaikki tiedot palvelimelle tehdystä pyynnöstä. Se sisältää esimerkiksi URL-merkkijonon. vastaus
objekti on objekti käsittelee palvelimen vastausta. Ensin asetamme vastauksen otsikon a text / plain
sisältöä, sitten lähdöt “Hei maailma“, lopeta sitten lähtövirta. 200 on tilan vastaus.
Edellä mainittu on hyvin yksinkertainen esimerkki, mutta voimme nähdä, että mitä URL-osoitetta annamme selaimessa samalle palvelimelle, saamme saman tuotoksen kuin “Hei maailma”.
Yksinkertaisen staattisen tiedostopalvelimen luominen
Luodaan yksinkertainen staattinen tiedostopalvelin seuraavaan opetusohjelmaan.
Koodit:
var sys = pieprasa ("sys"), my_http = vaadi ("http"), polku = vaadi ("polku"), url = vaadi ("url"), filesys = vaadi ("fs"); my_http.createServer (toiminto (pyyntö, vastaus) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); polku.olot (full_path, toiminto (olemassa) ) if (! Yra) response.writeHeader (404, "Content-Type": "text / plain"), response.write ("404 Ei löydy"); answer.end (); else filesys.readFile (full_path, "binary", toiminto (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"), response.write (virhe + "n"); response.end (); else response.writeHeader (200); response.write (tiedosto, "binary"); response.end ();););). listen (8080); sys.puts ("Palvelimen käyttö 8080: ssa");
Koodien selitys:
Yllä oleva koodi on melko yksinkertainen, keskustelemme siitä lohkoina.
var sys = pieprasa ("sys"), my_http = vaadi ("http"), polku = vaadi ("polku"), url = vaadi ("url"), filesys = vaadi ("fs");
Kaikki nämä kirjastot vaaditaan ohjelmalle. Sen käyttö on selvää seuraavassa koodissa.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);
pyyntö
objektilla on pyyntötiedot, kuten olemme aiemmin keskustelleet. Käytämme jäsentää
sen URL-luokan funktio, jonka olemme sisällyttäneet saamaan polku
pyynnön URL-osoitteen. Saatuaan polun, yhdistämme sen nykyisen työhakemiston polkuun saadaksesi tiedoston koko polun.
URL-osoitteiden liittämiseen meillä on toiminto, jota kutsutaan liittyä seuraan
polun kirjastossa.
path.exists (koko_polku, toiminto (olemassa)
Kun olet saanut täydellisen polun, tarkistamme, onko polku olemassa funktion mukaan olemassa
. Kun tarkistus on suoritettu, soittopyyntötoiminto kutsutaan ja siirretään toisena argumenttina.
jos (! olemassa) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found n"); response.end (); else filesys.readFile (full_path, "binary", toiminto (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"); err + "n"); response.end (); else response.writeHeader (200); response.write (tiedosto, "binary"); response.end (););
Nyt takaisin soittotoiminnossa, jos tiedostoa ei ole, lähetämme ""404 sivua ei löydetty"virhe.
Jos sivu löytyy, luemme tiedoston ReadFile
toiminto tiedostojärjestelmässä. Näemme myös soittopyynnön ReadFile
määritellään siellä itse. Jos tiedoston lukemisessa ei ole virhettä, se näytetään. Jos on virhe, palautetaan virhetekstin kanssa tila 500.
Suosittelen myös edellisen opetusohjelman pakkauskoodeja toimintoon, jotta voit käyttää sitä seuraavassa opetusohjelmassa tai myöhempää käyttöä varten.
var sys = pieprasa ("sys"), my_http = vaadi ("http"), polku = vaadi ("polku"), url = vaadi ("url"), filesys = vaadi ("fs"); my_http.createServer (toiminto (pyyntö, vastaus) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); polku.olot (full_path, toiminto (olemassa) ) if (! Yra) response.writeHeader (404, "Content-Type": "text / plain"), response.write ("404 Ei löydy"); answer.end (); else filesys.readFile (full_path, "binary", toiminto (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"), response.write (virhe + "n"); response.end (); else response.writeHeader (200); response.write (tiedosto, "binary"); response.end (););); my_http. createServer (toiminto (pyyntö, vastaus) var my_path = url.parse (request.url) .pathname; load_file (my_path, vastaus);) kuuntele (8080), sys.puts ("Palvelimen käyttö 8080: ssa");
Pysy kanavalla !
Siinä kaikki. Toivottavasti tämä antaa sinulle hyvän käsityksen Node.js. Seuraavassa artikkelissa näytän sinulle, miten Facebookin tykkääminen ja näyttäminen Node.js: n avulla. Pysy kanavalla!
Toimittajan huomautus: Tämä viesti on kirjoittanut Geo Paul varten Hongkiat.com. Geo on itsenäinen Web / iPhone-kehittäjä, joka nauttii työskentelystä PHP: n, Codeigniterin, WordPressin, jQueryn ja Ajaxin kanssa. Hänellä on 4 vuoden kokemus PHP: stä ja 2 vuoden kokemus iniPhone-sovellusten kehittämisestä.