Kezdő útmutató a Node.js-hoz (kiszolgálóoldali JavaScript)
Node.js - egyszerű szavakkal - szerveroldali JavaScript. Napjainkban rengeteg buzzot kap. Ha már hallottál róla, vagy érdekel a tanulás és a kezek megszerzése - ez a hozzászólás az Ön számára.
Tehát pontosan mi van a JavaScript használatának szükségessége a szerveren? Ahhoz, hogy a Node.js fogalmát egyértelművé tegyem, azt szeretném összehasonlítani a szokásos szerveroldali nyelvekkel, mint a PHP. A Node.js egy eseményalapú kiszolgáló végrehajtási eljárása inkább a többszálú végrehajtás PHP-ben.
Hogy tovább elmagyarázzuk, meg fogjuk beszélni az ötletet mi a Node.js néhányan együtt tárhelyszolgáltatói javaslatok és telepítési tippek. A JavaScript, a jQuery és az Ajax közbenső szintű ismerete szükséges, de példákat is adunk Önnek, hogy könnyebben megérthesse az egész dolgot, és még jobban dolgozhasson, így megismerjük a Node.js-t.!
Tekintsünk egy esetet:
Tekintsünk olyan webhelyet, ahol dinamikusan kell betölteni a tartalmat egy másik, lassú webkiszolgálóról. A PHP-ben kétféleképpen tehetjük meg - egy egyszerű fájlba kódolja és más szkriptként kódolja, azután végrehajtása többszálú megközelítéssel.
Az első módszerben, bár a kód egyszerű a végrehajtás egy ideig megáll azon a ponton, ahol a lassú webkiszolgáló elérhető. A második módszer jobban optimalizálható teljesítmény esetén de nehezen kódolható, és többszálú menedzsment fölött van. Az eset hasonló a legtöbb webes programozási nyelv esetében, a szerveroldali JavaScript-n kívül, azaz a Node.js.
Mi a különbség a Node.js-ban? Annak érdekében, hogy megértsük a Node.js-ot, meg kell szem előtt tartani a JavaScript esemény alapú programozása a böngészőben. Ugyanezt a technológiát használjuk itt. Külön szál használata helyett a funkció a csatolt eseményhez kapcsolódik a “lassú webkiszolgáló elérése” fent említett, így megkapja a teljes funkcionalitás a fent említett optimalizált második opcióban, többszálú felső rész nélkül.
A Node.js használatának megkezdése
A Node.js JavaScript. Miért nem használhatjuk a kliens JavaScript alapú eseményeit kiszolgálóra? Ez a gondolat a Node.js fejlesztéséhez vezethetett volna.
Ez azt jelenti, hogy a Node.js fő kiemelése - ez esemény alapú aszinkron funkciók. Használ egy eseményhurok az I / O műveletek várakozása helyett (külső webszolgáltatás elérése, hardver elérése).
A Node.js még mindig használja ki a feldolgozási teljesítményét amikor a szerver más műveletet vár. Ez teszi a Node.js-t skálázható egyidejű kapcsolatok millióinak.
Hogyan fut a JavaScript egy kiszolgálón?
A Node.js egy v8 környezetben működik - ez egy Virtuális gép vagy a JavaScript motor ami a JavaScript kódot futtatja, így a tárhelyhez nem használhatja a szokásos webtárhelyeket. Szükséged lesz azokra, akiknek van v8 környezet.
Íme néhány szolgáltatói javaslat a Node.js tárhelyére:
- Cloud Foundry
- Cloudnode
- DotCloud
- Duostack
A Node.js telepítése
A csomópont lesz tökéletesen működik Linux, Macintosh és Solaris operációs rendszereken. Windows rendszeren a Cygwin emulációs réteg segítségével telepíthető. A Windows egyik felépítése sem kielégítő, de még mindig lehetséges valami futni.
1. lehetőség: Csomópont építése a forrásból.
Használat csinál
node.js létrehozása és telepítése (a következő parancsot hajtsa végre a parancssorban). Git szükséges.
git clone - depth 1 git: //github.com/joyent/node.git cd csomópont git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / node make make install echo 'export PATH = $ HOME / local / csomópont / bin: $ PATH' >> ~ / .profile echo export NODE_PATH = $ HOME / local / csomópont: $ HOME / local / node / lib / node_modules '>> ~ / .profile forrás ~ / .profile
2. lehetőség: A Node.js telepítése a csomagból
Mac felhasználók számára telepítheti a Node.js-ot a https://sites.google.com/site/nodejsmacosx/ csomagból, amely eléggé önmagában magyarázható.
Vizsgálati csomópont telepítése
A sikeres csomópont telepítés ellenőrzéséhez egy nagyon egyszerű konzol "Hello World" programot próbálhatunk ki. Létrehoz egy "" nevű fájlttest.js"és írja be a következő kódot.
var sys = szükséges ("sys"); sys.puts ("Hello World");
Kód magyarázat:
Ez betölti a sys
változóvá sys
. Ezután a sys
objektum a konzol feladatok végrehajtásához. A sys.puts
egy olyan parancs, mint a cout
C ++-ban, így a fenti parancsfájl futtatásához menjen a parancssorba, és futtassa azt az alábbi parancs segítségével:
node test.js
Ha a telepítés sikeres, akkor a képernyőn megjelenik egy hello world output.
HTTP-kiszolgáló létrehozása
Most itt az ideje, hogy a Node.js. Itt az, amit fogunk tenni - mi létrehoz egy kiszolgálót, amely a “Helló Világ” a 8080-as port portáljához függetlenül attól, hogy az URL-cím melyik ötletet ad neked esemény jelentése.
A kódok:
var sys = szükséges ("sys"), my_http = szükséges ("http"); my_http.createServer (funkció (kérés, válasz) sys.puts ("I kicked"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hello World "); response.end ();). (8080); sys.puts ("Kiszolgáló fut 8080-on");
Kód magyarázat:
A Node.js legérdekesebb része az eseményalapú programozás. Ahhoz, hogy létrehozzunk egy HTTP-kiszolgálót, szükségünk lesz rá HTTP könyvtár, így tovább megyünk és hozzáadjuk my_http
. A függvény által létrehozott szervert:
my_http.createServer (függvény (kérés, válasz) ). hallgatni (8080);
Az első argumentumként megadott függvény végrehajtásra kerül minden alkalommal, amikor egy esemény bekapcsolódik a 8080-as porton, így maga a funkció azt javasolja, hogy a csomópont meghallgasson egy eseményt a 8080-as porton. Ennek észleléséhez hozzáadtam a “Megrúgtam” üzenet jelenik meg a konzol képernyőjén, amikor egy kérés érkezik.
A kérés
objektum tartalmaz minden, a szerverre tett kérésről szóló információt. Például tartalmazza az URL karakterláncot. A válasz
az objektum az kezeli a kiszolgáló válaszát. Először a válasz fejlécét állítsuk be: a text / plain
tartalom, majd kimenetek “Helló Világ“, majd fejezze be a kimeneti áramot. 200 az állapot válasz.
Nos, a fenti egy nagyon egyszerű példa, de láthatjuk, hogy bármi URL, amit ugyanazon a kiszolgálón a böngészőben adunk, ugyanazt a kimenetet kapjuk, mint a “Helló Világ”.
Egyszerű statikus fájlszerver létrehozása
Hozzunk létre egy egyszerű statikus fájlkiszolgálót a következő bemutatón.
A kódok:
var sys = demand ("sys"), my_http = szükséges ("http"), path = required ("path"), url = szükséges ("url"), filesys = szükséges ("fs"); my_http.createServer (funkció (kérés, válasz) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); elérési útvonalak (teljes_útvonal, funkció (létezik) ) if (! Yra) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Nem található"); answer.end (); else filesys.readFile (full_path, "binary", függvény (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (hibás + "n"); response.end (); else response.writeHeader (200); response.write (fájl, "bináris"); response.end ();););). hallgatni (8080); sys.puts ("Kiszolgáló fut 8080-on");
Kódok magyarázata:
A fenti kód elég egyszerű, blokkként fogjuk megvitatni.
var sys = demand ("sys"), my_http = szükséges ("http"), path = required ("path"), url = szükséges ("url"), filesys = szükséges ("fs");
Mindezek a könyvtárak szükségesek a programhoz. Használata egyértelmű lesz a következő kódban.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);
A kérés
az objektumnak a kérés részletei vannak, amint azt korábban megvitattuk. Használjuk a elemez
az URL-osztály azon funkciója, amelybe beillesztettük pathname
a kérés URL-jét. Miután megkapta a pathname-t, összefűzzük azt az aktuális munkakönyvtár útvonalával, hogy megkapjuk a fájl teljes elérési útját.
Az URL-ekhez való csatlakozáshoz van egy függvényünk csatlakozik
az útvonalkönyvtárban.
path.exists (teljes_elérési_út, funkció (létezik)
Miután megkaptuk a teljes elérési utat, ellenőrizzük, hogy az útvonal létezik-e a függvény által létezik
. Az ellenőrzés befejezése után a visszahívási függvényt második érvként hívják és továbbítják.
ha (! létezik) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 nem található"); Response.End (); else filesys.readFile (full_path, "binary", függvény (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"); err + "n"); response.end (); else response.writeHeader (200); response.write (fájl, "bináris"); response.end (););
Most, hogy a visszahívási függvényben a fájl nem létezik, küldünk egy ""404 Oldal nem található"hiba.
Ha az oldal megtalálható, akkor a fájlt a readfile
funkció a fájlrendszerben. Láthatjuk a visszahívási funkciót is a readfile
az ott definiált függvény. Ha nincs hiba a fájl olvasásakor, akkor megjelenik. Hiba esetén az 500-as állapot visszaáll a hiba szövegével.
Azt is javaslom, hogy az előző bemutató csomagolási kódjait egy függvénybe lehessen csomagolni, hogy azt a következő bemutatón vagy későbbi használatra használhassa.
var sys = demand ("sys"), my_http = szükséges ("http"), path = required ("path"), url = szükséges ("url"), filesys = szükséges ("fs"); my_http.createServer (funkció (kérés, válasz) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); elérési útvonalak (teljes_útvonal, funkció (létezik) ) if (! Yra) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Nem található"); answer.end (); else filesys.readFile (full_path, "binary", függvény (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (hibás + "n"); response.end (); else response.writeHeader (200); response.write (file, "binary"); response.end (););); my_http. createServer (függvény (kérés, válasz) var my_path = url.parse (request.url) .pathname; load_file (my_path, válasz);) hallgatni (8080); sys.puts ("Kiszolgáló fut 8080-on");
Maradjon velünk !
Ez minden. Remélem, ez egy jó ötlet a Node.js. A következő cikkben megmutatom, hogyan kell a Facebook betöltése és megjelenése a Node.js használatával jár. Maradjon velünk!
A szerkesztő megjegyzése: Ezt a bejegyzést írta Geo Paul Hongkiat.com részére. A Geo független web / iPhone fejlesztő, aki a PHP, a Codeigniter, a WordPress, a jQuery és az Ajax munkáival dolgozik. 4 éves tapasztalattal rendelkezik a PHP-ben és 2 éves tapasztalattal rendelkezik a fejlesztés fejlesztésében.