Algaja juhend Node.js'ile (serveri poolne JavaScript)
Node.js - lihtsate sõnadega - on serveripoolne JavaScript. Tänapäeval on see palju buzzi. Kui olete sellest kuulnud või olete huvitatud õppimisest ja käte pealevõtmisest - see postitus on teie jaoks.
Mis täpselt on vaja kasutada JavaScripti serveris? Node.js'i kontseptsiooni selgeks muutmiseks tahaksin seda võrrelda tavaliste serveripoolsete keeltega nagu PHP. Node.js kasutab sündmusel põhineva serveri täitmise protseduur selle asemel, et teostada PHP-s mitut lõiku.
Edasiseks selgitamiseks räägime selle ideest mida Node.js on koos mõnedega teenusepakkuja soovitused ja installi nõuanded. Nõutav on JavaScript, jQuery ja Ajax kesktaseme tundmine, kuid me anname teile ka näiteid, kuidas mõista kogu asja lihtsamaks ja isegi töötada, nii et saame rohkem teada Node.js kohta.!
Vaatleme juhtumit:
Vaatleme veebisaiti, kus peate sisu laadima dünaamiliselt teisest aeglasest veebiserverist. PHP-s saate seda teha kahel viisil - kodeeritakse see lihtsas failis ja kodeerida seda teise skriptina, siis selle teostamine mitmekordselt.
Esimeses meetodis, kuigi kood on lihtne täitmine peatub mõneks ajaks kohas, kus ligipääs aeglasele veebiserverile. Teine meetod on optimeeritakse jõudluse korral kuid see on raske kodeerida ja tal on mitmetahuline juhtimise üldkulud. Juhtum on sarnane enamiku veebi programmeerimiskeelte jaoks, välja arvatud serveripoolne JavaScript, s.o Node.js.
Mis vahe on Node.jsis? Node.js'i mõistmiseks peate meeles pidama JavaScripti sündmusel põhinev programmeerimine brauseris. Me kasutame siin sama tehnoloogiat. Eraldi niidi kasutamise asemel a funktsioon on lisatud finišivõistlusele selle “aeglane veebiserveri juurdepääs” eespool mainitud, seega saad täielik funktsionaalsus ülalkirjeldatud optimeeritud teises variandis ilma mitmemõõtmelise üldkuluta.
Node.jsiga alustamine
Node.js on JavaScript. Miks me ei saa kasutada kliendi JavaScripti sündmustel põhinevat funktsionaalsust serverisse? See mõte võib olla viinud Node.js'i arendamiseni.
See tähendab Node.js'i peamist esiletõstmist - see on sündmusel põhinev asünkroonne funktsioon. See kasutab sündmusahel I / O-operatsioonide ootamise asemel (juurdepääs välisele veebiteenusele, riistvara juurdepääs).
Node.js võib ikka veel kasutada oma töötlemisvõimsust kui server ootab mõnda muud toimingut. See muudab Node.js skaalautuvia miljoneid samaaegseid ühendusi.
Kuidas JavaScript töötab serveris?
Node.js töötab v8 keskkonnas - see on a Virtuaalne masin või a JavaScript-mootor mis käivitab JavaScripti koodi, nii et hostimiseks ei saa kasutada tavalisi veebihostoreid. Sul on vaja neid, kellel on v8 keskkond.
Siin on mõned pakkuja soovitused Node.js-i hostimiseks:
- Cloud Foundry
- Cloudnode
- DotCloud
- Duostack
Node.js'i installimine
Sõlm töötavad suurepäraselt Linuxi, Macintoshi ja Solaris operatsioonisüsteemidega. Windowsis saate selle Cygwin emulatsioonikihi abil installida. Ükski Windowsi ülesehitustest ei ole rahuldav, kuid ikka on võimalik midagi käivitada.
1. võimalus: sõlme sõlmimine allikast.
Kasutage tegema
node.jsi ehitamiseks ja installimiseks (käivitage järgmine käsurealt). Git on vajalik.
git-kloon - 1. echo 'export PATH = $ HOME / local / node / bin: $ PATH' >> ~ / .profile kaja eksport NODE_PATH = $ HOME / local / node: $ HOME / local / node / lib / node_modules '>> ~ / .profiili allikas ~ / .profile
2. võimalus: Node.js-i installimine paketist
Maci kasutajate jaoks saate Node.jsi installida paketina aadressilt https://sites.google.com/site/nodejsmacosx/, mis on üsna iseenesestmõistetav.
Testimise sõlme paigaldamine
Eduka Node installimise kontrollimiseks saame proovida väga lihtsat konsooli "Hello World" programmi. Looge fail nimega "test.js"ja kirjutage sellele järgmine kood.
var sys = vaja ("sys"); sys.puts ("Hello World");
Koodi selgitus:
See laadib sys
klassi muutujaks sys
. Seejärel kasutatakse seda sys
konsooli ülesannete täitmiseks. The sys.puts
on käsk sarnane cout
C ++-s, nii et ülaltoodud skripti käivitamiseks minge käsureale ja käivitage see alltoodud käsu abil:
sõlme test.js
Kui teie installimine on edukas, saad ekraani heli maailma väljundi.
HTTP-serveri loomine
Nüüd on aeg luua veebiserveri kaudu "Hello World", kasutades Node.js. Siin on see, mida me teeme - me luua server, mis väljastab a “Tere, Maailm” sadama 8080 lokaalsesse asukohta olenemata sellest, mis URL on, andes sulle idee, mida sündmus on.
Koodid:
var sys = vaja ("sys"), my_http = vaja ("http"); my_http.createServer (funktsioon (päring, vastus) sys.puts ("I kick kick"); response.writeHeader (200, "Content-Type": "text / plain"); response.write ("Hello World "); answer.end ();) kuulata (8080); sys.puts ("Serveri töö 8080");
Koodi selgitus:
Kõige huvitavam osa Node.js'is on selle sündmusel põhinev programmeerimine. HTTP-serveri loomiseks vajame seda HTTP-raamatukogu, nii et me läheme edasi ja lisame selle kasutades my_http
. Me loome serveri funktsiooni järgi:
my_http.createServer (funktsioon (päring, vastus) ) kuulata (8080);
Esimese argumentina antud funktsioon täidetakse iga kord, kui sündmus käivitub sadamas 8080, nii funktsioon ise soovitab sõlmel kuulata sündmust sadamas 8080. Selle avastamiseks olen lisanud a “Ma viskasin” teade, mis kuvatakse konsooli ekraanil iga taotluse saamisel.
The taotluse
objekt sisaldab kogu teave serverile tehtud taotluse kohta. Näiteks sisaldab see URL-i stringi. The vastus
objekt on see objekt haldab serverilt saadud vastust. Kõigepealt seadistame vastuse päise kui a tekst / tavaline
sisu, seejärel väljundeid “Tere, Maailm“, seejärel lõpetage väljundvoog. 200 on oleku vastus.
Noh, ülaltoodud on väga lihtne näide, kuid me näeme, et mis tahes URL, mida me brauseris sama serveri jaoks anname, saame sama väljundi nagu “Tere, Maailm”.
Lihtse staatilise failiserveri loomine
Looge järgmises juhendis lihtne staatiline failiserver.
Koodid:
var sys = vaja ("sys"), my_http = vaja ("http"), tee = vaja ("path"), url = vaja ("url"), filesys = vaja ("fs"); my_http.createServer (funktsioon (päring, vastus) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); tee nr. ) if (! Yra) response.writeHeader (404, "Sisu-tüüp": "text / plain"); vastuse kirjutamine ("404 Ei leitud"); filesys.readFile (full_path, "binary", funktsioon (err, file) if (err) response.writeHeader (500, "Sisu-tüüp": "text / plain"); vastuse kirjutamine (viga + "n"); response.end (); else response.writeHeader (200); vastuse kirjutamine (fail, "binaarne"); response.end ();););). kuula (8080); sys.puts ("Serveri töö 8080");
Koodide selgitus:
Ülaltoodud kood on üsna lihtne, arutame seda plokkidena.
var sys = vaja ("sys"), my_http = vaja ("http"), tee = vaja ("path"), url = vaja ("url"), filesys = vaja ("fs");
Kõik need raamatukogud on programmi jaoks vajalikud. Selle kasutamine on järgmine kood.
var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);
The taotluse
objektil on üksikasjad, mida oleme varem arutanud. Me kasutame pars
URL-i klassi funktsioon, mille oleme lisanud pathname
päringu URL-i. Pärast nime saamist ühendame selle praeguse töökausta tee, et saada faili täielik tee..
URL-ide ühendamiseks on meil funktsioon, mida nimetatakse liituda
tee teegis.
path.exists (full_path, funktsioon (olemas)
Pärast täieliku teekonna saamist kontrollime, kas teekond on funktsiooni poolt olemas on olemas
. Pärast kontrolli sooritamist kutsutakse tagasi tagasihelistamisfunktsioon kui teine argument.
kui (! olemas) response.writeHeader (404, "Content-Type": "text / plain"); response.write ("404 ei leitud"); response.end (); else filesys.readFile (full_path, "binary", funktsioon (err, file) if (err) response.writeHeader (500, "Content-Type": "text / plain"); err + "n"); response.end (); else response.writeHeader (200); vastuse kirjutamine (fail, "binaarne"); vastus.end (););
Nüüd, kui fail puudub, saadame tagasihelistamisfunktsioonis ""404 Lehte ei leitud"viga.
Kui lehte leitakse, loeme me faili readFile
funktsiooni failisüsteemis. Samuti näeme tagasihelistamisfunktsiooni readFile
funktsiooni, mis on seal määratletud. Kui faili lugemisel ei ole viga, kuvatakse see. Vea ilmnemisel tagastatakse vea tekstiga olek 500.
Soovitan ka eelmise juhendaja pakenduskoode funktsiooni, et saaksite seda kasutada järgmisel juhendamisel või tulevikus.
var sys = vaja ("sys"), my_http = vaja ("http"), tee = vaja ("path"), url = vaja ("url"), filesys = vaja ("fs"); my_http.createServer (funktsioon (päring, vastus) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); tee nr. ) if (! Yra) response.writeHeader (404, "Sisu-tüüp": "text / plain"); vastuse kirjutamine ("404 Ei leitud"); filesys.readFile (full_path, "binary", funktsioon (err, file) if (err) response.writeHeader (500, "Sisu-tüüp": "text / plain"); vastuse kirjutamine (viga + "n"); response.end (); else response.writeHeader (200); vastuse kirjutamine (fail, "binaarne"); response.end (););); my_http. createServer (funktsioon (päring, vastus) var my_path = url.parse (request.url) .pathname; load_file (my_path, vastus);) kuulata (8080); sys.puts ("Server Running 8080");
Hoia häälestatud !
See on kõik. Loodan, et see annab teile hea idee Node.js. Järgmises artiklis näitan teile, kuidas Facebooki laadimise ja kuvamise arv Node.js'i kasutamisel. Hoidke häälestatud!
Toimetaja märkus: See postitus on kirjutatud Geo Paul Hongkiat.com jaoks. Geo on sõltumatu veebi / iPhone arendaja, kes naudib koostööd PHP, Codeigniter, WordPress, jQuery ja Ajax. Tal on 4-aastane kogemus PHP-s ja 2-aastane kogemus telefonirakenduste arendamisel.