>> Lahat ng karapatan.
Kaya ang cliffhanger ay, kung ano ang node.js bilang alam mo ito ngayon?
Kahit ano? Oo?
>> Ito ay tulad ng isang balangkas ng pagsusulat ng JavaScript
mga application kalawak -
>> OK, na gumagana.
>> - Alam ko tulad ng karaniwang ginagamit ng tulad ng -
o ng isang bagay sa iyo Maaari gawin ay tulad ng -
[Hindi marinig Puna]
>> OK mabuti.
Oo, sa gayon ito ay isang balangkas.
Ito ay isang engine sa pamamagitan ng kung saan mo Maaari execute ng JavaScript code
server site.
Ito ay maaaring ibig sabihin ng pinakasimpleng ng mga bagay
tulad ng pagsusulat ng isang command line script hindi sa Python o Bash
o Ruby o PHP, ngunit lamang sa sarili nito JavaScript
at e-execute ito sa isang nagbi-blink na prompt command.
O maaari mong aktwal na tumakbo ito sa loob ng isang web server.
At sa katunayan sa loob node.js mismo,
ito framework ay ang maramihang ng mga library kasama na
sa HTTP server built-in.
Kaya, maaari mong aktwal na magsulat isang server dahil kakailanganin namin makita
sa sandali lamang, sobrang madali sa pamamagitan lamang sa pag-unawa ng kaunti
ng HTTP at TCP at port.
At maaari mong mga itlog ng isda ng pakikinig web server nang hindi Apache,
walang Microsoft IIS.
Nang walang anumang iba pang mga naka-install na software,
Maaari mo lamang mga itlog ng isda na ito at makinig sa karamihan ng anumang port
sa system na pinapayagan ka upang.
Kaya kaso at mga puntos, hayaan mo akong pumunta at buksan
up halimbawang ito, ang server-0.js.
Kaya mapapansin na ang tuktok ng ang file na ito, isang bungkos lamang
hindi kawili-wili ng mga komento, at pagkatapos ay mayroong dalawang
ng kinatawan linya ng code na gagamitin namin makita recurringly.
Kaya, nakakakuha var HTTP nangangailangan "HTTP".
Kaya naka-built-in sa node.js ' imprastraktura ay ang maramihang
ng mga module na kung saan ay talagang lamang aklatan at lahat ng bagay ay uri
ng pangalan space na may ang natatanging identifier
tulad ng isang ito ay "HTTP".
Kaya na tulad ng maraming mga wika tulad ng Java at C + +
at C, lamang kapag ikaw mag-import o isama
o sa node magsalita nangangailangan isang module na gumagana ang mga piraso nito.
At ang lahat ng memory Nangangailangan makakuha ng load
sa RAM at samakatuwid ay ginagamit.
Kaya, ikaw uri ng load ito mga aklatan o mga module on demand.
Nangangahulugan ito sige at nangangailangan
para sa programang ito ang HTTP library,
at sumangguni sa na library sa pamamagitan ng paraan ng isang variable na tinatawag na HTTP.
Ngunit ito simbolo kaliwang dati Na-tinatawag anumang bagay, foo,
bar, baz, hindi mahalaga.
Kaya hindi tulad ng C + + at Java at C kung saan kapag kailangan mo
o i-import ang isang library, ito uri lamang
ng nagiging globally-access,
node.js na module na higit pang mahigpit na namespace.
Kaya na sariling - na pag-andar maa-access lamang sa sandaling ito
sa pamamagitan ng paraan ng pangalan ng variable na ito.
Hindi ka maaaring magsimula lamang mga paraan ng pagta-type na umiiral
sa ito ng tama ng isang paraan na kung saan ay marahil mabuti,
dahil pagkatapos ang iyong namespace Hindi makakuha ng halos bilang cluttered
bilang ng maraming mga wika.
Ang lahat ng mga karapatan, kaya ngayon bilang mga karaniwang Iminumungkahi, paglikha ng isang HTTP server
bilang Jonathan [ipinapalagay spelling] ay posible ay literal
kasing simple ng pagtawag sa lumikha pamamaraan server sa loob
ng HTTP module.
Kaya, ito ay bumabalik ang reference
sa ilang mga uri ng web server.
Ito ang dumating sa Apache, hindi kinakailangang bilang mabigat na timbang.
Isa na ito ay isang maliit na mas simple.
At ngayon, mayroon akong upang lamang lamang gawin ang ilang mga bagay.
Kaya una sa lahat, ipaalam sa akin mag-scroll pababa sa ilalim dito
at laktawan ang handler pamamaraan para sa isang sandali.
At mapapansin ang ganitong linya ng code,
saan server.on ay mahalagang ay nangangahulugan server -
makinig tulad ng sa jQuery code,
makinig para sa isang kaganapan tinatawag kahilingan
at tumagal lamang ng isang hula kung ano ang dapat kong gawin
kapag ang isang kaganapan ng kahilingan sunog sa server.
Oo?
>> Tawagan ang handler function.
Kaya, literal na isakatuparan ang code na-reference
sa pamamagitan ng ito variable at tunay hindi isang variable sa simbolo dito,
ano ang simbolo na nagre-refer sa?
Well, ang pangalang ito ng aandar hanggang dito
at humahawak sa malas tumatagal ng dalawang argumento.
Bakit dalawang? Well, kung ikaw lang basahin ang mga walang papeles
para sa partikular na module, mo ay sinabi na ang mga handler
na iyon ay maaaring tawagin ay magiging pumasa sa mga hindi bababa sa dalawang argumento,
ang pagsangguni sa mga kahilingan,
at sa loob ng kahilingan namin Literal na nangangahulugan na kahilingan ng HTTP.
Kaya, ang lahat ng mga HTTP header na maaari mong isipin
mula sa simula ng semestre o ilang naunang klase
o karanasan tulad ng makuha ang linya host linya at
at linyang User-Agent, ang lahat ng na ay encapsulated at higit pa sa loob
ng ang hiling na ito bagay.
At ang mga bagay na tugon ay pinagsunod-sunod para sa mga papalabas na data.
Kaya, mayroon ka ng isang reference sa isang Bagay na pupuntahan daan sa iyo
upang magpadala ng impormasyon pabalik sa ang browser sa pamamagitan ng pagtawag sa mga pamamaraan
sa huli na argumento tinatawag Res para sa pagtugon.
Ngunit ito ma-tinatawag foo o bar, ito lamang ang mga convention.
Kaya ngayon, anong gagawin ko?
Well, lumilitaw na loob ng ito sobrang simple web server
na ako ang pagpapatupad, ako pagpunta sa gawin ang sumusunod.
Pupunta ako sa magsulat ng HTTP header na may code ng katayuan na 200,
200 kahulugan ang OK, ang lahat ay mabuti.
At pagkatapos, ako pupunta upang pumasa sa sa malas.
Ano ang uri ng data ng pangalawang argumento sa kanan ulo?
>> Ito ay isang bagay?
>> Ito ay isang bagay na may kung gaano karaming mga pindutan at mga halaga?
Lamang ng isa sa bawat isa, kanan, isa key na halaga ng pares.
Kaya, 'uri ng nilalaman'.
At ang tanging dahilan Ako ng pag-quote ito dito ay
dahil ang gitling ay maaaring maging conflated para sa isang simbolong minus
o ang isang bagay tulad na.
Kaya, Kailangan ko bang quote ito dito, bahagyang paso o double quotes.
Ngunit muli karaniwang tularan
sa JavaScript code ay madalas na single quote mga araw na ito,
colon at pagkatapos ay ang halaga.
Kaya, ito ay isa lamang sa tinatawag nang gayon uri isip.
Ito ay isang HTTP header na literal ng pagpunta
upang maging nilalaman uri ng gitling tutuldok teksto slash plain na pupuntahan
na maipadala mula sa server sa browser
kaya na alam ng browser kung upang patakbuhin ito bilang Raw teksto
o HTML o bilang isang imahe o ng isang pelikula
o isang flash file o ano pa man.
Ngayon, kung saan ko talagang gusto upang ipadala sa katawan ng pahina?
Well, sa pamamagitan lamang ng pagbabasa ang dokumentasyon
para sa object na tugon sa loob ng library.
Nakikita ko na mayroong karapatan pamamaraan at na tumatagal ng isang string,
siguro iba pang mga bagay ngunit Nagnais isang string.
At ang mga string ay kung ano ang sabihin ang lahat sa browser.
Sa kasong ito super nito simple, nito kumusta mundo,
ngunit ito ay maaaring maging mga opne bracket, html, malapit bracket,
bukas bracket ulo, malapit bracket at iba pa,
ito ay maaaring Raw html.
Ngunit kami Pinananatili ang halimbawa simple sa pamamagitan lamang pagsigam
out ang pinakasimpleng ng mga uri ng isip na kung saan ay arguably teksto / plain.
At pagkatapos ay response.end lamang Nangangahulugan isara ang koneksyon
at magpadala ng lahat ng bagay Mayroon akong uri ng buffered loob
ng bagay na ito pabalik sa browser.
Ako tapos na. Ayos lang.
Kaya, ang huling bagay Ako paggawa down na dito
at ito ay medyo arbitrary at nilalayong maging cool na,
ay ako na nagsasabi sa mga server sa wakas upang makinig
sa isang tiyak na TCP sa pamamagitan ng default na port.
Isipin mula sa simula ng klase na serbisyo -
o karaniwang sa iyong katauhan kilalanin ito sa pamamagitan ng mga numero,
AD ay ang web, 443 ay batay HTTP mga website, 22 ay SSH, 21 ay FTP
at 1337 ay isa lamang arbitrary subalit ito ay mas mataas kaysa sa 1024
na nangangahulugan sa pinaka- system, maaari ko ba itong gamitin
nang hindi nangangailangan super mga pribilehiyo ng gumagamit.
Kaya ito ay maginhawa lamang.
Ngunit 8080 ay nasa off - isang karaniwang isa, 8088, talagang kahit ano malaki
sa libu-libong bilang karaniwan ngunit ito ay isa lamang sa higit pang mga piling tao.
Ang lahat ng mga karapatan, kaya kung ano ang mangyayari kapag ako talaga tumakbo na ito?
Well, hindi ko lang bisitahin ang ang pahina sa isang browser.
Ang file na ito ay tinatawag na server-0.js.
Dahil muli, Apache ay ngayon sa labas ng larawan
para sa huli kalahati ng mga kurso.
Kung gusto kong web server, kailangan kong isulat
at pagkatapos ay magpatakbo ng mga web server na ito.
Ngunit ito ay lumiliko out na JavaScript parehong sa gilid ng client
at ang gilid ng server ay isang kahulugan ng wika.
Kaya, ang kailangan ko ay ng interpreter.
Kaya it's - kung igiit na tumakbo node at pagkatapos ay server-0.js,
Maaari ko o hindi maaaring makita ilang output depende
sa kung anong mga aklatan Isinama ko, walang mukhang nangyayari ito.
Ngunit ipaalam sa akin pumunta sa isang browser at ipaalam sa akin pumunta
sa parehong IP address ng aking CS50 mga kliyente.
Ngunit ito ay maaaring lamang pati na rin maging ang aking Mac
o pindutin ang aking PC at pagkatapos ay ilagay.
Iyon talaga kamukha Apache.
Iyan ay tulad ng sa direktoryo naglilista kami ay tumingin
sa sa unang kalahati.
Kaya, ano ang gagawin ko mali?
Oo.
[Hindi marinig Puna]
Mismong, tama?
Kaya, Apache ay nakikinig pa rin sa ang default na port 80.
Kahit na maaari kong baguhin iyon, Maaari ko ba itong i-off ang lahat ng sama-sama
ngunit ito ay tumatakbo pa rin.
Ngunit ang mga guys maaari ay tiyak na magkakasamang mabuhay.
Mayroon akong lamang ang ilalagay tutuldok 1337 at pagkatapos siguro
o marahil hindi isang slash sa sa dulo upang ma-access ang port
na sa server na ito ay tumatakbo sa.
At ngayon nakikita ko na kumusta, mundo ay sumagot.
At maaari kong pindutin ang reload na bilang maraming beses hangga't gusto ko,
ito ay paghahatid up pa rin ng isang pahina.
Sa katunayan kung buksan up ako Chrome inspector, pumunta sa network
at pagkatapos ay i-reload ang buong pahina,
mapansin na sa katunayan ito ay ang kahilingan na ipinadala.
Kung tumingin ako sa Raw pinagmulan,
mapansin ay nagpapadala ng aking browser lahat ng mga bagay.
At pagkatapos ay ang tugon mula sa sobrang simple ang server.
May mga 200.
Kung ito ay hindi masyadong mababa sa screen,
doon ay ang uri ng nilalaman.
At pagkatapos ay node.js uri ng mga awtomatikong
para sa akin Idinagdag ang petsa at lahat ng iba pang mga bagay-bagay
na mga browser ay karaniwang inaasahan.
Kaya, sabihin makita ni lamang maliit na check katinuan.
Hayaan akong bumalik sa code sa server-0.js at ipaalam sa akin -
sa tuwing pumupunta ako sa ang handler,
hayaan mo akong sabihin lamang console.log.
('Nagkaroon kami ng isang bisita!').
Hindi ko na kailangang mag-recompile o anumang bagay tulad na,
ito ay isang kahulugan ng wika.
Kaya ngayon, hayaan mo akong bumalik sa ang pahina, i-reload ang isa, dalawa,
tatlong beses at pumunta i-back sa aking window.
At ngayon makita ko ito.
Well na kakaiba, Nakakakita ako ng anim na linya.
Kawili-wiling mga web mga bagay na walang kabuluhan, bakit ginawa Nakakuha ako ng anim na kahilingan hindi tatlo?
Oo?
[Hindi marinig Puna]
Oo. Kaya, bilang ng maaaring alam mo ang maliit nakababagod icon sa tuktok
ng mga bar ng browser na marami
ng mga website na ginamit baka maging isang Harvard tagaytay,
maaari itong maging isang logo ng kumpanya o anumang bagay tulad na.
Kaya, mga browser mga araw na ito-uri-uriin
ng presumptuously gumawa ng isang karagdagang HTTP na kahilingan
sa halos bawat website na mong bisitahin check kung mayroong
sa pamamagitan ng default ng isang file tinatawag favicon.ico
sa parehong directory bilang ang file na iyong hiniling.
At kung gayon, naglalagay ito ang icon doon.
Kaya lahat kami nakikita ay eksaktong na.
At sa katunayan, sabihin makita kung kami Maaari makita ito sa halip na uri
out lang, 'Nagkaroon kami ng isang bisita'.
Hayaan akong sige at output.
At kong malaman lamang na ito mula sa ng pagtingin sa mga papeles.
Mayroong isang ari-arian sa loob ng ang kahilingan bagay na tinatawag na URL
kung saan ang mangyayari sa maging ang landas
na ay hiniling sa aktwal na URL.
Kaya, kung i-restart ko ang server sa pamamagitan lamang ng muling pagpapatakbo node
sa server-0.js at ngayon ko ang isang ito, dalawang,
tatlong at bumalik dito.
May ito ay.
Slash ay kung ano ang ko - ang hiniling na tao
sa favicon.ico ay ano ang browser ay
presumptuously humihiling.
Ngunit ang punto ay hindi kaya magkano ang mga bagay-bagay favicon
ngunit kung paano ang server ay pinatatakbo.
Oo?
>> Bakit nag na mayroon sa ilang mga kahilingan?
>> Bakit ang mayroon sa - sa pamamagitan ng likas na katangian ng kung paano gumagana ang HTTP.
Kaya, maaari lamang humiling ng HTTP isang file sa isang pagkakataon.
Mga Browser ay maaaring maging matalino na mga araw na ito
at panatilihin ang TCP bukas na koneksyon.
Kung mo kinuha CS143 o pangkalahatang pamilyar sa networking,
sa gayon ay maaari kang makakuha ng kahusayan ang makakakuha
sa pamamagitan ng pagsunod sa network socket bukas
sa paggawa ng maramihang HTTP mga kahilingan serially sa ibabaw nito
ngunit ang mga ito ay isang file sa bawat hiling.
Kaya, kung bumisita ka sa isang bagay tulad ng -
Ibig sabihin ko maaari naming pumunta sa karamihan ng anumang mga website.
Kung pupunta ka sa - na makuha ang ipaalam inspector ang Chrome dito.
Maaaring makakuha punan pinaka- ng pahina.
Pumunta sa tab na network at pumunta sa www.cnn.com.
At kapag bumisita ka cnn.com, homepage nito -
iyong browser sa halip atrociously Ginagawang - pagbibilang pa rin.
OK. Hindi bababa sa 289 HTTP mga kahilingan muli at muli.
At ito ang dahilan kung bakit kapag bumisita ka lalo na tinapa mga website,
ang mga ito ay mabagal upang i-load dahil sa lahat
ng mga asset sila ay naglo-load.
Kaya, mukhang 298.
Maaaring may ilang mga Ajax pagpunta sa sa puntong ito o ilang
ng mga ari-arian ay lamang mababa.
Kaya, ang bawat isa sa mga ay isang indibidwal na kahilingan ng pagpunta pabalik
at pabalik, papunta at pabalik.
At iyon ang dahilan kung bakit mas maaga, kahit na bagaman uri ng namin usapan
tungkol dito medyo fancifully kung saan inilagay mo ang script tag,
talagang gumagawa ng isang pagkakaiba kapag mayroon kang -
ito ay nagsisimulang magkaroon ng maraming ng trapiko at ng maraming
ng mga file na hinihiling.
At sa bawat isa sa ito ay kumakatawan marahil ng isang imahe, isang media file,
isang JavaScript na file, CSS file o mga katulad.
Kaya, kami ay mayroon ng hanggang sa ilang 4 megabytes lamang
upang tumingin sa balita ngayong araw.
Magandang katanungan.
Ayos lang.
Kaya, ano ang ilan sa mga bagaman ang upsides?
Mag-right, alam namin kung paano gumawa mga webpage na may PHP.
At marami sa inyo ay dumating in sa ang klase ng pag-alam Django
at Python o daang-bakal na may Ruby.
Kaya, bakit kailangan namin ng isa pang wika at imprastraktura?
Ano ang node.js lalo magandang sa kung alam mo?
[I-pause]
Ang ilang mga bagay?
Walang? Oo?
>> Relaying mga mensahe.
>> Kaya, relaying mga mensahe.
Kaya na totoo at ito ay totoo para sa isang mas teknikal na dahilan
at na node.js at talaga JavaScript ay partikular na
mahusay na angkop sa asynchronous code,
kung kung saan ka lumikha ang maling haka-haka
ng paggawa ng maramihang mga bagay nang sabay-sabay.
Kaya, kahit na nasa talaga nangyayari serially,
sa katunayan sa karamihan ng mga kaso, JavaScript parehong client side
at server side ay single na may sinulid.
Aling kung ikaw ay pagkuha ng 161 o kahit na 61 ay nangangahulugan na -
ng programang ito alam,
ang interpreter maaari nang literal lamang gawin ang isang bagay nang sabay-sabay.
Ngunit ito ay hindi mahusay para sa isang bagay tulad ng isang web server
kung saan maaaring mayroon ka dose-dosenang o daan-daan o marahil libu-libo
ng mga user sa lahat ng sinusubukan upang ma-access ang iyong webpage
sa pinakadulo parehong oras.
At pa, na iminumungkahi na paghawak ng mga ito ng isa
pagkatapos ng iba pang mga pagkatapos ng iba pang lalo na kung ilang
ng mga kahilingan bilang Nakita namin sa CNN maaaring mangailangan ng paghahatid
hanggang 300 mga file bago mo kahit na makakuha sa susunod na user
ng gustong makita ang mga balita sabi.
Node.js ay mas mahusay na naaangkop para sa mga kapaligiran tulad na.
Dahil kung ano ang mangyayari ay anumang mabagal tumakbo ang proseso
tulad ng pagbabasa ng file mula sa disk o querying isang database o pakikipag-usap
sa ilang iba pang mga network server,
na may gawi na magkaroon latency, tama?
Kung ikaw mismo ang kumuha ng 61 o 161 lalo na ang lahat ng ganitong uri
ng paligid mga serbisyo ay may posibilidad na maging magkano ang mas mabagal
kaysa sa paggawa ng anumang bagay sa loob ng ang parehong RAM at ang parehong CPU
na sabihin sa kasong ito ang server ay aktwal na tumatakbo.
Ngunit kung ano ang maganda tungkol sa node.js ay na maaari mong -
at JavaScript sa mas pangkalahatang ay na maaari mong gawin ang isang bagay
at pagkatapos ay sabihin, "Hmm, ito ay pagpunta
gumawa ako ng ilang millisecond o kahit ng ilang segundo.
Hayaan akong uri ng tinidor na-off, " ngunit ito ay hindi isang tunay na proseso.
At pagkatapos ay kapag ito ay tapos na paggawa na mabagal tumakbo ang proseso
tulad ng daklot mga hilera mula sa isang database o nagbabasa ng isang file. html
mula sa disk, ay ito makabalik sa akin sa halip
kaysa sa akin sa maghintay para dito.
Kaya, upang gumawa ng mga ito mas malinaw.
Ito ang aking paraan ng paggawa ng ito sa higit pang mga pamilyar na.
Ang lahat ng mga karapatan, sa gayon ito ay ang Kalugin Shack sa parisukat.
Ito ay uri ng isang karaniwang tularan
para nagpapaliwanag asynchronicity.
Ito ay talagang isang magandang Halimbawa dahil iling Shack
at ang masarap na Burger ay lubha pabagalin para sa kung ano ang ginagawa nila.
Ngunit ang punto ay na ang mga ito talagang magandang sa pagkuha ng mga order
at pagkuha ng iyong pera pagkatapos kung saan naghihintay ka para sa iyong pagkain.
Kaya, ito ay talagang isang mas mahusay na disenyo kaysa sa mga alternatibong.
Dahil ipagpalagay ituturo sa iyo sa isang tindahan ganito at ba kayong
sa harapan ng linya at mo inilagay ang iyong order at nais mong
sa Burger, bilang pinakamahusay na makakaya ko sabihin, ito ay tumatagal ng hindi bababa sa limang
o higit pang mga minuto upang talagang makakuha ng isang Burger.
Kaya, magiging uri ng isang masamang modelo ng negosyo
kung habang ikaw ay naghihintay para sa iyong Burger, Alice [ipinapalagay spelling]
at Bob [ipinapalagay spelling] at Charlie [ipinapalagay spelling]
at ang iba ay queuing sa likod mo
at ikaw ay literal na pag-block ang linya naghihintay para sa iyong pagkain.
Kaya malinaw naman, sa iling Shack
at iba pang fast food mga lugar huwag gawin ito,
ginagawa nila ang isang bagay tulad na ito.
Bigyan ang mga ito sa iyo ng isang buzzer.
At sila ay isang uri ng magpadala sa iyo sa iyong paraan.
At tawagan ka pabalik sila sa pamamagitan ng paggawa ng ito maliit na bagay vibrate
o flash upang makuha ang iyong pansin.
Kaya, ito ay literal na kung ano?
Isang bagay na tulad ng node.js gumagana.
Kung node.js o JavaScript mas pangkalahatang paraan ay ginagamit
at ang programmer ay sapat na smart
upang mapagtanto, "Alam mo kung ano?
Anuman ang kailangan kong gawin kanan dito ay maaaring tumagal ng ilang numero
ng millisecond o segundo.
Alam mo kung ano?
Hayaan akong magpatuloy at hindi tumawag ito synchronously -
"Na ay pagharang ng tao ang iba sa linya, "-
ipaalam sa akin sige at uri ng tumabi
at tawagan lang ang aking sarili pabalik
kapag na mahaba ang pagtakbo operasyon ay kumpleto na. "
At tumawag sa likod ng kurso ay alluding sa kasong ito
sa isang callback function, isang reference sa isang pagpupukol ng code
na makakuha ng pinaandar kapag ang iyong Burger ay handa na,
halos tulad ng bagay na ito ay may ilang mga uri ng pag-andar built-in
na nagsisimula ito vibrating o paghiging kapag ito ay oras na para sa iyo
upang tawagin pabalik sa sa harap ng linya.
Kaya, ano ang ginagawa ito ibig sabihin sa tunay na mga termino?
Well, mayroon kaming upang gumagana ang aming mga paraan up.
Kaya, ipaalam sa akin sige at unang gawin ito.
Sa server-1.js, ipaalam sa akin gawing simple muna ang code
upang maaari naming kumuha sanggol hakbang patungo sa isang mas nakakahimok ang problema.
Ito ang eksaktong parehong programa na ako ay nagsulat bago.
Ngunit ano ay nabago?
Mayroong uri ng isang bahagyang sintaktik pagkakaiba
sa pagitan ng mga ito at bersyon 0 ng ilang sandali ang nakalipas.
Ano jumps out sa sa iyo kung isipin?
Oo Cynthia [ipinapalagay spelling]?
[Hindi marinig Puna]
Oo. Kaya ngayon, mayroon kaming isang linya ng pag-andar na ang pumasa in
Nakuha namin ang mapupuksa ang mga uri
ng uselessly na may pangalang handler function.
Walang silbi lamang sa na bago kahit na pagtawag ito sa isang lugar,
Hindi ko talagang kailangan upang aksaya ng panahon na nagbibigay ito ng isang pangalan
at ginagawa itong mas mahirap basahin tuktok code sa ibaba.
Kaya, ipinahahayag ni lamang inline ipaalam ay isang hindi nakikilalang function.
At ako paggawa ng dalawang iba pang mga bagay.
Ako sa paggawa ng mas mahusay na paggamit ng tuldok pagtatanda.
Kaya tulad ng sa jQuery, ng maraming node mga pamamaraan ay maaaring chained magkasama.
Kaya na sa sandaling tapos ka na sa pagtawag isang bagay, hindi mo na kailangang
upang maghintay sa isang bagong linya at tawagan ang ibang paraan,
maaari kang chain lamang ang mga ito nang sama-sama.
At kaya sa paraang ito, kaya namin talaga higpitan ito up.
Kaya, ito ay literal isang web server sa limang mga linya
ng kabuuang code hindi tulad ng mga -
hindi tulad ng kung ano ang puwede karaniwan mong kailangang gawin upang itakda ang isang bagay up.
Kung pumunta ako sa server 2 ngayon, ni gawin ito ipaalam.
Sa server 2 - talagang sabihin bumalik sa na server 2.
Buksan up async-0.js Sabihin ngayon at tugunan ang problema na sa kamay.
Kaya unang, sabihin pumunta Magpatuloy at bukas
up async-0.js sa browser.
Kaya async-0, hayaan mo akong pumunta i-back sa browser.
Pindutin ang reload.
At ngayon, ito ang uri ng mensahe ng error.
Sa katunayan ako nakakakita ng isang 500 sa inspector ng Chrome.
Ngunit ipaalam sa akin nang mas tiyak humiling hello.txt.
OK. Kaya, parang ito upang gumana.
Kaya async-0.js Mukhang hindi maglingkod up ng isang bagay para sa slash.
Ito ay walang mga default na file na suporta.
Ngunit kung ako tahasan humiling hello.txt,
na mukhang susuportahan.
Bakit na?
Well, kung ano ang nawala ko dito
at tapos ay ipinatupad super simpleng web server
na nagpapakita kung saan asynchronicity ay maaaring maging kapaki-pakinabang.
At iyon ay ipinatupad tulad ng mga sumusunod.
Una, ako gamit ang HTTP module muli,
ngunit din FS na malamang ang ibig sabihin ay?
Sa pangkalahatan sa CS, file system.
OK file system.
Samakatuwid balik FS, file system.
Ang lahat ng mga karapatan, kaya kung ano ay ito magbibigay sa akin?
Pag-andar na may kaugnayan sa mga file tulad ng nagsisimula pa lumipas,
pagbubukas ng mga file, pagsulat mga direktoryo, pagbabasa mga direktoryo
at ang lahat ng na uri ng mga bagay-bagay.
Kaya ngayon napansin, ang code na ito ay pareho tulad ng dati,
lumikha ng server, pagpasa sa isang hindi nakikilalang function.
Ito ay uri ng arbitrary.
Ito ay hindi isang napaka- secure na web server.
Sa katunayan, maaari mong ma-access ang karamihan ng anumang file sa aking hard drive
o sa server matapang magmaneho sa pamamagitan ng e-execute ang code na ito
dahil ako nang walang taros lamang sa pag-aakala na pupuntahan ko
upang grab kahit anong user hiniling sa URL.
At pupuntahan ko Prefix ito sa tuldok
nang sa gayon ay marginally ako pagiging ligtas
sa pamamagitan ng sinasabi ng kahit anong file na maaari nilang kahilingan ay sa hindi bababa sa simula
sa kasalukuyang direktoryo.
Siyempre mayroong banta dito.
'Sanhi kung ang mga ito sa halip isama kung ano?
Sa kanilang path, maaari sila uri ng gumawa sa paligid na masyadong.
Dot, tuldok, i-right?
Kaya, kung ang gumagamit ilagay lamang tuldok, tuldok sa URL, sa teorya,
maaari silang magsimulang pagkuha aking - at sabihin ang file na password.
Kaya, ito ay hindi ginawa upang ma-secure mo,
ito ay sinadya upang maging simple.
Kaya dito, mayroon akong isang variable na ay ang pagdudugtong ng tuldok
na kung saan ay naroroon direktoryo at ang kahilingan URL
na nakita natin dati ay kung tulad ng pag-iwa o / hello.txt.
Kaya ngayon, nakakakuha ito ng kaunti pa kawili-wili.
Una, mapapansin ibaba.
Ako pakikinig sa parehong port tulad ng dati.
Kaya ang tunay na kawili-wili trabaho ay nasa loob ng dito.
Ang bawat oras na ang isang kahilingan ay sa pamamagitan ng kalikasan
ng code na ito, kung ano ang aking ginagawa?
Ako sa pagtawag file pamamaraan nabasa na file system,
pagpasa sa path na gusto kong basahin.
At ngayon, ito ay kung ano ang kawili-wili dito,
ito ay sa pamamagitan ng pagpapatupad sa asynchronous na pamamaraan.
Hindi ka maaaring makakuha ng isang pagbalik halaga mula nabasa na file.
Sa abiso katunayan, mayroong walang mga kaliwete expression
sa kaliwa ng nabasa na file.
Hindi ito nagbabalik ng halaga.
Sa halip, tawag ito ng callback gumana kapag ito ay handa na
upang bigyan ka ng likod ng isang sagot.
Kaya muli upang maging malinaw, samantalang sa nakalipas na panahon,
sa maraming mga programming wika, kung gusto mo
basahin ang isang case file sa punto PHP,
file salungguhit makakuha ng guhitan sa ilalim nilalaman,
mayroon kang isang kaliwang expression sa lahat ng mga halaga pagkatapos -
bago ang katumbas lagdaan, nangangahulugan na ikaw ay magtatalaga sa
upang variable na ang pagbalik halaga ng na-andar.
Maaari mong gawin na sa node.js, ngunit karaniwan ay mayroon kang
upang tawagan ang tahasang hindi sabaysabay mga bersyon ng mga pag-andar gusto,
Sa tingin ko ito basahin sync file o pag-sync mabasa ang file.
Nakalimutan ko kung paano sila na may pangalang ito.
At iyon ay magbibigay sa ka ng isang halaga return.
Ngunit kung ang file ay sa ilang mga remote file system
o disk lamang ang natural mabagal, Maaaring tumagal ng 10 millisecond
o 2 segundo para sa file na upang aktwal na bumalik.
Samantala, walang ibang web mga bisita ay paging serbisiyo
sa pamamagitan ng iyong websit.
Ikaw ay pag-block.
Iyon ay kung ano ang tawag dito pag-block sa IO, input / output.
Kaya dito, ito ay mas mas matalinong.
Dahil kung ano node.js ay pagpunta
na gawin sa oras ng pagbibigay-kahulugan ay ang mga sumusunod,
ito ay pagpunta sa tumawag sa ang pamamaraan nabasa na file,
subukan sa isa up ang file kung sino ang Nakakuha isang path na tinukoy sa pamamagitan ng halaga P.
At pagkatapos ay kung at kapag handa na upang bigyan ka pabalik ang mga nilalaman
ng file P, ito ay tumawag sa isang function na ang lagda ay
sa pamamagitan ng convention ang mga sumusunod na.
Dalawang mga argumento, ang una sa na kung saan ay marahil isang Error sa bagay,
capital E, kung ito ang isang bagay na tinatawag ng error o Walang bisa
kung walang tulad error.
At ang pangalawang argumento - maglaan isang hula - ay magiging kung ano?
Ito ay tinatawag na malinaw naman data ngunit kung ano ang higit pang mga concretely data?
>> Mga Nilalaman?
>> Ang mga nilalaman ng hello.txt sa halimbawa na nakuha ko
hanggang sa aking browser ng ilang sandali ang nakalipas.
Kaya sa ibang salita upang mabasa ang file at marami node.js function
tulad ng sa huwag bumalik mga halaga.
Tawagan nila callbacks at pumasa
sa mga callbacks kung ano ang gagawin naging ayon sa kaugalian ang
bumalik halaga.
Ang bentahe ng ang paraan na ito ay
na maaari mong tawagan mabasa ang file isang T0.
Ang function na callback ay maaaring hindi na matawag isa tumiktak mamaya
kaya upang makipag-usap sa T, ito Maaaring na tinatawag na isang T1000,
isang libong ticks sa ibang pagkakataon.
Ngunit ang punto ay na ang mga nalalabing bahagi ng code sa file na ito,
kung anumang gagawin agad ipatupad habang node.js
at habang ang file system figure out kung paano basahin ang
file na iyon at makakuha ng ito-back sa iyo.
Kaya kang lumikha ng ito -
kaya epektibo ang maling haka-haka
ng paralelismo habang pagpapaalam mas mabagal tumakbo ang mga proseso ay hindi
harangan ang mga mahalagang bagay-bagay, ang bahagi na servicing mga gumagamit.
Kaya, paano ko panghahawakan namin ito?
Ito ay isang napaka-pangkaraniwang node.js tularan.
At mayroong paraan lamang upang gawing simple ito ay gagamitin namin makita bago kahabaan.
Ako unang naka-check kung Error ay hindi null.
Kaya, kung ito ay hindi hindi totoo pagkatapos ay nagkaroon ng error.
Hindi ko alam kung ano iyon ay, siguro ang file ay hindi umiiral.
Hindi ko kinailangang pahintulot.
Pathname ay mali.
Anumang bilang ng mga bagay maaaring magkamali.
Para sa ngayon, ako ng pagpunta sa nagkataon ibalik ang 500
na kung saan ay panloob na error sa server.
May nangyaring mali.
Hindi ko talagang pakialam upang mag-diagnose ito.
Kaya, sabihin na lamang hayaan ang user na ito ay sira.
At pagkatapos, ako pupunta gawin res.end,
at ito ay shorthand notation.
Isipin na huling oras ginawa ko res.write
at pagkatapos ay ginawa ko res.end.
Kung gusto mo lamang magpadala ng isang linya ng output,
maaari mong gawin lamang ang lahat ng ito sabay-sabay may res.end may isang argument,
at na pupuntahan magpadala ano naman ang mensahe ng error ay
sa loob ng bagay na ito sa browser.
Ito ay medyo arcing isipin ng ilang sandali ang nakalipas.
Wala akong palagay kung ano ito Nakalaan lamang ito sa unang tingin.
Ngunit kapag aking hiniling isang file na ay hindi umiiral -
oops, kailangan namin upang tumakbo ang server muli.
Kailan ko hiniling ang isang file na hindi umiiral, EISDIR,
kaya isang bagay tungkol sa ito pagiging direktoryo,
kung gagawin ko ang ilang mga random string doon,
sa malas ay nangangahulugan na ang file ay hindi kahit na umiiral.
At iyon ay dahil ang aking code ay nagre sinasabi na magsulat
out anuman ang Raw Mensahe ng error ay,
kaya hindi masyadong user friendly na ngunit hindi bababa sa ako sa paghawak ng mga ito.
Iba Pa, kung ito ay hindi isang error kung ano ang aking ginagawa?
Parehong bagay tulad ng dati maglaway ang isang 200 OK, isang plain -
teksto / plain uri ng isip at pagkatapos ay sabihin ang lahat ng data.
At iyon ang dahilan kung bakit ako nakakakuha ng mga nilalaman ng hello.txt na lang
upang makumpirma kung Tiningnan ko sa hello.txt,
ito ay literal lamang kumusta, mundo.
At kung binago ko ito kumusta, mundo, i-save ang file,
muling patakbuhin ang server, i-reload ang pahina.
Ngayon, nakukuha ko ang bersyon na iyon.
Kaya, na hindi ko talaga lang reimplemented isang server ng web
bilang ay umiral para sa maraming taon ngunit ang paggamit node.js.
Ngunit maaari naming gawin ito kahit na higit pa nang malinis.
Hayaan akong magbukas ng mga async-1.js.
Ngayon, napansin ako ng pagdaragdag isa pang module oras na ito,
sa malas ang module na path.
Ngayon, ito ay isang magandang pagkakataon upang tumingin
sa kung ano ang dokumentasyon kamukha.
Node.js ay babasahin.
Tulad ng PHP sa palagay ko ay talagang kaakit-akit magandang
at tuwid forward.
Kung pumunta ako sa node.js at Google at maghanap ng mga node.js path,
kung ano ang makikita mo ang karaniwang ay isang direktang link sa isang URL
na isang sandali ang nakalipas ko bang ilagay up dito.
Kaya / api ay ang opisyal na lugar upang pumunta para sa dokumentasyon.
At ano ang makikita mo sa tuktok
ng opisyal na dokumentasyon na node ni ay ang lahat ng mga pamamaraan at
o mga pag-aari sa loob ng ang partikular na module,
isa sa kung saan ay tinatawag na sumali.
At sumali ay ang lingkod ng function na pupuntahan payagan ako
upang hindi mag-abala sa lahat ng mga plus.
At ito ay ang idinagdag bonus bilang makikita mo
mula sa docks ay mayroon din normalizes ang mga nagresultang path.
Kaya, kung ang gumagamit o mayroon kang mga tuldok o tuldok tuldok o ng anumang kumbinasyon
ng mga uri ng mga kamag-anak path, kabilang sa mga upsides
ng sinalihan na pamamaraan ay na ito ang nangyayari upang linisin ang lahat na up
at bigyan ka ng isang canonical daanan nang walang anumang
ng mga tuldok o tuldok na tuldok.
Kaya, ito ay isang magandang bagay sa pangkalahatang para sa seguridad ng hindi bababa sa
kung gumagamit ka ng pagsuri sa bumalik ng halaga na hindi ako
sa ganitong partikular na simpleng kaso.
Subalit ko nais na gamitin ito.
Kaya, ngayon lumikha ako ng isang path kaunti pa-program
may path.join sa halip ng Hilaw na pagdudugtong.
Kaya, na ang isang ilan mas malinis kaysa dati.
At mapansin ngayon ako sa pagiging isang kaunti pa kaysa intelligent
kaysa nang walang taros lamang subukan na basahin ang mga file,
Pupunta ako sa aktwal na tumawag fs.stat.
Kaya, kung hindi ka pamilyar
na may mababang antas ng C mga pag-andar at C, kahit na PHP.
Ang isang pulutong ng mga library ay may naaayos na istatistika babalik ito ng function
mahalagang mga istatistika sa isang file, ang laki ng file,
ang mga pahintulot, ang pangalan at mga bagay tulad na,
at rin nang kataon lamang kung Umiiral na o hindi ang file,
at kung ito ay isang file o direktoryo
o symbolic link o ibang bagay.
Kaya ngayon mapapansin, ako ay fs.stat pagtawag.
At pagkatapos ay tila ayon sa dokumentasyon,
Dapat kong makabalik Error sa bagay
o sinundan Walang bisa sa pamamagitan ng isang bagay na stats.
Ngunit ng suriin ito ipaalam, node.js.fs.
Narito ang file dokumentasyon ng sistema.
Hayaan akong maghanap ng mga stats.
Mayroong isang mas marami ng mga pag-andar dito.
Oops, na naaayos na istatistika ng pag-sync, fs.stat.
Kaya dito, ito ay asynchronous stats (2).
Iyon ay nangangahulugang kung ikaw tandaan mula sa pangunahing pahina,
kabanata 2 ng pangunahing pahina,
na nangangahulugan na ito ay literal lamang ng isang node pagpapatupad
ng mababang antas na function ng sistema naaayos na istatistika.
Kaya, ang callback ay makakakuha ng dalawang mga argument, error at naaayos na istatistika
kung saan naaayos na istatistika ay isang fs.stats bagay.
Kaya hayaan makita ng kung ano ito sa bagay na ay dapat na hitsura.
I-click ng mga hyperlink Hayaan at nakikita ko na.
Ang mga stat ng bagay ay naglalaman ng sa malas ilang mga paraan lingkod,
ay file, ay direktoryo, ay ng grupo ng mga iba pang mga bagay.
Ito ay ang "ay" file na pinapahalagahan ko tungkol sa partikular na kasong ito.
Kaya dito pumunta ako.
Kung nagkaroon ng error, at pagkatapos ay hayaan magpyansa sa akin lamang oras na ito
at angkinin.
Kung mayroong isang error, ito ay marahil ay hindi nahanap ng 404 file.
Ito ay maaaring maging iba pang dahilan
ngunit ako sa pagiging isang maliit na tamad dito upang tumuon lamang
sa mas kawili-wiling mga detalye.
Ngunit para sa user na ito layunin, ng file ay hindi nahanap,
kung nagkaroon ng anumang mga error na nagsasabi ng file.
Kung hindi man, hayaan mo akong suriin kung ang file ay talagang isang aktwal na file.
Kaya kung ito ay hindi isang file, umiiral na ito.
Mayroong isang bagay na may ngunit marahil ito ay isang direktoryo
o marahil ng isang link symbolic
o ibang bagay na funky sa file system.
Alinmang paraan, ang user hindi dapat makita ito.
Kaya ngayon, ako lamang ang pagpunta sa dumura
out conventionally hindi awtorisadong 403.
Ngunit muli isang convention lamang,
Kaya kong nagamit ibang bagay sa teorya.
At pagkatapos ay sa wakas, sabihin sa akin subukan na basahin ang mga file.
Kaya, hayaan mo akong mag-scroll pababa.
At napansin ngayon ito ay kung saan ang code ay maaaring makakuha ng isang maliit na walang kaayusan,
mapansin na ako sa pagtawag fs.readFile nagdaraan
sa parehong landas, parehong callback bilang huling oras,
kaya ang nakaraang bersyon.
At pagkatapos ay kung ko na nais mahanap -
kung hindi ko ito makita, Dumura akong hindi sumali sa 500.
At kung ko mahahanap ito, ano linya ay aming makikita dito?
Kami ay pagpunta upang makita ang fs sumulat header 200 marahil
at isang res.end pagpapadala ang aktwal na data.
Ngunit napansin ito.
At ito ay hindi nagpapakilala ng pinakamasama kaso sitwasyon.
Ngunit mayroon akong ito naaayos na istatistika ng tawag dito kaysa Mayroon akong ilang mga bagay-bagay.
Pagkatapos, Mayroon akong isa pang asynchronous tawag dito,
kaya nang higit pa indentation.
Kaya, uri ng intindihin mula sa data lamang kung magagawa mo mula dito.
Ano problema ay may gawi na lumabas dahil sa ang wika tulad ng JavaScript
sa environment na ito kung saan wala kang halaga return
ngunit sa halip mayroon kang mga callbacks.
At siyempre, ito ay isa lamang isang pangkakanyahan bagay ang katotohanan
na panatilihing ako ng pag-indent.
Ngunit tumagal ito sa lohikal na susunod na hakbang.
Ipagpalagay na mayroong isa o dalawa o tatlong iba pang mga pag-andar
na kailangan kong i-execute na ay sa pamamagitan ng likas na katangian asynchronous,
at samakatuwid ka lamang uri ng panatilihin ang pag-indent upang mahawakan ang mga ito,
upang mahawakan ang mga ito, upang mahawakan ang mga ito.
Makakakuha ka ng isang uri ng callback impiyerno bilang tumawag ito ng mga tao
kung saan nagsisimula ang iyong code upang makakuha ng napaka lapad
at lantaran talagang mahirap basahin.
Bilang ito ay, maaari ko maisasa-ayos ng bahagya sabihin na ito ay isang uri ng flow
na may ganitong uri
ng stylistically angled bagay ng pagpunta sa dito.
Kaya, hindi ito ang tamang-tama dahil ito ay maaaring masyadong mabilis maging
mahirap gamitin, kahit na dalawa asynchronous tawag hindi
tulad ng isang malaking pakikitungo.
Kaya, maaari naming maiwasan ito, tama?
Maaaring glimpsed na Misclicked ako ng ilang sandali ang nakalipas.
Sa dokumentasyon, alam mo na, ito mukhang mayroong statSync.
At statSync ay hindi tumagal isang callback bilang isang argumento.
Inaabot lang ng landas dahil sa malas gagawin nito sa ano?
Ibinabalik nito ang isang instance ng fs.stats.
Kaya ito ay maaaring maging ang iyong unang katutubong gawi, tama?
Lalo na kung ang pag-andar ng callback
at asynchronicity ay isang maliit na bagong sa iyo, lantaran,
ang pinakamadaling diskarte ay marahil iwasan lang ang problema lahat
magkasama, bumalik upang ayusin ng estilo CS101 programming
kung saan tawagan ka pag-andar o pamamaraan, nagbabalik ang halaga,
tawagan ang function, babalik ang halaga,
function, nagbabalik ng halaga.
At maaari ko bang gamitin samakatuwid fs.statSync
na kung saan ay literal ang parehong ngunit ito ay isang hindi sabaysabay na bersyon
na nangangahulugan na ito ay nagbabalik ang halaga.
Hindi ito pumasa sa isang Pinahahalagahan sa isang callback.
Ngunit kung bakit nais na marahil maging isang suboptimal workaround sa resort
upang hindi sabaysabay na function?
Oo?
[Hindi marinig Puna]
Mismong, ito ay tumatagal ng isang mahabang panahon.
Lamang ka pagbagal ang lahat ng bagay pababa.
Dahil halos tulad iling Shack o ang masarap na Burger, kung sila Nakakuha mapupuksa
ng mga buzzers at ginawa mo, ang customer tumayo sa front
ng linya hanggang ang iyong pagkain ay handa na bago kahit pagkuha ng pagkakasunod-sunod
ng mga tao sa likod ng sa iyo nang walang alinlangan
sa pamamagitan Ilagay slows down.
Mga Tao simulan umaalis, uri ng kang gumuhit ng packet.
Maaari kang gumawa ng anumang bilang ng analogies dito.
Ngunit sa maikling salita, ito ay Hindi marahil isang magandang bagay
para sa negosyo o para sa server.
Kaya asynchronous code ay karaniwang mahusay na hindi bababa sa
sa kasong ito, pero talagang nagsimulang maging sanhi ng ilang mga angst.
At sa katunayan maglakas-loob ko sabihin kapag unang pagsusulat ng mga bagay-bagay na ito,
Makikita itong tumagal nang kaunti kaunting nagsisimula pa sanay.
Kaya, ng simulan upang magbigay ng kasangkapan ipaalam sa iyo na may ilang mga aklatan
at diskarte upang gawing ito ng kaunti mas madali.
Kaya, isa sa mga pinaka-karaniwang mga aklatan ay popular na mga library
mga araw na ito, ito tinatawag na isa async.js.
At tulad ng maraming node.js mga aklatan o mga module,
ang mga ito ay ang lahat ng open source.
Sila ay halos lahat ng mga naninirahan at makakuha ng hub repositoryo na uri
ng maging ang talaga ilagay mag-imbak ng mga bagay na ito.
At pagkatapos ay mayroong isang buong imprastraktura
para sa pag-install ng mga bagay na ito tinatawag NPM, Node Package Manager
na kung hindi ka pamilyar may EvanTube ay uri
ng tulad ng app o app makakuha.
Kung pamilyar ka sa may Red Hat at Fedora
tulad ng sa appliance, ito tulad ng kung yum.
Ngunit ito ay isang node - ito ay isang package manager lamang
para sa partikular na kapaligiran.
Kaya, maaari naming i-download at i-install mga bagay tulad ng mga async library
at din ng isa pa na tinatawag na ang guhitan sa ilalim library o module.
Ngunit ang mga ito bilang malayo fs, HTTP, path,
mga ay ang lahat dumating built in sa node.
Kaya kung tayo pupunta ang doc API, makikita mo talaga makita na binuo
sa node makakuha ka para sa libreng ang maramihang mga module.
Ngunit maraming magaling na tao sa sa internet na ginawa dose-dosenang
kung hindi daan-daang iba pang mga library
upang gumawa ng mga bagay mas mahusay na o nang iba.
Kaya, sabihin tumagal ng isang pagtingin sa kung paano gumagana ito library.
Kaya, ang karamihan sa mga code na ito ay magkamukha para sa sandaling ito.
Mayroon akong isang path pagiging nilikha up tuktok.
At ngayon ako sa pagtawag async.series.
Kaya ang async library, ito ay lamang sa isang library na nagbibigay-daan sa iyo
upang pumasa o taasan Karaniwang ng mga function upang makakuha ng tinatawag na isa
pagkatapos ng iba pang lamang sa uri ng maiwasan ang mga isyu na indentation,
at talagang lamang ang mental angst na iyon ay walang paltos pumailanglang
hindi bababa sa kung kailan mo unang makisalamuha sa ito sa iyong sariling
may programming asynchronously.
Tulad ng sa tabi, kung iyong kinuha 161 ka at na-Aaksyunan na may mga kandado
at itataas ang mga kondisyon at ang lahat ng ng na, asynchronous code
at isang kapaligiran tulad ng node.js ay talagang magkano,
magkano ang mas simple arguably
kaysa sa aktwal na pagsusulat multithreaded code.
Anumang oras ikaw ay may multithreaded code,
mayroon kang mga kundisyon taasan.
Mayroon kang mag-alala tungkol sa dalawang thread na naglalaman ng
para sa parehong mapagkukunan disk o memory.
Ang kagandahan ng JavaScript
sa node.js ay mayroong Literal na lamang ang isang thread,
na nangangahulugan na ang browser
o ang server maaari lamang gawin ang isang bagay nang sabay-sabay.
Ito ay hanggang lamang sa iyo, ang programmer
upang mapanatili ang isang sakit sa modelo para sa paano mo uri ng queue bagay
at malaman kung paano mag-order ng iyong code.
Ngunit hindi mo na kailangang mag-alala tungkol sa itaas kundisyon
sa lubos sa parehong paraan sa hindi bababa sa Raw code na tulad nito.
Kaya, ito ay isang maliit na mahirap grack dito.
Ngunit - Kaya hayaan mo akong magbukas ng mga ang docs para sa isang sandali lamang.
Ang async.js library na katulad ay napaka googleable,
ito ay nabubuhay sa GitHub repot tulad ng maraming mga ito.
Huwag sa tingin ito ay hindi buo, hindi.
Hayaan akong mag-scroll pababa sa Read Me dito.
Kaya, ang async library Nagbibigay ang maramihang
ng mga pamamaraan sa loob nito.
Halimbawa, mayroong isang pamamaraan na tinatawag na ang bawat isa,
na kung nag-click ako ito lamang upang makita ang mga docs para sa isang sandali,
ito ay isang function o pamamaraan na nagpapahintulot sa iyo na gawin ang isang bagay
tulad ng isang apat bawat ngunit kahanay.
Lahat ng mga ito ay pagpunta sa mangyayari potensyal na kahanay.
At ang paraan ng bawat ay lamang pagpunta upang bumalik sa iyo kapag ang lahat
ng iterations ay kumpleto.
Kaya siguro nangyayari ang mga ito isa pagkatapos ng iba pang mga.
May perpektong, sila mangyari mahalagang kahanay.
Ngunit ang pamamaraan ay hindi tawagan ka pabalik.
Hindi nito buzz sa iyong buzzer hangga't ang lahat ng
sa mga elementong mayroon kang iterated sa paglipas ng nakumpleto.
Kaya, ito lamang ay isang magaling na paraan
pag-iwas sa paggamit isang simpleng apat na loop
pero sa totoo paggawa isang bagay asynchronously.
Ngunit ngayon mas direkta na may kaugnayan sa halimbawang ito,
mapansin mayroong ito pamamaraan serye.
At hayaang hilahin up ako lamang simpleng canonical halimbawa.
Kaya ang async mga aklatan, serye pamamaraan tumatagal sa bilang ipinahiwatig
sa pamamagitan ng mga square bracket sa array.
Ano ang mga data mga uri ng elemento
sa array na ito batay sa isang simpleng halimbawa?
Ito ay isang array ng mga pag-andar.
Kaya sa C, gusto mong tawagan ang mga ito gumana na pointer.
Sa JavaScript, mayroong higit pa maayos na sumasangguni sa mga function
o ang hindi kilalang function.
At ito lamang ay nangangahulugan, array
siyempre ay iniutos mula sa zero sa up.
Kaya, na pinapanatili nila isang order na mahusay
para sa isang serye, 'serye dahilan siyempre paraan gawin ang isang bagay
sa order ay hindi kahanay.
Kaya, ito lamang ay nangangahulugan na ito function na ay makakuha ng pinaandar,
pagkatapos ng isang ito, pagkatapos ito isa, ang isang ito, pagkatapos ay ang isang ito,
gayunpaman maraming mayroong
hanggang sa wakas ng opsyonal na callback ay tinatawag na.
Kaya, mapansin ang tularan dito.
At kahit na ito ay library isa lalaki ni,
ito ay kinatawan ng laganap ang JavaScript tularan
ng muli gamit ang callbacks.
Kaya, mapapansin kung ano ang ginagawa mo dito.
Sa unang pag-andar pagiging nakapasa sa pamamagitan ng ito array,
mo tinukoy ang isang hindi nakikilalang function na sa pamamagitan lamang ng pag-andar.
Ngunit notice na sa malas ayon sa ito ang papeles,
function na anonymous dapat tumagal ng isang argument callback.
Iyon ay magiging isang pointer o ang pagsangguni sa isang function
na dapat mong tawagan kapag ang iyong code ay handa na upang bumalik ng isang halaga.
Kaya muli, hindi tulad ng para lamang programming karaniwang pamamaraan
kung saan ka sanay agad bumabalik na mga halaga
na isa pagkakaiba sa gamit ang isang library na tulad nito
sa asynchronous programming nang higit pa sa pangkalahatan, ay kapag ikaw ay handa na
upang bumalik ng isang halaga mula sa isang database, mula sa isang file,
mula sa isang palatuusan expression, ito ay nasa sa iyo
Upang matawagan ang callback function.
At ang magaling na bagay tungkol sa library
kung binabasa namin ang mga doc higit pa maingat ay na,
kung at lamang kung ang lahat ng ang callbacks lugar na tinatawag na
walang Error sa bagay, ay magtagumpay ang buong bagay?
Kaya sa ibang salita, kung may 2,
kung may 10 anonymous mga function
sa ganitong array samakatuwid sa seryeng ito,
kung ang lahat ng mga ito magtagumpay,
nasain ang panghuling opsyonal callback ituring na matagumpay?
Kung sinuman sa mga ito nabigo, ang bawat pag-andar
pagkatapos na ito ay hindi kahit na ipatupad.
Kaya, ito ay isang magaling na paraan ng pag-uuri ng pagkakaroon ng isang uri ng bulaklak kadena
na aborts maaga kung may isang bagay na napupunta mali.
Kaya upang makita ito sa konteksto, dito ay paano namin maaaring muling ipatupad
na nakaraang programa.
Nakukuha ko ang landas na tulad ng dati, kaya ito ay ang madaling bahagi.
Kopyahin ko i-paste ang code balangkas
mula sa papeles doon async.series bukas panaklong,
buksan square bracket.
At mapansin ngayon Mayroon akong isa pagpapaandar sa simula
ng isang segundo, makikita natin ang kung saan kami pumunta mula sa na ito.
At mapapansin na ngayon, ito'y isang maliit complex sa unang
ngunit tumuon lamang sa ito line sa pamamagitan ng linya.
Fs.stat nangangahulugan makuha ang mga istatistika o kung ano ang hindi ng ang path na iyon.
Tawagan ang callback kapag handa na.
Ang code na ito ay katulad ng dati.
Kung mayroong isang error, mayroong isa pagkakaiba ngayon.
Muli, ang laganap tularan sa node.js programming ay
kung may isang bagay na napupunta mali at ay nangangailangan ng callback malaman
na sa pamamagitan ng convention, ang unang argumento sa isang callback ay pagpunta
upang maging hindi, kung ang lahat ay mabuti o isang isangguni sa isang Error sa bagay,
capital E. Ito ay tulad ng isang Error klase na umiiral sa buong mundo
ngunit higit sa na ilang iba pang mga oras.
Kaya sa pamamagitan ng paggawa nito, kung mayroong isang error, ano ang mga implikasyon?
Well batay sa kung ano ang aking sinabi ng serye gumagana,
ay kung napupunta ang anumang bagay mali, kami uri ng nais lamang
upang i-abort ang buong serye paggana ng mga anonymous na tawag.
Kaya, suffices ito para sa akin upang bumalik lang callback nagdaraan
sa Error sa bagay.
Dahil kung nagbigay naaayos na istatistika ako pabalik ng isang error,
Kaya kong lumikha ng isang bagong Error sa bagay na sa aking sarili,
ngunit hindi ko talagang nagmamalasakit sa,
Gusto ko lang upang pumasa anuman ang error na ito ay na aktwal na mangyari
sa gayon ay maaari ko ito pumasa upang ito callback.
At upang maging malinaw lamang, ang return ay hindi mahigpit na kinakailangan.
Gusto ko talaga upang gawin ito ngunit Nais kong ngayon ko "bumalik;
/ / Sa gayon ay hindi hihigit code dito executes ".
Kaya muli ng isa pang karaniwang convention sa JavaScript,
kahit na hindi ka bumabalik isang halaga per se,
Gusto mo upang pumasa ang halaga sa callback function na
ngunit pagkatapos ay nais mong upang itigil ang pagpapatupad
ng pag-andar ikaw ay in, ang walang kuwenta paraan
upang gawin ito ay lamang upang tawagan ang bumalik dito.
Ngunit mayroong walang mali ang,
lang namin ginagawa return callback error kahit na ito ang nangyayari
upang bumalik sa hindi natukoy na halaga.
Ang lahat ng mga karapatan, hindi ito gumagana nagbabalik ng halaga pinaka-malamang.
Ang lahat ng mga pinapahalagahan ko tungkol sa ay isang kasalukuyang nagsasakay karagdagang pagpapatupad.
Kaya, ang aking conflation ng mga dalawang linya ay isang stylist lamang
sa convention lamang sa magkaroon ng bilang ng mga linya
ng code ko lang ang sinulat ni 2-1.
Kaya ano pa?
Kung mayroong hindi isang error -
talaga upang maging malinaw Maaari ko rin maiwasan
na sa pamamagitan ng paggawa kung tao.
Ngunit muli, isa pang karaniwang tularan ay tseke
para sa iyong mga error up tuktok at pagkatapos ay bumalik lang sa halip na magpatuloy
upang i-indent ang iyong code sa elses at elses at elses.
Kaya kung ito ay hindi isang file, ngayon, alam mo na,
Gusto kong mahawakan ito isang maliit na espesyal.
Kaya dito tulad ng sa Java o C + + o ilang iba pang mga wika,
narito kung paano maaaring magbigay ng halimbawa ng isang Bagay i-type error sa paglipas
sa isang default na mensahe ng hindi isang file
at ito lamang medyo arbitrary.
Ngunit ako pagbibigay ng senyas isang error sa aking sarili.
At ano ang ginagawa ito huling linya baka maging tanda ng?
Ang lahat ay mahusay.
Kung pumasa ka sa null para sa parameter error, na ibig sabihin lang
sa pamamagitan ng convention lahat ay mahusay.
Kaya, ay nangangahulugan na kung ano ang ang mangyayari lohikal?
Kung null Lumipas upang ang callback
Nangangahulugan na ito anonymous function na ay nagtagumpay
kaya na magsalita.
Kaya, kung ano dapat ang serye pamamaraan Nauuna at huwag batay ngayon
sa aking berbal kahulugan ng mas maaga?
[Hindi marinig Puna]
Ilipat sa susunod na isa, tama?
Kung ito ay ibinalik ng isang non-null halaga, mas i-abort lamang
at wala nang mga anonymous function na nais makakuha ng tinatawag na.
Ngunit dahil ito ay hindi, pagkatapos ay ito ay makakuha ng tinatawag na susunod.
Kaya, ang logic sa dito ay halos kapareho ng bago
at kami makita kung paano upang linisin karagdagang ito up sa isang sandali.
Napag-alaman kong ito ay uri ng marami
na maunawaan ang lahat ng pasalita at biswal.
Ngunit ngayon napansin, ang pangalawang anonymous function na gusto ko
upang maisagawa sa serye ay subukan na basahin ang mga file.
Tawagan ang callback kapag handa ka na.
Kung mayroong isang error, lamang signal ito sa pamamagitan ng paraan ng callback
upang ang natitirang bahagi ng bagay-bagay na ito aborts.
Iba Pa balik null.
Ngunit kung bakit ako pagpasa sa dalawang argumento?
Well oras na ito kung Nabasa ko ang file at babalikan
bilang isang variable na tinatawag na data,
Gusto kong maging tanda ng hindi lamang lahat ay mahusay sa pamamagitan ng pagbalik null
para sa unang argumento.
Gusto kong ibalik ang aktwal na data bilang ang pangalawang argumento.
Dahil kung Nabasa ko pa sa papeles,
mapapansin ang ganitong huling tipak ng code square bracket ay nangangahulugan na ang
dulo ng serye.
Mayroong dalawang lamang anonymous function sa seryeng ito.
Kung nagkaroon ng error sa dito, pagkatapos ay Alam ko na ang isa sa mga link
sa ganitong chain kaya Nabigo upang makipag-usap.
Kaya sa ibang salita, ang error na ito ay magiging isang Error bagay
na walang bisa kung mayroon man ng Nabigo ang mga guys.
At kung iyon ang kaso, lamang ako pagpunta sa magparakayda at pupuntahan ko
sasabihin 400 na nangangahulugan mabigo kahilingan,
na napaka-generic mensahe ng error.
At pagkatapos, pupuntahan ko i-print ang error na mensahe.
Kaya, hindi ako Iniistorbo upang maging sobrang anal oras na ito,
Hindi ako pupunta para makilala sa pagitan ng 500 at 404 at 403,
Ako lamang uri ng nang walang taros iwagayway ang aking kamay
at sabihin may nangyaring mali.
Ngunit kung walang ginawang magkamali,
Pupunta ako sa magpadala ito res.end pagpasa sa data na ito.
Ngayon ito ay mukhang isang maliit na misteriyoso.
Ngunit muli kung Nabasa ko ang dokumentasyon,
ang pangalawang argumento sa ito final, final callback,
ang tao na pinaandar lamang isang beses sa serye ay tapos na
execute o isang bahagi doon ng, ito ay magiging isang array
ng lahat ng mga pangalawang argumento
na pumasa sa sa callback.
Ngayon, ito ay lumiliko out na ang -link lamang sa mga seryeng ito
na talagang bumalik sa pangalawang argumento ay ang isang ito dito.
Kaya Pupunta ako upang ayusin ng sa isang talon ng pananampalataya gamitin lamang ipagpalagay
para sa mga sandaling iyon huling ay isang pamamaraan
na nagbibigay sa iyo ang huling mga elemento ng isang array.
Dahil ito array na ini-pumasa sa
sa akin ay may dalawang indicies, zero at isa.
Ito ay zero lamang ay walang halaga dahil ito tao ay nagbabalik -
ay hindi pumasa sa isang segundo argumento ngunit ito tao ang ginagawa.
Kaya nagreresulta bracket zero ay wala,
mga resulta ng bracket isa ay naglalaman ng kung ano,
kung sinusundan mo ang sa kahabaan ng hanggang sa puntong ito?
Ang file, ang halo, nilalaman mundo siguro,
kaya na kung paano ko talaga i-print ito.
At ipaalam sa akin tapusin isa detalye dito.
Kung gagawin ko ang ganitong uri ng lumang paaralan, kung gusto ko upang makakuha ng
sa huling elemento, kung magagawa ko gawin resulta [results.length-1],
na uri ng lumang paraan ng paaralan
ng pag-access sa huling elemento sa - o zero index ng array.
Ngunit tulad ng sa gilid, isipin na nagkaroon ako nito library
hanggang dito salungguhit na sa pamamagitan ng convention ay tinatawag na lamang
Literal na isang guhitan sa ilalim character na kung saan ay hindi espesyal,
mukhang lamang ito cool na tulad ng dollar sign gumagana para sa jQuery.
Ito ay isang lingkod lamang pamamaraan salungguhit tuldok huling
na gumagana nang eksakto ang parehong bagay.
At kung hindi mo pa ito ginamit bago salungguhit JS kapwa
para sa mga client side coding
at server side ay isang kamangha-mangha kapaki-pakinabang library
na bilang ng maraming mga tao na inilarawan sa ito bang jQuery naglalaman ng lahat
sa mga pamamaraan, naisin tao kasama mismo ang JavaScript.
OK.
>> Kaya, tulad ng kaakit-akit sa akin at Ako ay nanonood sa serye,
mayroon ka tulad ng callback bilang isang argumento?
>> Oo.
>> Tulad ng sa gayon kapag nag- talaga tulad ng push na in,
at tulad ng kung ano ang ginagawa nito ibig sabihin kapag mayroon kang lamang
tulad ng callback at pagkatapos ay gawin tulad ng -
[Hindi marinig Puna]
>> OK, ang mahusay na tanong.
Kaya, hayaan mo akong hilahin pataas ang async pangunahing pahina dito
o ang babasahin sa GetHub.
Kaya ito ay ang canonical istraktura.
Kung tawag na ginagamit mo ito partikular na serye pamamaraan,
mayroong dalawang malaking bahagi sa ito.
Ang isa ay isang hanay ng mga anonymous function
at dalawang ay isang pangwakas na callback pagpapaandar na talaga
pinaandar sa pinakadulo dulo ng serye.
Ngayon, kung mag-zoom namin sa isang maliit na mas malapit sa unang
ng mga malaking bagay, ang hanay ng mga anonymous na mga pag-andar
sa pamamagitan ng kinakailangan ng mga ito dokumentasyon tao ay may
upang maging isang hindi nakikilalang function na tumatagal
sa isang argument na tinatawag na callback o foo o bar, ito ay hindi mahalaga
ngunit tumatawag niya ito callback.
At ito ay isang uri ng iyong buzzer na mga kamay mo kalugin Shack.
Ito ay ang mga paraan kung maaari mong nagbabalik ng halaga
sa customer dahil sa iyo Hindi maaaring bumalik lang ako nang literal.
Mayroon kang gawin ito sa pamamagitan ng paraan ng callback.
Dahil kung sa loob ng ito function ay ilang mga mabagal na pagtakbo
code tulad ng database ng query, basahin ang file mula sa file system,
hindi mo nais na maghintay doon at i-block ang iba,
na nais mong tawagan ang callback.
Kaya, ito ay literal ang pangalan ng argumento.
Ngunit nais sa C, mo magkaroon ng function na pointer.
Sa Java mayroon kang pamamaraan reference sistema
at ang parehong dito sa JavaScript.
Ito ay isang variable ngunit uri nito ay function.
Kaya sa pamamagitan lamang ng pagsusulat ng pangalan nito kung ang isang callback o foo
o bar, pagkatapos ay bukas panaklong at malapit panaklong,
naka-execute na sa na pag-andar.
At ang pagpasa sa isang null na Nangangahulugan null error at isa
na nangangahulugan na ito ay ang data na gusto kong pumasa in
At pagkatapos ay ang tipak upang maging malinaw, ito ay isa pang callback.
At hindi ito tinatawag na callback,
ito conceptually lamang ay isang paraan ng callback function na
dahil ito ay tinatawag na sa pamamagitan ng kahulugan
ng library may-akda na ito kapag ang buong serye ay nakumpleto
o subset hinggil doon kung ang isang sa error ay nangyari nang mas maaga.
Kaya, pangalan ng function na callback, pagtawag sa function na callback,
pangalanan ng function ng callback, pagtawag sa function na callback,
iba't ibang callback function na ang lahat nang magkakasama.
>> Ay mayroon na ngayong kami tulad ng tukuyin ang callback?
>> Hindi, dahil ito tao ay pumasa sa iyong array
ng anonymous na mga pag-andar,
isang pointer sa code Nais ni siya upang maisagawa.
Mismong, ang lahat ng karapatan.
Kaya, mangyaring sabihin na ang ay makakakuha ng code ng kaunti mas simple.
Kaya, kaya nito.
At kung ikaw ay tulad ng sa akin, tumagal ginhawa sa hindi bababa sa pag-alam,
ito ay tumatagal ng isang habang upang masanay na ito.
Ngunit maaari naming linisin ito up ng isang maliit na bit,
hindi magtapon ng masyadong maraming sa para sa iyo ngunit narito ang isa pang pagkakaiba-iba
at nito gamit ang ibang paraan
sa parehong library tinatawag na waterfall.
Ang bentahe ng na kung saan ay hindi tulad ng serye kung saan ang bawat
ng mga anonymous mga function pinaandar talaga
-isa ng bawat isa sa mga iba.
Waterfall tulad ng pangalan iminumungkahi Pinapayagan ka ng mga kataas-taasan function
sa uri ng pumasa sa mga halaga sa ibabang-function,
uri ng ng isang kaskad ng tubig.
Kaya ng bentahe ng ito ay na maaari kong uri
ng ito gamitin sa aking kalamangan.
Sa async.waterfall, mapansin ang sumusunod.
Maaari ko bang tumawag lamang fs.stat pagpasa sa path
na gusto kong makuha istatistika sa.
At pagkatapos ay matandaan bago ako ay nagkaroon ng isang hindi nakikilalang function na
na nagkaroon ng dalawang argumento magkamali,
esults at pagkatapos ay tinatawag ko ang function ng callback manu-mano?
Sa madaling salita ay lamang na maging malinaw, isipin na mas maaga
sa async 2, ginawa ko ang lahat ng mga bastos na trabaho.
Tumawag ako fs.stat ang pumasa sa P,
ipinahayag ang aking sariling mga anonymous function.
Pagkatapos ay naka-check ko kung error na ito ay hindi null pagkatapos ay ginawa ko ito,
iba ginawa ko na, ang buong kagandahan ng sumusunod na mga convention
tulad ng sa node.js ay na callback function sa pangkalahatan ay nilalayong
gumawa ng hindi bababa sa isang argument, Error sa isang bagay na sinundan ng zero
o higit pang mga kapaki-pakinabang na mga halaga.
Kaya mapansin ang tularan dito,
ito callback function na ako deklarasyon ng sumusunod eksakto ang
tularan na tao na ito async library gumagana.
Alin ang sasabihin ito, bakit am Ako ang pagpapatupad ng aking sariling callback
pamamaraan kapag ang may-akda ng ito library Literal na ako handing
sa isang platter kaya na magsalita, isang function ng callback ang maaari kong gamitin?
Kaya, lamang ang maaari kong pumasa sa isangguni niya ibinigay sa akin
nang sa gayon ay agad-agad, aking ilang mga linya
ng code na maging isang linya ng code.
Ngayon, kung saan ako pumunta namin na may ito?
Ang susunod na pag-andar na Gusto kong mag-execute,
sa susunod na anonymous function na sa array na ito
ng mga pag-andar ang mga sumusunod.
Abiso sa unang naaayos na istatistika ay ang unang argumento.
Kaya ang isang bagay ay nagbago na.
Ngayon, ito ang taong sinulat library -
at ako na nagsasabi lalaki sapagkat ito ay isang tao.
Ito ang taong ito na sinulat library ay dokumentasyon garantiya
na kung ang pagpapaganang ito dito pass ako pabalik isang Error bagay
o null sinusundan ng isang pagkawala ng malay separated list ng iba pang mga halaga,
siya ay tiyakin na ang mga iba pang mga halaga ay kamay
sa anonymous na function na ito sa pagkakasunud-sunod mula kaliwa papuntang kanan.
At kung ano ang ginagamit upang maging lamang isang callback function na nag-iisa lamang
nagiging ang huling naturang argumento.
Ngayon, hindi ko alam kung sino ako tumututok sa alam mo lang.
Ngunit ngayon, ano ang bawasin dito?
Kaya, alam namin mula sa ang dokumentasyon
o ang naunang ilang mga halimbawa
na fs.stat sa huli Inaasahan ng isang callback na may dalawang argumento,
ang Error sa bagay na kung saan ay isang Error sa bagay o null sinundan
sa pamamagitan ng isang reference sa stats bagay.
Kaya kung sa tingin ko tungkol sa na, Error sa bagay na pagkawala ng malay stats bagay,
magkasya sa tularan ng library ng taong ito.
Kaya, lamang ang maaari kong sabihin dahil Ako walang ang pangalawang argumento
na ito - na ang nangyayari upang maipasa sa pamamagitan ng fs.stat
sa callback ay magkasala, stats sa pamamagitan ng pagbibigay-kahulugan ng ito library,
Maaari ko bang ilagay ang pangalawang pangalan argumento dito
o kahit anong maaari kong palitan ang pangalan ito
kung gusto ko sinundan sa pamamagitan ng callback dito.
Kaya, maaari ba akong magpasa ng isa Pinahahalagahan mula dito para dito.
Ngayon, ang lahat ng code na ito bagaman tinatanggap na medyo misteriyoso ay
hindi bababa sa kopyahin i-paste para sa ang pinaka-bahagi mula sa bago.
Ang pagkakaiba lamang ay abiso dito ako deklarasyon isang Error
Bagay at ngayon ay nais ko upang makakuha ng isang maliit na may interes.
Talaga ko gusto mong malaman kung ano ang error ay, kaya ako pupunta
upang mag-ipit sa loob ng ito sa bagay na isang ari-arian nagkataon na tinatawag na code
nang sa gayon ay alam ko na ito ay hindi isang file
na dapat ay hindi awtorisado, ito ay isang HTTP 403.
Hayaan akong tandaan na ang bago Pumasa ko ang Error sa bagay na
sa callback.
At pagkatapos ay sa wakas subukan na basahin ang file, kaya sa kasong ito,
ang talon, na pinaghiwa ko ang code mula sa dalawang malaking hakbang
sa tatlong mas maliliit na hakbang.
Pansinin ang beauty dito,
Maaari ko bang tumawag sa fs.readFile pagpasa sa path.
At pagkatapos ay ang mahirap na bahagi sa pag-iisip, ay ba akong magpasa lamang
sa callback ng mga tao ni.
Ang bagay ay handing niya sa akin, ako pagpunta sa pumasa sa fs.readFile.
Dahil kami ay lahat ng adhering sa parehong mga convention,
unang argumento sa isang callback ay Error sa isang bagay o null sinundan
sa pamamagitan ng isang pagkawala ng malay o kuwit listahan ng mga kapaki-pakinabang na mga bagay-bagay.
Kaya, ano ang ibig sabihin na ngayon at kung ako basahin ang dokumentasyon makikita kong malaman
ito, ang napaka-huling callback, ito tao dito sa labas
ng mga square bracket ay pagpunta upang maipasa sa Error sa bagay na
o null kung saan ang dapat kong suriin para sa bilang ng nakasanayan sa ang code na ito dito.
At pagkatapos ay sa pamamagitan ng kahulugan ng ang paraan na ito
sa dokumentasyon ng tao, ang ang huling halaga na ibinalik
mula sa nakaraang pamamaraan sa aking mga anonymous array -
ang aking mga hanay ng mga anonymous na function.
Kaya, ano ang basahin return file
at ako gamit ang isang pagbabalik maluwag ngayon.
Ko ibig sabihin kung ano ang basahin pass file bilang mga argumento
sa paraan ng callback kamay nito?
Dalawang mga argumento, una ay Error sa isang bagay o null,
na halos palaging pagpunta sa maging ang kasagutan.
At ang ikalawang bagay ay pagpunta maging ano para nabasa na file?
Ang mga nilalaman ng file, data bilang tinatawag namin ito nang mas maaga.
Kaya, sa pamamagitan lamang ng deklarasyon magkasala, magresulta,
at suriin para sa error na ito ay isang uri ng mayamot ngayon.
Iba Pa, gagawin ko res.end pagpasa sa resultang iyon.
Na ito ay walang pagsala hindi i-sync sa ganap na ganap
hanggang sa ikaw talaga isulat ito sa iyong sarili.
Ngunit para sa ngayon, lumabas ang layo ng hindi bababa sa ang katunayan
na mayroong tila ito karaniwang tularan, kung saan kung kami
at mga may-akda ng mga library lahat ng uri ng stick
may ganitong convention ng pamamaraan ng callback.
At ang unang argumento ay Error sa isang bagay o null.
At ang pangalawa at pangatlong
at pang-apat na bagay mga bagay pinapahalagahan namin tungkol sa at kami uri
ng sundin ang mga alituntunin at dokumentasyon.
Sinimulan na naming gamit ang code na totoo lang ay medyo mainit ang ulo.
At kahit na ang pinaka-kamakailang halimbawa ay lantaran uri ng matapang
sa wrap ang iyong isip sa paligid, ito ay hindi bababa sa biswal,
kamukha ito ay magkano tighter.
At sa sandaling makakuha ka komportable may ito, ito ay kaya lubhang mas madaling
at ito ay kaya magkano ang mas madaling kapitan ng sakit sa mga bug kaysa sa nakaraang halimbawa.
Kaya, hayaan mo akong ilarawan isa huling bagay dito.
Ito ay bersyon tatlo.
At - Hindi, ni-iwan ipaalam ang isang ito nag-iisa.
Hayaan akong pumunta sa isang pares ng mga iba pang mga huling bagay na tulad ng teaser.
Ang lahat ng mga karapatan, kaya sa server 2.
OK. Una, anumang mga katanungan, Alam ko na ito ay isang pulutong
ngunit na gusto mo nang higit pa tagubilin, kaya?
Hindi ninyo sabihin magandang pagtuturo kinakailangan.
Oo?
[Hindi marinig Puna]
Tama, ikaw ay mahalagang hindi mahigpit na operating system
upang malaman kung paano salamangkahin lahat ng mga bola nang sabay-sabay,
pagbabasa mula sa isang file, pagbasa mula sa isang database.
At ito ay ito JavaScript server mismo na solong may sinulid.
At totoo at tunay,
mayroong isang larawan Hindi ko throw up,
at ito ay hindi kinakailangang lahat nakapapaliwanag na
pero siguro bibigyan namin ka ng isang sakit sa modelo.
JavaScript mismo at node
sa partikular na may ito kaya tinatawag na loop ng kaganapan.
Kung saan, maaari mong isipin ng node.js, programa,
ay literal tulad ng isang walang-katapusang loop.
Ito ay lamang ng isang ligaw loop, naghihintay at naghihintay at naghihintay,
naghahanap ng mga gawain upang makumpleto.
At ang mga gawain ay maaaring, pumunta makuha ang isang bagay mula sa isang database
o narito ang isang halaga mula sa database o pumunta makakuha ang file na ito
mula sa disk o narito ang isang humiling mula sa isang user.
Anumang uri ng mga kaganapan, tulad ng hinimok ang mga kaganapan mga browser,
kaya bilang ang server hinimok gilid ng kaganapan.
At ang anuman sa mga bagay Binubuo ng mga kaganapan.
Kaya ng isang tao sa node.js, lamang Sinulat ni isang walang-katapusang loop,
isang malaking ligaw loop, naghihintay para sa mga bagay-bagay na mangyayari.
At bilang mga bagay-bagay ang mangyayari, ito ay nagtatapos up sa isang pila, tama?
Oo nga, isang database baka nagbabalik ng halaga.
At isang system file, sa operating maaaring ibalik ang system ng isang halaga
sa halos parehong oras ngunit may ay marahil pagpunta
sa ilang mga pag-order sa kanila.
At node.js ay pagpunta sa may lubos na isang queue
tulad ng isang malaking array o isang vector, ang ilang mga istraktura ng data
na buffers lahat ng mga bagay.
Dahil makakaya literal lamang mahawakan ang isa sa mga ito sa isang pagkakataon.
Kaya, kapag ikaw, ang nag-develop,
pagsusulat ng asynchronous JavaScript code gamit ang asynchronous
function, ikaw ay nagpapahintulot sa na ito tinatawag nang gayon loop ng kaganapan upang pumunta
sa susunod na tumiktak, tama?
Kaya, hangga't mo agad bumalik tulad ng lahat ng
ng mga asynchronous na mga pamamaraan gawin tulad ng nabasa na file at naaayos na istatistika,
silang bumalik agad dahil ang callback kalaunan
ay makakakuha ng likod.
Sa sandaling bumalik ka,
Ibig sabihin nito na may ibang tao makakaya makakuha ng mga pop-off ang stock dito
o maaari itong makakuha ng mga pop-off sa harapan ng pila dito.
At kaya, mayroong sa katunayan ang serialization
ng lahat ng bagay na nangyayari,
kahit na ang lahat ng mga bagay-bagay ang mga maaaring mangyari sa parallel
sa isang multithreaded system.
Ngunit node.js sarili nito at tumatakbo ang server
bilang isa thread.
At ang pababang bahagi ng na T gawin mo ay hindi kinakailangang max
out computer ng iyong kakayahan ay bilang lalo na
kung mayroon kang isang 16 core o kahit na isang 2 core na computer
at nagpapatakbo ka lamang isa halimbawa ng node.
Ngunit kung ikaw muli kinuha ng isang bagay tulad ng 161,
mong iwasan ang isang malaking bangungot ng ulo pagdating
sa lahi kundisyon at mga kandado at semaporo
at pagsusulat ng tunay ang multithreaded code,
kaya upsides at downsides.
OK. Kaya, bumalik sa code dito, hayaan mo akong magpanukala na sisimulan namin ang
upang gawing simple ang mga bagay sa ilang sandali.
Nakakita kami ng server isa kaunti nakalipas na mukhang ito.
Kaya, na arguably medyo simple.
Ngunit tulad lamang sa mundo ng PHP, may mga Framework
tulad ng Laravel at mayroong mga bagay tulad ng daang-bakal at Django,
parehong bagay sa node.js mundo.
At kami gumastos nang higit pa oras sa ito sa Miyerkules
at sa susunod na proyekto.
Ngunit kung pumunta ako sa isang server 2 na direktoryo,
mapansin ng ilang paradigms dito.
Kaya ito ay may - na mayroong pagpunta upang maging isang katumbas na halimbawa
ngunit gumagamit ito ng framework na tinatawag express.js,
na kung saan ay libreng open source software tulad ng daang-bakal at Django,
tulad ng Laravel, na lamang sa huli ng pagpunta
upang maging pinagliitan ngayon 'Sanhi namin ang nagsusulat
tulad simpleng halimbawa.
Ngunit pinagkakatiwalaan amin.
Na ito ay masyadong mabilis maging kaibigan mo
dahil ito ay i-save ang marami kang mga TDS code.
At isang pangkaraniwang paradaym para sa isang express.js application ay
magkaroon ng isang app.js o server.js file na naglalaman ng logic
ng iyong mga programa o sa hindi bababa sa entry point.
Maaari kang magkaroon ng maramihang mga file.
Ang isang node module subdirectory na kung saan ay may aklatan
na na-download mo tulad ng async
at ipahayag ang sarili nito sa iba.
At pagkatapos ay package.json, package.json mukhang ganito,
at maaari mo itong lumikha ng mano-mano o kasangkapan lumikha ng ito para sa iyo
at ito ay literal isang json file
at ang kagiliw-giliw na bahagi ay ang dependency dito.
Gusto lang sa Laravel, mo nagkaroon na direktoryo ng vendor
at kayo ay nagkaroon ng mag-alala tungkol sa pakete at paggawa -
talaga ang pag-update sa Sanay sa o katulad na mga utos,
ang mga library mo na-install,
katulad sa package.json dito at pinamamahalaan mo ang mga library
at ang mga bersyon na mahalaga sa iyo.
Kaya, kung mayroon akong isang package.json, Maaari ko lamang gawin NPM,
Node Package sabsaban i-install, ito ay pagpunta sa awtomatikong tumingin
sa na package.json file.
Tumingin at makita, gagawin ko ay may pinakabagong bersyon
ng lahat ng mga vendor module
sa isang node guhitan sa ilalim ng mga module direktoryo dito o siguro
sa ilang mga magulang o direktoryo ng ninuno.
At kung hindi, ito ay pagpunta upang i-download ang mga ito
at makikita mo ang isang buong bungkos
ng HTTP bagay-bagay ng pagpunta sa kabuuan ng wire.
Kaya halimbawa, ipaalam sa akin ipakita sa iyo ang mga nilalaman
ng node module upang ipahayag lamang.
Hayaan akong magpatuloy at matapang tanggalin node module
upang ang lahat ng mayroon ako ngayon ay ito.
At kung NPM ko i-install, makakakuha ka makita na ito ay pagpunta sa basahin
na package.json file at nasaksihan namin ang output katulad
sa ito sa Laravel mundo.
Nag-download ng ang isang buo tungkos ng mga bagay-bagay at iyon ang
dahil express siya namang Depende sa oras ang maramihang
ng iba pang mga tao mga aklatan.
Kaya, ang lahat ng mga ito ay isang uri ng idina-download recursively.
Hanggang ngayon, kung gagawin ko sa LS muli,
mayroong aking node module direktoryo ng likod
at ipahayag bilang pabalik.
Kaya ito ay lamang ng isang paraan ng pagpapasimple sa pamamahala ng package.
Ngayon, kung tinitingnan namin ang app.js file, ito ay pagpunta
upang maging isang panunumbalik sa Noong web server
kung saan kami dumura lamang out "kumusta, mundo".
Ngunit mapansin ang paradigms dito,
unang kinakailangan namin ang express module, pagkatapos ay mayroon kaming ang linyang ito
ng code na kung saan alam mo na mula sa papeles.
Ikaw literal na ituturing na variable module bilang isang function,
kaya bukas panaklong malapit panaklong ay nangangahulugan na isakatuparan ito.
Iyon pupuntahan sa malas magbalik ng bagay kami ay pagpunta
sa pangkalahatan ay tawagan ang isang app.
Paano ito gumagana?
Hindi ko talaga alam.
Ipapaalam ko sa ibang tao, alam mo na, sa express mundo magsulat na.
Pupunta ako sa tumayo ngayon sa ang kaniyang mga balikat kaya bilang
upang gawin ang aking mga application pagpapatakbo ng isang maliit na mas simple.
Dito, ako pagpunta sa makinig sa partikular na port
na maaaring maging pinaka-anumang bagay.
At narito ang code na siguro higit pa nakapagpapagunita ngayon
ng Laravel at routes.php.
Kaya ito ay hapunan simple, ako ay lamang ng pagpunta sa tukuyin ang isang ruta
para sa slash star, kaya ang lahat ng bagay Pupunta na hinihigop
sa pamamagitan ng ito handler kahilingan.
Ang tularan para sa handler kahilingan ay function ng hindi nakikilalang nito
may isang argument kahilingan
at isang tugon sa bagay na tulad ng dati.
At res.send sa express paraan mong ipadala sinundan ang code
sa pamamagitan ng kahit anong gusto mong ipadala.
At siyempre, maaari ka gawin ang isang bagay may interes
sa pamamagitan ng aktwal pagpapadala mga file o HTML
o dynamic na binuong nilalaman.
Ngunit para sa ngayon, ang lahat ng ginawa namin ay sabihin ang lahat kumusta, mundo.
Kung namin pumunta sa server tatlo, ito ay kahit na may interes lamang
upang ipakita sa iyo ang ilang mga pag-andar.
At ipapakita namin sa iyo ng isang kahit sexier bersyon
ng ito sa Miyerkules.
Ngunit kung sakaling iyong narinig ng Socket IO siguro,
kaya sa pag-iisip ko Jonathan o isang taong mas maaga sinabi,
isa sa mga bagay na node ay talagang kilala
para ay nito real time pag-uugali, tama?
Mag-isip tungkol sa PHP sa MySQL, kung ikaw ay ang ipatupad ang isang chat server
sa PHP kung saan ang dalawang tao ng dati magbukas ng isang window ng browser upang foo.com
at pagkatapos ay simulan ang IMing bawat isa, Alice sa isang window,
Bob sa isa pang kaya na bawat isa sa kanila na nakikita ng kanyang
o ang kanyang mga mensahe sa ang iba pang window.
Paano mo gawin mo ito sa PHP at MySQL?
Ang paggamit o hindi paggamit Laravel uri ng espirituwal, maaari kang magkaroon ng
tulad ng isang index.php file.
At nakuha mong magkaroon - sa ilang mga kaso ito ay nakuha sa dumura
out ng form na ito, kaya naroon pagpunta sa maging isang HTML form na
na marahil ay nagsumite hindi sa pamamagitan ng normal na pagsusumite ng form
ngunit Ajax marahil, tama?
Kaya, ng on-sumite handler, kaya nagta-type ka sa isang field ng teksto,
pindutin mong ipasok at pagkatapos ay makakakuha ng ito naipadala sa server sa pamamagitan ng Ajax.
Ano gagawin mo pagkatapos gawin sa server?
Kaya, mayroon ka index.php
o isang bagay na tuldok ang PHP na natanggap sa HTTP parameter
mula sa gumagamit, Alice o ni Bob instant message, ano ang gagawin mo
may nito upang palaganapin ito upang Bob o Alice, ayon sa pagkakabanggit?
Ibig kong sabihin sa iyo nang literal May mga tool na kung saan
upang gawin ito sa iyong min.
Kaya tulad ng kung ano ang nais mong gawin?
Mayroon kang isang minuto upang ipatupad ang programang ito.
Oo?
[Hindi marinig Puna]
Perpekto. Kanan, kaya na kailangan ng isang database.
Alam namin ng kaunti bit tungkol sa MySQL.
Kaya, mayroon kang isang talahanayan na mensahe,
siguro mayroong isang beses stamp, ang isang gumagamit ID,
katawan ng mensahe mismo nalikha na,
na-update na at ang lahat ng iyon.
Kaya, ini-imbak mo sa isang database.
At ipagpalagay Alice nagpapadala ang unang mensahe, paano ito Bob makakuha ng
na mensahe ngayon mula sa database?
>> Maaaring maging ilang Ajax tugon na palagiang pagpunta
Bumalik sa database tuktok makuha ang [hindi marinig].
>> Mismong.
Kaya code ni Bob kung sino ang code ay katulad ng Alice ay uri lamang
ng isang simetriko relasyon,
Browser ni Bob ay may ilang mga Ajax code na marahil siguro sa bawat 30
segundo ng paghila sa server sa pamamagitan ng Ajax-sync,
ang naroon bagong mensahe?
Mayroon bang mga bagong mensahe?
Ang bawat 30 segundo ay pagpunta upang maging uri ng suboptimal
dahil mayroon siya upang maghintay kahit na
kung Alice literal Nagpadala lamang ang mensahe.
Kaya, browser ni Bob ng dati bawat segundo pindutin ang server.
Ngunit na nangangahulugan Alice ni browser ay pagpindot sa server
bawat segundo.
Paano ang tungkol sa Charlie [Ipinapalagay spelling]
at David [ipinapalagay spelling] at Edward [ipinapalagay spelling]
at ang bawat iba pang mga sulat ng alpabeto?
Ano ang problema ng ang paraan na ito?
Ang isang pulutong ng mga hit labis -
Ibig kong sabihin ikaw ay epektibo lamang DOSing iyong sariling paningin
o DDOSing, ibinahagi Pagkakaila Ng atake Serbisyo
sa iyong sariling site, sa pamamagitan ng pagkakaroon ng lahat
ng mga user na ito magpatakbo ng JavaScript code na lang sa pinging ang
ano ba out sa iyong server kahit na arbitrary na numero,
80 porsiyento ng oras walang sinuman ay sinabi ng kahit ano
sa chat room.
Ngunit lamang ka ng pagsuri upang tiyakin ng naturang.
Kaya PHP ng maraming mga wika lamang hindi maganda
para sa tunay na mga komunikasyon sa oras.
Dahil sa PHP pagpapabalik mayroong walang gitnang memory, tama?
Mayroon kang mga bagay session na lumilikha ng ilusyon
ng central imbakan ngunit na sa isang bawat gumagamit na batayan.
Wala kang global memory tulad ng ginagawa mo sa isang Java Servlet
sa pamilyar o sa iba pang Gumagana frame tulad na.
Node.js bagaman, ikaw ay walang global memory 'sanhi mayroon kang
isang server at na 'maaari tandaan kahit ano Nais ni ito
tungkol sa lahat ng mga gumagamit.
At puwede ka pa rin magkaroon ng isang database.
Ngunit ang magandang bagay tungkol sa node.js masyadong ay na ito ay magkano ang mas mahusay na
kaysa sa isang bagay tulad ng PHP at lumilikha ng ilusyon
ng paghawak ng maramihang mga bagay nang sabay-sabay.
At sa katunayan bilang sa tabi, maaari mong ipatupad ang mga chat server sa PHP,
ngunit karaniwan kang gagawin isang bagay na tinatawag na mahaba ng botohan
kung saan hindi mo i-ping ang server bawat segundo.
I-ping mo sa server, ang server ay hindi tumugon sa iyo
para pataas ng 30 segundo, ito literal na nakapatong
sa isang loop naghihintay at naghihintay.
At ang mga tseke server kung mayroong bagong data sa database
at lamang sa sandaling ito nakikita mo, "Oh, narito ang isang mensahe mula kay Bob, "
ay ito tumugon sa ang HTP server?
Kaya ang epekto sa iyong browser ay ang icon ng IE o Mozilla
o kahit anong lamang mapigil ang umiikot para sa 30 segundo sa isang pagkakataon.
Ngunit ng bentahe ay, hindi mo gusto may 30 mga hiling na koneksyon
sa loob ng 30 segundo, magkaroon ng isa sa iyo.
Kaya ang tawag dito mahaba ang botohan.
Ngunit kahit na mas mahusay na sa modernong web mga browser ay isang bagay na tinatawag na
WebSocket, na maglaan ka ng CS143,
mabisa mong gumawa ng isang TCP koneksyon mula sa isang client
tulad ng isang browser sa isang server at pagkatapos ay mag-tambay sa dito
nang hindi gumagamit ng halos ng maraming mga mapagkukunan
bilang ng HTTP ay maaaring gawin ayon sa kaugalian.
At Socket IO ay isang node.js library
na ginagawang lubhang mas madaling gawin ang mga koneksyon socket
o illusions doon sa para sa lumang mga browser
sa gayon ay maaari mong ipatupad ito pag-andar ng real time ni.
Kaya, narito ang isang halimbawa.
Ang bagay na ito up tuktok ay nakakuha ng higit pa kaunti kumplikado
ngunit karamihan ito ay kopyahin at i-paste mula sa dokumentasyon socket.io 's.
Narito ngayon ng isang mas tumpak na handler kahilingan.
Kung ang kahilingan ng gumagamit iwa, ano ang file na ako ng pagpunta
upang maging sa malas maghatid ng hanggang sa ang mga ito?
Index.html.
At mayroong ilang mga bagong bagay-bagay dito stream
kung saan kukunin ko na maipakita sa iyo sa sandali lamang.
Ngunit ito ay isa lamang paraan
ng daklot ng isang file ng isang maliit na mas mabisa
kaysa sa paggawa lamang fs.readFile.
Ito ay isang maliit na mas matalinong lalo na para sa malaking mga file.
Kaya mahaba kuwento maikli, mga linyang ito upang maghatid lamang
up ng isang file na tinatawag na index.html
na sa ngayon ay ipinapalagay ay naglalaman ng ang form sa HTML kung saan Alice
at Bob ay maaaring makipag-usap.
Panghuli, io.sockets.on, kaya ito ay mula sa linyang ito up dito.
Kaya, tingin lang ako sa pagbasa ng Binibigyan ako dokumentasyon io.socket
access sa isang tinaguriang WebSocket sa isang browser,
sa pagitan ng mga browser at ang server.
Ako nakikinig para sa espesyal na na paraan ng koneksyon kaganapan
kapag ang gumagamit muna pinindot niya ang server sinusubukan
upang buksan ang koneksyong ito, ako pagpunta itawag sa tawag likod.
At ngayon, pupuntahan ko gawin ang sumusunod.
Ang bawat limang segundo, ano pupuntahan ko gawin?
Pupunta ako sa naglalabas o i-broadcast kung maalala mo sa simula,
ang mga graphical na wika ng ginagawa na ang isang broadcast bloke?
Kaya, ikaw ay pagpunta sa naglalabas
o palitawin ang isang kaganapan na tinatawag na nagkataon mula sa server.
At ito pupuntahan naglalaman ng isang Ping mensahe
at ang kasalukuyang petsa.
Kaya, ito ay isang aktwal na na server chat Alice
at Bob ay maaaring gamitin, ngunit ito ay uri ng isang awtomatikong chat server
kung saan ang mensahe ay lamang uri ng paniktik-submarino ping.
Ito ay lagyan ng petsa lamang sa mga oras na ipinapadala bawat limang segundo.
Kaya, kung ako talaga tumakbo ito bagay - at iyon ito.
Upang maging malinaw down na dito, abiso ito ay lamang ng pag-log pababa dito.
Kaya, hayaan mo akong i-isang bulag mata upang iyon.
Hayaan akong gawin node ng app.js.
Hayaan akong pumunta sa aking browser.
I-reload ang home page dito.
[I-pause]
At hayaan mo akong isara ang inspector.
Ang bawat limang segundo, mayroon akong demonstration kahit na hindi
interactive para sa pantao
ng isang bagay na nangyayari asynchronously.
Sa abiso ng browser, walang icon na umiikot.
Ang paggamit nito ang may interes tampok ng Chrome sa mga modernong browser
ng pagpapanatili ng isang socket koneksyon sa ilalim ng hood
at ito ay kung ano ang tawag dito sa pangkalahatan ay isang pub / sub modelo,
i-publish / mag-subscribe modelo, kung saan hindi pa kami tapos
na medyo tahasang dito.
Ngunit kung ano ang maganda tungkol sa pangkalahatang pub / sub tularan ay
na maaari kang magkaroon ng isa publisher.
Sa kasong ito ang gitnang server at ang lahat ng
isa sa mga indibidwal mga browser ay client.
Alices at Bobs ng mundo ay maaaring mag-subscribe sa ito,
sa gayon maaari mong relay mensahe kasama ng anumang bilang ng mga gumagamit.
At kahit na muli kami hindi na nakakakita ng interactivity,
namin ay may marahil 12 mga linya ng code na gawin lamang ito.
At marahil ito ay hindi isang talon isipin kung paano mo maaaring pumilantik
out ang index.html file na may isang tunay na form ng HTML,
kaunting jQuery code sa Ajax na hindi magpadala ng daytime
ngunit nagpapadala lamang ang kahit anong Alice o Bob uri sa server
at pagkatapos ay ang server ay relay ito.
At nangangako ako sa sulyap sa isang huling bagay lamang
upang mang-ulol ka na may ito.
Kung namin pumunta sa stream zero at isa,
makikita mo ang code na ito lamang isang maliit na iba't ibang mga dito.
Kaya lang nakita mo ito, ito ay isang alternatibo
sa kung ano ang aking tinatawag na ang fs.readFile mas maaga pamamaraan, kung saan,
maaari mong sabihin sa node.js, "Pumunta basahin ang file na ito sa memory.
Ngunit kung ito ay malaki magbigay lamang sa akin isang tipak sa isang pagkakataon. "
At maaari mong malaman mula sa CS165
o 161 ang mga system file magkaroon ng iba't ibang
mga katangian ng pagganap.
Maaaring gusto mong basahin sa mga bloke ng 512 bytes
o 2 kilobytes o kahit ano.
Ito ay isang optimize paraan ng pagbalik ng file iteratively
sa gayon ay maaari mo itong dumura out ng kaunti pa sa mabilis
sa browser o sa kung sinuman ang dulo ng client ay.
Kaya malaking halaga ng nilalaman ngayon at kami ay pagpunta sa sumisid
mas detalyado sa Miyerkules may Tim [ipinapalagay spelling]
sa partikular na pagtingin sa kung paano namin Maaaring magsaling-wika ang ilan sa mga ideya
mula sa unang kalahati ng Siyempre Laravel at mga modelo
sa isang library na niya ang kanyang sarili Sinulat ni tinatawag Bookshelf.js
na kung saan ay naging increasingly kilala sa komunidad
dahil binibigyan ka nito ang karamihan sa mga ito,
kung hindi higit sa pag-andar ng mahusay magsalita
na pagpapabalik ay na library pananaw ng Laravel,
kaya sa higit pa sa na at higit pa kung paano
upang bumuo ng ganap na nasimulan apps sa Miyerkules.
Pagkatapos ay makikipag-namin ang iyong nakikita.