Mājas lapa » Kodēšana » Iesācēja ceļvedis uz Node.js (servera puses JavaScript)

    Iesācēja ceļvedis uz Node.js (servera puses JavaScript)

    Node.js - vienkāršos vārdos - ir servera puses JavaScript. Šajās dienās tā ir guvusi daudz buzz. Ja jūs esat dzirdējuši par to vai esat ieinteresēts mācīties un saņemt dažas rokas - šis amats ir jums.

    Tātad, kas tieši ir nepieciešams lietot JavaScript serverī? Lai padarītu Node.js jēdzienu skaidru, es vēlos to salīdzināt ar parastajām servera puses valodām, piemēram, PHP. Node.js izmanto notikumu balstīta servera izpildes procedūra nevis daudzpakāpju izpilde PHP.

    Lai to izskaidrotu tālāk, mēs runāsim par ideju kas ir Node.js kopā ar dažiem pakalpojumu sniedzēja ieteikumi un instalēšanas padomi. Nepieciešamas vidēja līmeņa zināšanas par JavaScript, jQuery un Ajax, bet mēs sniegsim arī piemērus, kā saprast visu lietu vieglāku un pat strādāt, tāpēc uzzināsim vairāk par Node.js!

    Aplūkosim lietu:

    Apsveriet tīmekļa vietni, kurā nepieciešams dinamiski ielādēt saturu no cita lēna servera. PHP jūs varat to izdarīt 2 veidos - to kodē vienkāršā failā un to kodē kā citu skriptu, tad izpildot to daudzpakāpju veidā.

    Pirmajā metodē, pat ja kods ir vienkāršs izpilde aptur kādu laiku vietā, kur piekļūst lēns tīmekļa serveris. Otrā metode ir vairāk optimizēta veiktspējas gadījumā bet ir grūti kodēt, un tai ir daudzpakāpju vadības pieskaitāmās izmaksas. Lieta ir līdzīga vairumam tīmekļa programmēšanas valodu, kas nav servera puses JavaScript, t.i., Node.js.

    Kāda ir atšķirība Node.js? Lai saprastu Node.js, jums ir jāpatur prātā JavaScript notikumu programmēšana pārlūkprogrammā. Mēs izmantojam to pašu tehnoloģiju. Tā vietā, lai izmantotu atsevišķu pavedienu, a funkcija ir pievienota finiša notikumam no “lēna Web servera piekļuve” iepriekš minēto, tādējādi jūs saņemsiet pilnīga funkcionalitāte optimizētajā otrajā opcijā, kas minēta iepriekš, bez jebkādām daudzceliņu virsgalēm.

    Darba sākšana ar Node.js

    Node.js ir JavaScript. Kāpēc mēs nevaram izmantot ar JavaScript saistīto funkcionalitāti JavaScript serverī? Šī doma varētu būt novedusi pie Node.js izstrādes.

    Tas nozīmē, ka galvenais Node.js izcēlums - tā ir asinhronas funkcijas, kas balstītas uz notikumiem. Tā izmanto notikumu cilpa nevis gaidīt I / O operācijas (piekļūt ārējam tīmekļa pakalpojumam, piekļūt aparatūrai).

    Node.js joprojām varēja izmantot tās apstrādes jaudu kad serveris gaida citu darbību. Tas padara Node.js mērogojams miljoniem vienlaicīgu savienojumu.

    Kā JavaScript darbojas serverī?

    Node.js darbojas v8 vidē - tas ir a virtuālā iekārta vai a JavaScript dzinējs kas darbojas ar JavaScript kodu, tāpēc hostēšanai nevar izmantot parastos tīmekļa mitinātājus. Jums būs vajadzīgi tie, kuriem ir v8 vide.

    Šeit ir daži ieteikumi par pakalpojuma Node.js pakalpojumu sniedzēju ieteikumiem:

    1. Mākoņu liešana
    2. Cloudnode
    3. DotCloud
    4. Duostack

    Node.js instalēšana

    Mezgls būs darbojas perfekti Linux, Macintosh un Solaris operētājsistēmās. Windows var to instalēt, izmantojot Cygwin emulācijas slāni. Neviens no Windows veidotajiem elementiem nav apmierinošs, bet joprojām ir iespējams iegūt kaut ko.

    1. iespēja: mezgla veidošana no avota.

    Izmantot veidot veidot un instalēt node.js (izpildiet tālāk norādītās darbības komandrindā). Git ir nepieciešams.

     git klons - 1.daļa: //github.com/joyent/node.git cd mezglu izrakstīšanās v0.4.11 eksporta JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / vietējais / mezgls padarīt veikt instalēšanu echo 'export PATH = $ HOME / vietējais / mezgls / bin: $ PATH' >> ~ / .profile echo 'eksports NODE_PATH = $ HOME / lokāls / mezgls: $ HOME / local / node / lib / node_modules' >> ~ / .profila avots ~ / .profile 

    2. iespēja: Node.js instalēšana no paketes

    Mac lietotājiem jūs varat instalēt Node.js kā paketi no https://sites.google.com/site/nodejsmacosx/, kas ir diezgan pašsaprotama.

    Testa mezgla uzstādīšana

    Lai pārbaudītu jūsu veiksmīgo mezglu instalāciju, mēs varam izmēģināt ļoti vienkāršu konsoles "Hello World" programmu. Izveidojiet failu ar nosaukumu "test.js"un tajā ierakstiet šādu kodu.

     var sys = pieprasīt ("sys"); sys.puts ("Hello World"); 

    Kodu skaidrojums:

    Tas ielādē sys klasi mainīgajā sys. Pēc tam tas izmanto sys objektu, lai veiktu konsoles uzdevumus. The sys.puts ir komanda, kas ir līdzīga cout C + +, lai, lai palaistu iepriekšminēto skriptu, dodieties uz komandu uzvedni un palaidiet to ar tālāk norādīto komandu:

     mezgls test.js 

    Ja jūsu instalācija ir veiksmīga, ekrānā jūs saņemsiet labo rezultātu pasaulē.

    HTTP servera izveide

    Tagad ir pienācis laiks izveidot "Hello World", izmantojot tīmekļa serveri, izmantojot Node.js. Lūk, ko mēs darīsim - mēs izveidot serveri, kas izvada a “Sveika pasaule” 8080 vietējā pieslēgvietā neatkarīgi no tā, kas ir URL, dodot jums priekšstatu par to notikumu ir.

    Šie kodi:

     var sys = pieprasīt ("sys"), my_http = nepieciešams ("http"); my_http.createServer (funkcija (pieprasījums, atbilde) sys.puts ("I kick kick"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hello World "); answer.end ();) klausīties (8080); sys.puts ("Servera darbība 8080"); 

    Kodu skaidrojums:

    Node.js interesantākā daļa ir tās notikumu plānošana. Lai izveidotu HTTP serveri, mums ir nepieciešams HTTP bibliotēka, tāpēc mēs ejam uz priekšu un pievienojam to my_http. Mēs izveidojam serveri pēc funkcijas:

     my_http.createServer (funkcija (pieprasījums, atbilde) ) klausīties (8080); 

    Tiek izpildīta pirmā argumenta funkcija ikreiz, kad 8080. portā tiek aktivizēts notikums, tā pati funkcija iesaka mezglam klausīties notikumu 8080. ostā. Lai to atklātu, esmu pievienojis a “Man bija kicked” ziņu, kas tiks parādīta konsoles ekrānā, kad tiek saņemts pieprasījums.

    The pieprasījums objekts satur visa informācija par servera pieprasījumu. Piemēram, tajā ir URL virkne. The atbildi objekts ir objekts apstrādā atbildi no servera. Vispirms mēs iestatām atbildes galveni kā a teksts / vienkāršs saturu, tad rezultātus “Sveika pasaule“, pēc tam pārtrauciet izejas plūsmu. 200 ir statusa atbilde.

    Labi, iepriekš minētais ir ļoti vienkāršs piemērs, bet mēs varam redzēt, ka jebkurš URL, ko mēs sniedzam pārlūkprogrammā tam pašam serverim, iegūst tādu pašu rezultātu kā “Sveika pasaule”.

    Vienkārša statiskā faila servera izveide

    Izveidosim vienkāršu statisku faila serveri nākamajā apmācībā.

    Šie kodi:

     var sys = pieprasa ("sys"), my_http = pieprasa ("http"), ceļš = pieprasa ("ceļš"), url = pieprasa ("url"), filesys = pieprasa ("fs"); my_http.createServer (funkcija (pieprasījums, atbilde) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); ceļš.exists (pilnīgs ceļš, funkcija (pastāv) ) if (! Yra) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found i"); response.end (); other filesys.readFile (full_path, "binary", funkcija (kļūda, fails) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (kļūda + "n"); response.end (); else response.writeHeader (200); atbildes rakstīšana (fails, "binārs"); answer.end ();););). klausīties (8080); sys.puts ("Servera darbība 8080"); 

    Kodu skaidrojums:

    Iepriekš minētais kods ir diezgan vienkāršs, mēs to apspriedīsim kā blokus.

     var sys = pieprasa ("sys"), my_http = pieprasa ("http"), ceļš = pieprasa ("ceļš"), url = pieprasa ("url"), filesys = pieprasa ("fs"); 

    Visas šīs bibliotēkas ir nepieciešamas programmai. Tās lietojums būs skaidrs šādā kodā.

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

    The pieprasījums objektam ir detalizēta informācija par pieprasījumu, kā mēs iepriekš apspriedām. Mēs izmantojam parsēt funkcijas, kuras esam iekļāvuši, lai iegūtu pathname no pieprasījuma URL. Pēc tam, kad ir saņemts nosaukums, mēs to sajaucam ar pašreizējās darba direktorijas ceļu, lai iegūtu pilnu faila ceļu..

    Lai pievienotos URL, mums ir funkcija, ko sauc par pievienoties ceļa bibliotēkā.

     path.exists (full_path, funkcija (pastāv)  

    Pēc pilnā ceļa iegūšanas mēs pārbaudām, vai ceļš pastāv no funkcijas pastāv. Pēc pārbaudes veikšanas atzvanīšanas funkcija tiek izsaukta un nodota kā otrais arguments.

     ja (! pastāv) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 nav atrasts"); answer.end ();  else filesys.readFile (full_path, "binary", funkcija (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"); err + "n"); response.end (); else response.writeHeader (200); response.write (fails, "binary"); response.end (););  

    Tagad zvanīšanas funkcijā, ja fails nav, mēs nosūtām404 Lapa nav atrasta"kļūda.

    Ja lapa ir atrasta, tad mēs izlasām failu lasiet failu funkcija failu sistēmā. Mēs varam redzēt arī atzvanīšanas funkciju lasiet failu funkciju, kas tajā noteikta. Ja faila nolasīšanas laikā nav kļūdu, tas tiks parādīts. Ja ir kļūda, statusa 500 tiek atgriezta ar kļūdas tekstu.

    Es arī iesaku iepriekšējās apmācības iesaiņošanas kodus funkcijā, lai to varētu izmantot nākamajā apmācībā vai turpmākai izmantošanai.

     var sys = pieprasa ("sys"), my_http = pieprasa ("http"), ceļš = pieprasa ("ceļš"), url = pieprasa ("url"), filesys = pieprasa ("fs"); my_http.createServer (funkcija (pieprasījums, atbilde) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); ceļš.exists (pilnīgs ceļš, funkcija (pastāv) ) if (! Yra) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 Not Found i"); response.end (); other filesys.readFile (full_path, "binary", funkcija (kļūda, fails) if (err) response.writeHeader (500, "Content-Type": "text / plain"); response.write (kļūda + "n"); response.end (); else response.writeHeader (200); atbildes rakstīšana (fails, "binārs"); response.end (););); my_http. createServer (funkcija (pieprasījums, atbilde) var my_path = url.parse (request.url) .pathname; load_file (my_path, atbilde);) klausīties (8080); sys.puts ("servera darbība 8080"); 

    Sekojiet līdzi !

    Tas ir viss. Ceru, ka tas dod jums labu ideju par Node.js. Nākamajā rakstā es jums parādīšu, kā ielādē un parāda Facebook numuru, izmantojot Node.js. Sekojiet līdzi!

    Redaktora piezīme: Šo ziņu raksta Geo Paul par Hongkiat.com. Geo ir neatkarīgs Web / iPhone izstrādātājs, kurš strādā ar PHP, Codeigniter, WordPress, jQuery un Ajax. Viņam ir 4 gadu pieredze PHP un 2 gadu pieredze iniPhone lietojumprogrammu izstrādē.