Úvodná » kódovanie » Príručka pre začiatočníkov na Node.js (JavaScript na strane servera)

    Príručka pre začiatočníkov na Node.js (JavaScript na strane servera)

    Node.js - jednoduchými slovami - je JavaScript na strane servera. V dnešnej dobe sa dostalo veľa bzučania. Ak ste o ňom počuli, alebo máte záujem o to, aby ste sa učili a získali nejaké ruky - tento príspevok je pre vás.

    Takže čo presne je potreba používať jazyk JavaScript na serveri? Aby bolo koncept Node.js jasný, rád by som to porovnal s bežnými jazykmi na strane servera, ako je napríklad PHP. Node.js používa procedúra spúšťania serverov založená na udalostiach skôr ako viacvláknové spustenie v PHP.

    Aby sme to vysvetlili ďalej, budeme hovoriť o myšlienke čo je Node.js spolu s niektorými návrhy poskytovateľov hostingu a tipy na inštaláciu. Vyžaduje sa znalosť strednej úrovne jazyka JavaScript, jQuery a Ajaxu, ale budeme tiež poskytovať príklady, ktoré vám umožnia ľahšie pochopiť celú vec a dokonca pracovať na nej, a tak sa dozvieme viac o Node.js!

    Pozrime sa na prípad:

    Zvážte webovú lokalitu, v ktorej musíte dynamicky načítať obsah z iného webového servera, ktorý je pomalý. V PHP môžete to robiť dvomi spôsobmi - kódovanie v jednoduchom súbore a kódovanie ako ďalší skript, potom vykonávať ho vo viacvláknovej metóde.

    V prvej metóde, aj keď je kód jednoduchý spustenie sa na chvíľu pozastaví v mieste, kde je prístupný pomalý webový server. Druhá metóda je optimalizované v prípade výkonu ale je ťažké kódovať a má viacúrovňovú riadiacu réžiu. Prípad je podobný pre väčšinu webových programovacích jazykov iných než je JavaScript servera, t.j. Node.js.

    Aký je rozdiel v Node.js? Aby ste pochopili Node.js, musíte mať na pamäti Programovanie založené na udalostiach jazyka JavaScript v prehliadači. Túto technológiu používame tu. Namiesto použitia samostatného vlákna, a funkcia je pripojená k udalosti dokončenia z “pomalý prístup k webovým serverom” uvedených vyššie, dostanete plnú funkčnosť v optimalizovanej druhej možnosti uvedenej vyššie bez použitia viacnásobnej réžie.

    Začíname s aplikáciou Node.js

    Node.js je jazyk JavaScript. Prečo nemôžeme využiť funkciu JavaScript založenú na udalostiach v klientovi na server? Táto myšlienka mohla viesť k vývoju Node.js.

    To znamená, že hlavným vrcholom Node.js - to je asynchrónne funkcie založené na udalostiach. Používa udalosť namiesto čakania na I / O operácie (prístup k externej webovej službe, prístup k hardvéru).

    Node.js by mohol byť stále využitie svojej spracovateľskej sily keď server čaká na akúkoľvek inú operáciu. Tým vzniká Node.js škálovateľné k miliónom súbežných pripojení.

    Ako spustiť JavaScript na serveri?

    Node.js funguje v prostredí v8 - to je a virtuálny prístroj alebo a JavaScript engine ktorý spúšťa kód JavaScript, takže pre hosťovanie nemôžete používať obyčajných webových hostiteľov. Budete potrebovať tie, ktoré majú v8 prostredí.

    Tu sú niektoré návrhy poskytovateľov pre hosting Node.js:

    1. Cloud Foundry
    2. Cloudnode
    3. DotCloud
    4. Duostack

    Inštalácia Node.js

    Uzol bude pracujú perfektne na operačných systémoch Linux, Macintosh a Solaris. V systéme Windows ho môžete nainštalovať pomocou emulačnej vrstvy Cygwin. Žiadna z zostáv v systéme Windows nie je uspokojivá, ale stále je možné niečo spustiť.

    Možnosť 1: Budovanie uzla zo zdroja.

    použitie urobiť na vytvorenie a inštaláciu node.js (na príkazovom riadku vykonajte nasledujúce kroky). Vyžaduje sa Git.

     git klon - dept 1 git: //github.com/joyent/node.git cd uzol git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / uzol make make install echo 'export PATH = $ HOME / miestny / uzol / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / .profile source ~ / .profile 

    Možnosť 2: Inštalácia balíka Node.js z balíka

    Pre používateľov systému Mac môžete nainštalovať súbor Node.js ako balík z adresy https://sites.google.com/site/nodejsmacosx/, čo je dosť jasné.

    Testovanie inštalácie uzla

    Ak chcete skontrolovať úspešnú inštaláciu Node, môžeme vyskúšať veľmi jednoduchý konzolový program "Hello World". Vytvorte súbor s názvom "test.js"a do neho napíšte nasledujúci kód.

     var sys = vyžadovať ("sys"); sys.puts ("Hello World"); 

    Vysvetlenie kódu:

    Načíta sa sys triedy do premennej sys. Potom používa sys objekt na vykonávanie konzolových úloh. sys.puts je príkaz podobný príkazu cout v C ++, takže ak chcete spustiť skript vyššie, prejdite na príkazový riadok a spustite ho príkazom nižšie:

     uzol test.js 

    Ak je vaša inštalácia úspešná, dostanete svetový výstup na obrazovke.

    Vytvorenie HTTP servera

    Teraz je čas vytvoriť "Hello World" prostredníctvom webového servera pomocou Node.js. Tu je to, čo urobíme - my vytvorte server, ktorý vyvedie a “Dobrý deň svet” do lokálneho hostiteľa na portu 8080 bez ohľadu na to, čo je adresa URL, čo vám dáva predstavu, čo udalosť je.

    Kódy:

     var sys = vyžadovať ("sys"), my_http = vyžadovať ("http"); my_http.createServer (funkcia (požiadavka, odpoveď) sys.puts ("Mám kopnutý"); response.writeHeader (200, "Content-Type" "); response.end ();), počúvať (8080); sys.puts ("Server beží na 8080"); 

    Vysvetlenie kódu:

    Najzaujímavejšou súčasťou programu Node.js je programovanie založené na udalostiach. Na vytvorenie HTTP servera potrebujeme Knižnica HTTP, tak sme sa posunuli dopredu a pridať ju pomocou my_http. Server vytvoríme podľa funkcie:

     my_http.createServer (funkcia (požiadavka, odpoveď) ) počúvanie (8080). 

    Funkcia zadaná ako prvý argument sa vykoná pri každom spustení udalosti v porte 8080, tak samotná funkcia navrhuje uzlu počúvať udalosť v portu 8080. Aby som to zistil, pridal som “Bol som kopnutý” správu, ktorá sa zobrazí na obrazovke konzoly pri každom prijatí žiadosti.

    žiadosť objekt obsahuje všetky informácie o žiadosti, ktorá bola vykonaná na serveri. Napríklad obsahuje reťazec URL. odpoveď objekt je objekt, ktorý spracováva odpoveď zo servera. Najprv sme nastavili hlavičku odpovede ako a text / plain obsah, potom výstupy “Dobrý deň svet“, potom skončí výstupný prúd. 200 je stavová odpoveď.

    No, vyššie uvedené je veľmi jednoduchý príklad, ale vidíme, že akékoľvek URL, ktoré dávame v prehliadači pre ten istý server, dostaneme rovnaký výstup ako “Dobrý deň svet”.

    Vytvorenie jednoduchého statického súborového servera

    V nasledujúcej príručke vytvoríme jednoduchý statický súborový server.

    Kódy:

     var sys = vyžadovať ("sys"), my_http = vyžadovať ("http"), path = vyžadovať ("cesta"), url = vyžadovať ("url"), filesys = require ("fs"); my_http.createServer (funkcia (požiadavka, odpoveď) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists ) if (! existuje) response.writeHeader (404, "Content-Type": "text / plain") filesys.readFile (full_path, "binárne", funkcia (chyba, súbor) if (err) response.writeHeader (500, Content-Type " "\ n"); response.end (); inak response.writeHeader (200); response.write (súbor, "binárne"); počúvať (8080); sys.puts ("Server beží na 8080"); 

    Vysvetlenie kódov:

    Vyššie uvedený kód je veľmi jednoduchý, budeme o ňom hovoriť ako bloky.

     var sys = vyžadovať ("sys"), my_http = vyžadovať ("http"), path = vyžadovať ("cesta"), url = vyžadovať ("url"), filesys = require ("fs"); 

    Všetky tieto knižnice sú potrebné pre program. Jeho použitie bude jasné v nasledujúcom kóde.

     var moje_path = url.parse (request.url) .pathname; var plná cesta = path.join (process.cwd (), my_path); 

    žiadosť objekt má podrobnosti o požiadavke, ako sme už prediskutovali. Používame analyzovať funkcia triedy URL, ktorú sme zahrnuli na získanie pathname adresy URL žiadosti. Po získaní názvu cesty sa spojíme s cestou aktuálneho pracovného adresára, aby sme získali úplnú cestu k súboru.

    Pre spojenie adries URL máme funkciu nazvanú pripojiť v knižnici cien.

     path.exists (full_path, funkcia (existuje)  

    Po získaní celej cesty skontrolujeme, či cesta existuje funkciou existuje. Po skončení kontroly sa volá funkcia spätného volania a prechádza ako druhý argument.

     ak (! existuje) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 nenájdený \ n"); Response.End ();  iný filesys.readFile (full_path, "binárny", funkcia (err, súbor) if (err) response.writeHeader (500, "Content-Type" ()); else answer.writeHeader (200); response.write (súbor, "binárne"); response.end (););  

    Teraz v funkcii spätného volania, ak súbor neexistuje, pošleme správu "Stránka 404 sa nenašla" chyba.

    Ak je stránka nájdená, potom čítame súbor readfile v súborovom systéme. Môžeme tiež vidieť funkciu spätného volania pre funkciu readfile definovaná tam samotná. Ak nie je žiadna chyba pri čítaní súboru, zobrazí sa. Ak sa vyskytne chyba, vráti sa stav 500 s textom chyby.

    Tiež odporúčam baliť kódy predchádzajúceho tutoriálu do funkcie, aby ste ho mohli použiť v ďalšom výučbe alebo pre budúce použitie.

     var sys = vyžadovať ("sys"), my_http = vyžadovať ("http"), path = vyžadovať ("cesta"), url = vyžadovať ("url"), filesys = require ("fs"); my_http.createServer (funkcia (požiadavka, odpoveď) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); path.exists ) if (! existuje) response.writeHeader (404, "Content-Type": "text / plain") filesys.readFile (full_path, "binárne", funkcia (chyba, súbor) if (err) response.writeHeader (500, Content-Type " "\ n"); response.end (); else response.writeHeader (200); response.write (súbor, "binary"); createServer (funkcia (požiadavka, odpoveď) var my_path = url.parse (request.url) .pathname; load_file (my_path, response);)) listen (8080) sys.puts ("Server Running on 8080"); 

    Zostaňte naladení !

    To je všetko. Dúfam, že toto vám dáva dobrú predstavu o Node.js. V ďalšom článku vám ukážem, ako na to načítať a zobraziť číslo na Facebooku používa Node.js. Zostaňte naladení!

    Poznámka redaktora: Tento príspevok je napísaný používateľom Geo Paul pre Hongkiat.com. Geo je nezávislý vývojár na web / iPhone, ktorý má prácu s PHP, Codeigniter, WordPress, jQuery a Ajax. Má 4 roky skúseností v PHP a 2 roky skúseností s vývojom aplikácií iniPhone.