>> Bütün hüququ.
Belə ki, cliffhanger nə idi Node.js siz bu gün bildiyiniz kimi?
Bir şey? Bəli?
>> Bu kimi idi çərçivə yazılı JavaScript
geniş applications -
>> OK ki, işləyir.
>> - Mən kimi bilirəm kimi ümumi istifadə -
və ya bir şey siz edə bilərsiniz kimi -
[Işitilemez Remark]
>> OK yaxşı.
Bəli, belə bir çərçivə var.
Bu engine olan siz JavaScript kodunu icra edə bilər
server site.
Bu demək bilər şeyi sadə
bir command line yazılı kimi deyil Python və ya Bash script
Ruby və ya PHP, ancaq ya JavaScript özü
və onu həyata skript istemi yanıb-sönən.
Yoxsa həqiqətən çalıştırabilirsiniz bir web server ərzində.
Və daxilində əslində özü Node.js,
Bu çərçivədə bütün dəstə edir olan arasında kitabxanaların
HTTP server inşa-in.
Belə ki, siz həqiqətən yaza bilərsiniz biz görəcəksiniz kimi bir server
yalnız bir anda, super asanlıqla yalnız bir az anlaşma tərəfindən
HTTP və TCP və port.
Və bir dinləmə kürü bilər Apache olmadan web server,
Microsoft IIS olmadan.
Hər hansı digər olmadan proqram yüklü,
yalnız bu kürü bilər və ən hər hansı bir port dinləmək
sistem ki, Siz icazə edirik.
Belə ki, hal və bal, Mənə getmək və açaq
Bu misal up, server-0.js.
Belə ki, fark üst Bu fayl, yalnız bir dəstə
maraqsız şərh, və sonra bir neçə var
kodu nümayəndəsi xətləri biz recurringly görmək lazımdır ki,.
Belə ki, var HTTP olur "HTTP" tələb edir.
'Node.js Belə daxili infrastruktur bütün dəstə edir
həqiqətən, yalnız olan modulları kitabxanalar və hər şey sort edir
adı yer ilə unikal identifikator
kimi bu "HTTP" dir.
Belə ki, bir çox kimi Java və C + + kimi languages
və C, yalnız zaman idxal və ya daxildir
və ya node tələb danışmaq bir modul onun bit edir.
Və bütün yaddaş Yüklənmiş almaq tələb edir
RAM və buna görə də istifadə.
Belə ki, sort bu yük tələb kitabxana və ya modulları.
Bu irəli getmək və tələb deməkdir
Bu proqram üçün HTTP kitabxana,
və ki, kitabxana baxın HTTP adlı dəyişən yol.
Amma bu sol simvolu bilər bir şey adlanır, foo,
, baz bar, əhəmiyyətli deyil.
Belə ki, C + + və Java fərqli və C harada tələb zaman
və ya bir kitabxana idxal, yalnız sort
ki, qlobal əlçatan olur
Node.js modulları var daha sıx namespace.
Belə ki, öz - funksionallıq Hal-hazırda yalnız erişilebilir
Bu dəyişən adı yolu ilə.
Siz yalnız başlamaq bilməz mövcud yazaraq üsulları
bu doğru bir yol yəqin yaxşı,
çünki sonra namespace təxminən kimi cluttered almaq deyil
Dil bir çox kimi.
Bütün sağ, belə ki, indi ortaq kimi bir HTTP server yaradılması, gəlir
Jonathan [imla ehtimal] kimi mümkün idi sözün deyil
zəng kimi sadə daxili server metodu yaratmaq
HTTP modul.
Belə ki, bu qayıdır istinad
web server bir növ.
Bu, Apache üçün gəlməmişik mütləq ağır çəki.
Bu bir az sadə deyil.
Və indi mən var yalnız sadəcə bir neçə şeyi.
Belə ki, ilk, mənə diyirləyin bildirin burada alt aşağı
və handler keçmək bir an üçün üsul.
Və, kodu bu xətt bildiriş
server.on olan mahiyyətcə server deməkdir -
, jQuery kodu kimi qulaq asmaq
bir hadisə üçün qulaq asmaq sorğu çağırıb
və yalnız bir tahmin etmək Mən nə etməliyəm
bir sorğu hadisə server yanğınlar.
Bəli?
>> Bu funksiya handler edin.
Belə ki, sözün icra edilən istinad ki, kodu
bu dəyişən və həqiqətən burada rəmzi bir dəyişən,
ki, simvolu nədir istinad?
Bəli, bu adı Burada fəaliyyət
və handler yəqin iki dəlilləri edir.
Niyə iki? Yaxşı, əgər yalnız sənədləri heç oxumaq
bu modul üçün, izah olunacaq ki, handler
ki, istinad olunacaq keçdi ən azı iki dəlilləri,
tələbinə istinad,
və tələbi biz daxilində sözün HTTP sorğu deməkdir.
Belə ki, bütün bu HTTP başlıqlarını Siz geri bilər ki,
Bu əvvəlindən Dövr və ya bəzi əvvəl sinif
və ya kimi təcrübə xətti və host xətti almaq
və User-Agent line ki, bütün daha daxili encapsulated və
bu sorğu obyekt.
Və cavab obyekt giden data sıralanır.
Belə ki, bir istinad var ki, sizə imkan olacaq etiraz
geri məlumat göndərmək üçün üsulları axtararaq browser
ki, sonuncu arqument cavab Res çağırıb.
Amma bu foo adlı və ya ola bilər bar, bu, yalnız konvensiyalar var.
Belə ki, indi mən nə etməliyəm?
Yaxşı, o daxili görünür Bu super sadə web server
Mən həyata edirəm ki, mən aşağıdakı edəcəyik.
Mən bir HTTP yazmaq üçün gedirəm status kodu 200 header,
OK 200 mənası, bütün yaxşı.
Və sonra, mən gedirəm yəqin keçmək üçün.
Bu data növü nedir sağ rəhbəri ikinci dəlil deyilmi?
>> Bu obyekt var?
>> Bu bir obyekt var neçə düymələri və dəyərlər?
Hər yalnız bir doğru, cüt bir əsas dəyər.
Beləliklə, "məzmun növü.
Və yeganə səbəbi Mən burada istinadən alıram
Bu defis ola bilər, çünki Bir minus işarəsi üçün conflated
və ya kimi bir şey.
Belə ki, mən burada sitat var, qarsaqlamaq və ya ikiqat quotes.
Amma yenə ümumi paradiqma
JavaScript kodu tez-tez edir tək quotes bu gün,
kolon və sonra dəyəri.
Belə ki, bu yalnız mind növü sözdə.
Bu HTTP header edir sözün olacaq
content defis növü colon olmaq olacaq ki, mətn slash plain
dan göndəriləcək brauzerinizin server
brauzer bilir ki bu kimi Raw mətn namizəd olub
və ya HTML və ya kimi image və ya bir film
bir flash fayl və ya və ya başqa bir şey.
Indi, mən, həqiqətən, istəyirəm Səhifənin orqanı göndərmək üçün?
Bəli, yalnız oxu sənədlərin
cavab obyekt üçün Bu kitabxana daxilində.
Mən sağ var ki, bax üsul və bir string edir,
bəlkə başqa şeylər lakin minimal bir string.
Və simli var nə brauzerinizin tüpürmək.
Bu halda onun super sadə, onun salam dünya
lakin opne ola bilər bracket, html, yaxın bracket,
açıq bracket rəhbəri, yaxın bracket və s,
Bu Raw html ola bilər.
Amma biz nümunə saxlanılması edirik yalnız spitting tərəfindən sadə
mind növ sadə həyata olan arguably text / plain edir.
Və sonra yalnız response.end əlaqədar yaxın deməkdir
və mən hər şeyi göndər sort daxilində buffered
geri bu obyekt browser.
Mən bitirdim. Bütün hüquqlar.
Belə ki, son şey Burada aşağı yapýyorum
və bu bir qədər , ixtiyari və sərin üçün nəzərdə
Mən deyirəm olunur nəhayət qulaq asmaq üçün server
müəyyən bir TCP default port ilə.
Başdan Xatırladaq sinif ki, xidmətləri -
və ya adətən benzersiz nömrələr müəyyən,
AD web, 443 HTTP əsaslanır edir web saytları, 22 SSH edir, 21 FTP edir
və 1337 yalnız özbaşına deyil lakin 1024-dən çoxdur
ən deməkdir sistemləri, mən bunu istifadə edə bilərsiniz
super qoymadan istifadəçi güzəştlər.
Belə ki, yalnız rahat deyil.
Amma 8080 off - bir ümumi böyük bir, 8088, həqiqətən bir şey
ümumi olaraq minlərlə lakin bu, yalnız daha elit edir.
Bütün hüquqlar, belə nə olar Mən, həqiqətən, bu çalıştırdığınızda?
Bəli, mən yalnız ziyarət yoxdur bir brauzerinizin səhifə.
Bu fayl server-0.js adlanır.
Yenidən, Apache, çünki İndi şəkil
ikinci yarısında üçün əlbəttə.
Mən web istəyirsinizsə server, mən yazmaq lazımdır
və sonra bu web server run.
Amma bu çıxır ki, JavaScript həm klient tərəfində
və server yan edir bir şərh dil.
Belə ki, mən lazım olan bütün edir tərcüməçi.
Belə ki, it's - çalıştırmak üçün təkid əgər node və sonra server-0.js,
Mən bilər və ya görmək bilər asılı olaraq bəzi çıxış
nə kitabxana Mən daxil etdik, heç bir şey baş görünür.
Amma mənə bir getmək bildirin browser və getməmə
Eyni IP ünvan mənim CS50 müştərilərin.
Lakin bu, yalnız ola bilər eləcə də mənim Mac ola
və ya sonra mənim PC və hit daxil edin.
Bu, həqiqətən, Apache kimi görünür.
Bu kataloq kimi biz baxdı listing
İlk yarıda da.
Belə ki, mən səhv nə idi?
Bəli.
[Işitilemez Remark]
Məhz, sağ?
Belə ki, Apache hələ dinlədiyini default port 80.
Hesab edirəm ki, dəyişə bilər, baxmayaraq ki, Mən bütün birlikdə onu söndürmək bilər
lakin hələ də çalışan.
Amma bu uşaqlar bilərsiniz əlbəttə arada.
Mən sadəcə qoymaq lazımdır colon bəlkə sonra 1337 və
və ya bəlkə bir çizgi at Bu limanın daxil olmaq üçün son
Bu server çalışan edir.
Və indi görürük hello, dünya qayıdıb.
Və mən yenidən təşkil edə bilər Mən istədiyiniz kimi bir çox dəfə,
hələ bir səhifə qədər xidmət edir.
Mən Chrome-nin açmaq həqiqətən əgər inspektor, şəbəkə getmək
və sonra bütün səhifəni,
həqiqətən bu idi ki, görürsünüz gönderilen sorğu.
Mən Raw mənbə baxmaq, əgər
mənim brauzerinizin göndərir qeyd o hər şeyi.
Və sonra cavab server super sadə idi.
200 var.
Çox aşağı deyil əgər ekranda,
içerik növü var.
Və sonra Node.js sort avtomatik
Mənə tarix əlavə və digər məhsullarının bütün
brauzerlər adətən gözləyirik.
Belə ki, yalnız bir görək az ağlı başında olma kontrol.
Mənə kodu geri edək server-0.js və mənə bildirin -
Mən getmək hər zaman handler,
mənə yalnız console.log deyirlər.
('Biz qonaq idi! ").
Mən compile ehtiyac yoxdur və ya kimi bir şey,
bu bir şərh dil var.
Belə ki, indi mənə geri imkan səhifə, bir yeniden, iki,
üç dəfə və getmək mənim pəncərə geri.
Və indi görürük.
Yaxşı ki, qəribə deyil Mən altı xətləri görürük.
Maraqlı web trivia, niyə Mən üç altı sorğu almaq?
Bəli?
[Işitilemez Remark]
Bəli. Belə ki, bildiyiniz kimi üst az axmaq icon
browser bar ki, bir çox
saytları istifadə qüdrətinin bir Harvard yal olmaq,
bir şirkət logo ola bilər və ya kimi bir şey.
Belə ki, sort bu gün brauzerlər
üzvü presumptuously etmək bir əlavə HTTP request
demək olar ki, hər haqqinda üçün var, əgər yoxlanılması ziyarət
default bir fayl ilə favicon.ico adlı
kimi eyni dizinde İstediğiniz file.
Və əgər, bu qoyur orada icon.
Beləliklə, biz gördükdə bütün dəqiq ki,.
Və əslində, görək, əgər biz daha növü artıq bu edə bilərsiniz
həyata yalnız, 'Biz bir qonaq idi.
Mənə davam və çıxış gedək.
Mən yalnız bu bilirik sənədlərin baxaraq.
Daxilində bir əmlak var URL adlı sorğu obyekt
yol olmaq olur
ki, tələb edildi faktiki URL.
Belə ki, mən server yenidən başladın əgər sadəcə node rerunning tərəfindən
server-0.js və İndi yoxdur bu bir, iki,
üç və burada geri getmək.
Orada deyil.
Slash nə mən - tələb insan
favicon.ico edir nə browser edir
presumptuously tələb.
Amma nöqtə deyil çox favicon stuff
lakin server idarə olunur necə.
Bəli?
>> Nə var ki, bəzi sorğu olacaq?
>> Nə ki var - HTTP necə təbiəti ilə.
Belə ki, HTTP yalnız tələb edə bilər bir zaman bir fayl.
Brauzerlər bu gün ağıllı ola bilər
və TCP saxlamaq bağlantısı açıqdır.
Siz, ümumiyyətlə, CS143 aldı və ya şəbəkə ilə tanış,
belə ki, səmərəliliyinin mənfəət əldə edə bilərsiniz
şəbəkə tutaraq socket açıq
çox HTTP edilməsi üzərində seri sorğu
lakin onlar bir fayl istəyirik istek başına.
Belə ki, ziyarət əgər kimi bir şey -
Mən biz bilərsiniz demək ən hər hansı bir web.
Siz getmək varsa - nin qoparmaq imkan burada Chrome müfəttiş.
Bu ən doldurmaq əldə edə bilər Səhifənin.
Şəbəkə nişanı getmək və www.cnn.com gedin.
Və səfər cnn.com, onun ana -
daha amansızlıqla brauzerinizin edir - hələ hesablanması.
OK. Ən azı 289 HTTP sorğu təkrar.
Siz ziyarət niyə və bu xüsusilə şişirilmiş saytları,
Onlar yüklemek üçün yavaş danışırsınızsa çünki bütün
aktivlərin onlar loading edirik.
Belə ki, 298 kimi görünür.
Bəzi Ajax ola bilər Bu nöqtədə davam və ya bir
aktivlərin yalnız aşağıdır.
Belə ki, o hər bir edir fərdi sorğu geri gedir
və irəli, geri və irəli.
Və niyə əvvəllər, hətta var biz sort danışdı baxmayaraq
Bu barədə bir qədər fars düyünü Siz script tag qoymaq yerləşir,
tamamilə edir Siz zaman fərq -
bir çox başlamaq trafik və bir çox
faylları tələb edilir.
Və bu hər təmsil yəqin ki, bir şəkil, bir media fayl,
bir JavaScript fayl, CSS faylı və ya kimi.
Belə ki, biz qədər artıq olduğunuzda Bəzi 4 megabayt yalnız
bugünkü xəbərə baxmaq üçün.
Yaxşı sual.
Bütün hüquqlar.
Belə ki, bəzi nə baxmayaraq upsides?
Sağ, biz etmək üçün necə artıq PHP ilə web pages.
Və bir çox gəldi Django bilmədən sinif
və Python və ya Ruby relslər.
Belə ki, niyə biz hələ bir ehtiyac yoxdur dil və infrastruktur?
Xüsusilə Node.js nədir Bilirsiniz, əgər yaxşı?
[Pause]
Bəzi şey?
No? Bəli?
>> Mesajları retranslyasiya.
>> Belə ki, mesaj retranslyasiya.
Belə ki, doğrudur və bu doğru bir daha çox texniki səbəbdən
və həqiqətən Node.js və JavaScript xüsusilə
asinxron yaxşı uyğun kodu,
yaratmaq vasitəsi əgər illüziya
Çox bunu dəfə şeylər.
Belə ki, onlar baxmayaraq həqiqətən seri baş,
həqiqətən çox hallarda, JavaScript klient həm
və server yan edir vahid yivli.
Hansı 161 alaraq edirsinizsə və ya hətta 61 o deməkdir ki, -
Bu proqramın bilirik,
tərcüməçi bilər sözün yalnız bir dəfə bir şey yoxdur.
Amma bu böyük deyil bir web server kimi bir şey
Siz onlarla və ya ola bilər, burada yüzlərlə və ya bəlkə hətta min
istifadəçilər bütün çalışır Sizin web daxil olmaq üçün
çox eyni zamanda.
Və hələ, göstərir ki, ki, onlara baxılması bir
sonra digər sonra digər, xüsusilə də əgər, bəzi
biz gördüyümüz kimi o sorğu CNN xidmət tələb edə bilər
siz əvvəl 300 faylları up hətta növbəti istifadəçi almaq
görmək istəyən xəbər deyir.
Node.js daha uyğun kimi mühit üçün.
Nə olar, çünki Hər yavaş çalışan prosesi
disk bir fayl oxumaq və ya kimi bir verilənlər bazası querying və ya söhbət
digər şəbəkə server,
ki üçün çalışır gizlilik, sağ?
Sizi olmasaydı 61 və ya 161 Bu növ başda olmaq üzrə bütün
periferik xidmətlərin çox yavaş olmaq meyli
daxilində bir şey bunu daha Eyni RAM və eyni CPU
Bu halda demək server həqiqətən çalışır.
Amma nə haqqında gözəl Node.js siz ki, -
və JavaScript daha çox, ümumiyyətlə Siz bir şey edə bilərsiniz ki,
və sonra, Hmm ", deyə Bu gedir
Mənə bir neçə ms etmək və ya hətta bir neçə saniyə.
"Məni sort ki, off ödemek edək ancaq əsl proses deyil.
Və sonra bunu həyata zaman ki, yavaş çalışan prosesi
bir satır qənimətçilik kimi verilənlər bazası və ya bir fayl oxu. html
disk, o, mənə geri almaq deyil
Mənə bunun üçün gözləməli olan daha.
Belə ki, bu daha aydın etmək üçün.
Bu, mənim vasitələri edir bu daha tanış edilməsi.
Bütün hüquqlar, belə ki, bu deyil Meydanda Shack Shake.
Bu növ edir ümumi paradiqma
asynchronicity izah üçün.
Bu əslində bir yaxşı Məsələn, çünki Shake Shack
və dadlı Burger olduqca var onlar nə üçün yavaş.
Lakin baxımından etdiyiniz edir sifariş alaraq həqiqətən yaxşı
və sonra pulunuzu alaraq siz ərzaq üçün gözləyin.
Belə ki, bu, həqiqətən bir daha yaxşıdır alternativ çox dizayn.
Siz daxil gəzmək Güman Çünki Bu kimi bir mağaza və siz var
xətti qarşısında və Sizin sifariş və istədiyiniz
Burger, mən yaxşı kimi demək, ən azı beş edir
dəqiqə və ya daha çox əslində bir Burger almaq.
Belə ki, bu cür olardı pis biznes modelinin
Əgər sizin üçün beklerken burger, Alice [güman imla]
və Bob [imla güman] və Charlie [fərz imla]
və başqa hər kəs arxasında kuyruk
və sözün blok olunur Sizin qida gözləyir line.
Belə ki, açıq-aydın, Shake Shack
və digər fast food yerlərdə bu yoxdur,
bu kimi bir şey.
Onlar bir buzzer verir.
Onlar sort Sizin yolda sizə göndərmək.
Və onlar tərəfindən sizə zəng bu kiçik şey vibrasiya edilməsi
və ya flash diqqət almaq üçün.
Belə ki, bu sözün nədir?
Node.js kimi bir şey yoxdur.
Əgər Node.js və ya JavaScript ümumiyyətlə istifadə olunur
və proqramçı kifayət qədər ağıllı deyil
həyata keçirmək üçün, "Siz nə bilirik?
Mən nə olursa olsun burada sıra bilər
ms və ya saniyə.
Siz nə bilirik?
Mənə davam və gedək sinxron zəng -
"Ki, oğlan blok edir line hər kəs ", -
mənə gedək qabaqda və sort kənara addım
və sadəcə özümü geri zəng
ki uzun çalışan əməliyyat tam. "
Və əlbəttə zəng bu halda oxuyurdu olunur
bir zəng funksiyası, bir kod chuck istinad
ki, edam olacaq Sizin burger hazır zaman
çox bu şey kimi bəzi funksionallığı inşa-in cür
Bu Titrəmə başlayır və ya sizin üçün zaman zaman cızıltı
geri zəng etmək xəttin ön.
Belə ki, bu nə real baxımından demək?
Yaxşı, biz var bizim yol çalışır.
Belə ki, mənə gedək qabaqda və ilk bunu.
Server-1.js, mənə bildirin ilk kodu sadələşdirmək
belə ki, biz doğru körpə addımlar edə bilər daha çekici problem.
Bu dəqiq eyni Mən əvvəl yazırdı ki, proqram.
Amma nə dəyişdirildi?
Yüngül növ var sintaktik fərq
Bu arasında version bir an əvvəl 0.
Nə həyata atlamalar Siz geri əgər?
Bəli Cynthia [yazım güman]?
[Işitilemez Remark]
Bəli. Beləliklə, biz bir xətt var funksiyası da qəbul olunur
Biz növ xilas kazanılmış etdik
və lazımsız adına handler funksiyası.
Əvvəl yalnız faydasız hətta bir yerdə zəng
Mən, həqiqətən, ehtiyac yoxdur bir ad verilməsi vaxt sərf
və daha edilməsi alt kodu üst oxumaq.
Belə ki, yalnız inline bəyan edək anonim funksiyası var.
Mən digər iki şeyi edirəm.
Mən daha yaxşı edilməsi alıram dot notation istifadə.
Belə ki, jQuery, node bir çox kimi üsulları birlikdə chained bilər.
Belə ki, zəng tamamlayın dəfə bir şey, siz yoxdur
yeni xətt üçün gözləmək və başqa bir metodu zəng
yalnız zəncir bilərsiniz birlikdə onlara.
Və bu yolla, biz həqiqətən bu qədər bərkidin.
Belə ki, bu sözün bir beş xətləri web server
kodu cəmi fərqli olaraq -
nə normal güc fərqli bir şey qurmaq üçün nə etmək lazımdır.
Mən server daxil edin 2 indi, bunu edək.
Server 2 - həqiqətən edək geri server 2 gəlir.
Async-0.js açmaq indi edək və əl ki, problem həll.
Belə ki, ilk, gidelim irəli və açıq
Brauzerinizin async-0.js up.
Async-0 Belə ki, mənə gedək brauzerinizin geri.
Yenidən Hit.
İndi, bu cür səhv mesaj.
Həqiqətən mən bir 500 görüyorum Chrome-nin müfəttişi.
Amma mənə daha dəqiq bildirin hello.txt tələb.
OK. Belə ki, bu iş görünür.
Belə ki, async-0.js görünmür çizgi üçün bir şey qədər xidmət edir.
Bu, heç bir default fayl dəstəyi var.
Amma əgər mən açıq-aşkar hello.txt tələb,
ki, dəstək görünür.
Niyə ki?
Yaxşı, nə mən burada getdi etdik
və görülən həyata keçirilir bir super sadə web server
göstərir ki, burada asynchronicity faydalı ola bilər.
Və həyata keçirilir aşağıdakı kimi.
Birincisi, mən istifadə edirəm HTTP modulu yenə,
həm də FS olan yəqin ki, dayanır?
CS, fayl sistemi ümumi.
OK fayl sistemi.
Beləliklə irəli FS, fayl sistemi.
Bütün hüquqlar, belə nə Bu mənə verir?
Ilə bağlı İşlevsellik keçdi olmaq kimi faylları,
yazı, faylları açılış rehberler, oxu rehberler
və stuff ki cür bütün.
Belə ki, indi bu kodu qeyd , əvvəl olduğu kimi eyni
keçən, server yaratmaq anonim funksiyası.
Bu cür özbaşına deyil.
Bu, çox deyil təhlükəsiz web server.
Əslində, siz gedə bilər sabit ən hər hansı bir fayl
və ya server sabit haqqında Bu kodu icra sürücü
Mən yalnız kor-koranə deyiləm, çünki Mən gedirəm ki, fərz
qamarlamaq üçün nə istifadəçi URL tələb.
Mən gedirəm dot ilə prefiks
Mən cüzi deyiləm ki, belə təhlükəsiz olan
deyərək hər hansı bir fayl onlar sorğusu ən azı start var
cari kataloq.
Əlbəttə burada bir təhlükə var.
Çünki əgər onlar əvəzinə nə daxildir?
Onların yolunda, onlar cür bilərsiniz çox ki, ətrafında çalışır.
Dot, dot, sağ?
Belə ki, istifadəçi yalnız nöqtə qoymaq əgər, URL dot, nəzəri,
onlar əldə başlamaq bilər my - və parol fayl deyirlər.
Belə ki, bu nəzərdə deyil təmin edilə,
Bu sadə üçün nəzərdə edir.
Belə ki, burada, mən bir dəyişən var dot concatenation edir
Hazırda directory olan və sorğu URL
biz əvvəl gördüm kimi və ya / hello.txt doğramaq.
Belə ki, indi bu olur az daha maraqlı.
Birincisi, alt bildiriş.
Mən dinləmək alıram əvvəlki kimi eyni port.
Belə ki, real maraqlı iş burada daxilində deyil.
Hər dəfə bir sorğu təbiət gəlir
bu kodu, mən nə edirəm?
Mən fayl zəng edirəm sistemin oxu fayl metodu,
yolunda keçən Mən oxumaq istəyirəm ki,.
İndi, bu nə maraqlı var,
Bu həyata edir asinxron metodu.
Siz geri ala bilmir read faylı dəyər.
Fakt bildirişdə var heç bir sol ifadə
read fayl sol.
Bu dəyər qayıtmaq deyil.
Əksinə, bu bir zəng çağırır hazır zaman funksiyası
bir cavab geri vermək.
Belə ki, daha aydın olmaq, , yesteryear isə
çox proqramlaşdırma Dillər, siz istəyirdi
bir fayl halda oxumaq point PHP,
fayl çizgi almaq məzmunu vurğulamaq,
Bir sol ifadə var sonra bütün dəyəri -
bərabər işarəsi əvvəl, ki, siz təyin etdiyiniz deməkdir
dəyişən qaytarılması ki, funksiyası dəyəri.
Siz Node.js bunu edə bilərsiniz, lakin adətən var
aydın sinxron zəng etmək üçün funksiyaları versiyasını istəyirəm,
Mən sync oxumaq edirəm fayl və ya sync faylı oxuyun.
Mən bunu adına nə unuttum.
Və verəcək bir qaytarılması dəyəri.
Amma fayl əgər bəzi ucqar fayl sistemi
və ya disk, yalnız təbii yavaş 10 ms bilər
və ya ki, fayl üçün 2 seconds həqiqətən geri gəlmək.
Eyni zamanda, heç bir digər web qonaqlar xidmət olunur
Sizin websit tərəfindən.
Siz blok edirik.
Ki, deyirlər nə var IO Giriş / çıxış blok.
Belə ki, burada, bu çox asan.
Nə Node.js gedir
tərcümə ilə etmək Aşağıdakı edir,
zəng etmək olacaq Oxuduğu fayl metodu,
var olan fayl bir qədər cəhd dəyəri P. müəyyən bir yol
Və sonra əgər hazır zaman siz məzmunu geri vermək
fayl P, zəng edəcək kimin imza bir funksiyası
Konvensiya tərəfindən aşağıdakı.
Iki arqumentlər ilk olan bəlkə Xətalı obyekt,
kapital E, bu obyekt var Error ya Null adlı
belə səhv var,.
Və ikinci arqument - almaq bir tahmin - nə olacaq?
Bu ancaq açıq-aydın data deyirlər məlumat daha konkret nədir?
>> Contents?
>> Hello.txt məzmunu Məsələn mən çıxardı
bir an əvvəl mənim brauzerinizin up.
Fayl oxumaq üçün başqa sözlə belə və bir çox funksiyaları Node.js
kimi at dəyərlər qayıtmaq yoxdur.
Onlar callbacks zəng və keçmək
o callbacks nə olardı ənənəvi olmuşdur
dəyər qayıt.
Bu yanaşmanın üstdür
Siz zəng edə bilər ki, fayl bir t0 oxuyun.
Zəng funksiyası gücü bir tick sonra adlandırmaq olmaz
belə T danışmaq, bu bir T1000 cəlb oluna bilər,
min sonra ticks.
Amma məsələ ondadır ki, bu fayl kodu istirahət,
əgər hər hansı bir dərhal ki Node.js isə edam olunacaq
və isə fayl sistemi oxumaq necə tutulur
ki, fayl və almaq sizə geri.
Belə ki, bu yaratmaq -
belə səmərəli illüziya
paralellik bildirdiğiniz isə yavaş çalışan proseslər deyil
mühüm stuff blok, hissəsi ki, istifadəçilər xidmət.
Belə ki, necə biz bu idarə edirsiniz?
Bu çox ümumi Node.js paradiqma.
Və yolu yalnız asanlaşdırmaq üçün var bu biz əvvəl birlikdə görəcəksiniz edir.
Varsa, mən ilk yoxlanılır Error null deyil.
Belə ki, bu, yalan deyil, əgər sonra bir səhv var idi.
Hesab edirəm ki, nə bilmirəm bəlkə fayl yoxdur.
Mən icazələrin yox idi.
Bu pathname səhvdir.
Hər hansı bir sayı yanlış getmək bilər.
Indi üçün, mən gedirəm özbaşına 500 qayıtmaq
daxili server səhv edir.
Bir şey yanlış getdi.
Mən, həqiqətən, qayğı yoxdur onu diaqnoz.
Belə ki, yalnız demək bildirin istifadəçi sınıq oldu.
Və sonra, mən gedirəm res.end etmək,
və bu stenoqrafiya notation edir.
Ki, ötən Xatırladaq dəfə res.write etdi
və sonra mən res.end etdi.
Yalnız istəyirsinizsə çıxış bir xətt göndər
Siz yalnız bir dəfə onu bütün edə bilərsiniz bir arqumenti ilə res.end ilə,
və göndərmək olacaq səhv nə
Bu obyekt daxilində browser.
Bu olduqca arcing edilib bir an əvvəl xatırlayıram.
Mən heç bir fikrim yoxdur nə bu ilk baxışda idi.
Amma xahiş zaman mövcud deyil ki, fayl -
oops, biz run lazımdır server yenidən.
Mən bir fayl tələb zaman yox idi ki, EISDIR,
belə haqqında bir şey bu directory olan,
Mən bəzi təsadüfi əgər var string,
yəqin o deməkdir ki, fayl hətta yoxdur.
Və çünki mənim kodu sadəcə yazmaq deyib
nə Raw out Error mesajdır,
belə çox deyil, istifadəçi dostu lakin ən azı mən onu idarə edirəm.
Başqa, bu idi əgər bir mən nə edirəm səhv?
Tüpürmək əvvəl eyni şey 200 OK həyata, bir düz -
text / plain mind növü və sonra data tüpürmək.
Alıram niyə və ki var hello.txt məzmunu yalnız
Mən baxdı əgər təsdiq hello.txt at,
yalnız sözün hello, dünya.
Mən bu dəyişdi hello, dünya, fayl saxlamaq,
server təkrar, səhifə yeniden.
İndi, mən versiyası almaq.
Belə ki, mən, həqiqətən, yalnız var bir web server reimplemented
çox mövcud kimi il lakin node.js. istifadə
Amma biz bunu edə bilərsiniz daha cleanly.
Me async-1.js açmaq edək.
İndi əlavə alıram görürsünüz başqa modul bu dəfə,
yəqin yol modul.
İndi, bu bir yaxşı baxmaq üçün imkan
nə sənədlər at kimi görünür.
Node.js sənədlərin deyil.
PHP kimi mən hesab edirəm həqiqətən olduqca yaxşı
və düz irəli.
Mən Node.js getmək və Google əgər və Node.js yolu üçün axtarış,
Siz adətən görürsünüz bir URL birbaşa link
Mən bir an əvvəl burada qoymaq.
Belə ki, / api rəsmi yerdir sənədlərin üçün getmək üçün.
Və nə üst görəcəksiniz
node rəsmi sənədlərin üsulları bütün və
və ya daxili xassələri bu modul,
olan bir qoşulmaq adlanır.
Və qoşulmaq köməkçi funksiyası ki, mənə imkan olacaq
ilə narahat deyil bütün pluses.
Və bu əlavə etdi siz görəcəksiniz kimi bonus
doklar onu da nəticədə yol normallaşdırır.
Belə ki, istifadəçi və ya nöqtələr varsa dot nöqtələr və ya hər hansı bir birləşməsi və ya
nisbi bu cür upsides arasında yolları,
qoşulub metodu olduğunu ki, bütün təmizləmək olacaq
və bir kanonik vermək hər hansı olmadan yol
həmin nöqtələr və ya dot nöqtələr.
Belə ki, yaxşı bir şey var ən azı təhlükəsizlik üçün ümumi
Siz yoxlanılması edirsinizsə Mən deyiləm dəyər qayıtmaq
bu sadə halda.
Amma mən bunu istifadə etmək istəyirəm idi.
Belə ki, indi yolu yaratmaq az daha program
path.join əvəzinə ilə Raw concatenation edir.
Belə ki, bir az var daha təmiz.
İndi bir olan alıram görürsünüz az daha ağıllı deyil
yalnız kor-koranə çox faylı oxumaq üçün cəhd edin,
Mən, həqiqətən, gedirəm fs.stat zəng.
Belə ki, tanış değilseniz
aşağı səviyyəli C funksiyaları və C, hətta PHP.
Kitabxanaların bir çox var bu funksiya stat yekunları
mahiyyətcə statistika bir fayl, fayl ölçüsü,
icazələrin adı və bu kimi şeylər,
və həmçinin dolayısı əgər fayl var və ya,
və bir fayl və ya kataloq əgər
və ya simvolik link və ya başqa bir şey.
Belə ki, indi mən deyiləm, qeyd fs.stat zəng.
Və sonra yəqin görə sənədlərin,
Mən geri almaq lazımdır Error obyekt
və ya Null təqib bir stats obyekt ilə.
Amma bu yoxlamaq edək, node.js.fs.
Burada fayl sistemi sənədlər.
Mənə stats axtarmaq edək.
Daha çox var burada funksiyaları.
Üzr istəyirik, ki stat sync, fs.stat.
Belə ki, burada, bu asinxron var stats (2).
Əgər ki, mənası var əsas pages xatırlayıram,
Əsas səhifə fəsil 2,
ki, bu sözün deməkdir yalnız bir node həyata keçirilməsi
aşağı səviyyədə sistem funksiyası stat.
Belə ki, callback iki olur dəlilləri, səhv və stat
stat bir olduğu fs.stats obyekt.
Belə ki, nə bu obyekt görək kimi baxmaq üçün nəzərdə tutulub.
Nin köprü basın edək və mən bunu görürəm.
The stats obyekt var yəqin bəzi köməkçi üsul,
, kataloq file edir ki, digər şeyi bir dəstə.
Mən qayğı ki, "deyil" fayl var bu halda haqqında.
Belə ki, burada mən getmək.
Bir səhv sonra, var idi Mənə yalnız bu dəfə girov ili
və güman.
Bir səhv varsa, bu, idi yəqin ki, bir 404 fayl tapılmadı.
Bu başqa bir şey ola bilər
amma bir az olan alıram yalnız diqqət burada tənbəl
daha maraqlı detalları.
Lakin istifadəçi üçün məqsədləri, fayl aşkar deyil,
hər hansı bir səhv var idi fayl ifadə.
Əks halda, məni yoxlamaq imkan, əgər fayl həqiqətən faktiki fayl.
Belə ki, bir deyil, əgər fayl, mövcud.
Var bir şey var amma yəqin ki, bir kataloq var
və ya bəlkə bir simvolik link
və ya başqa bir şey ki, fayl sistemi funky.
Ya yol, istifadəçi görməməlidir.
Belə ki, indi mən yalnız tüpürmək gedirəm
şərti həyata 403 icazəsiz.
Amma yenə bir konvensiya,
Mən istifadə edə bilər nəzəri başqa bir şey.
Və sonra nəhayət, mənə bildirin faylı oxumaq üçün çalışırıq.
Belə ki, mənə aşağı diyirləyin bildirin.
Və indi bu xəbəri Kodu bir az messy əldə edə bilər,
Mən zəng edirəm ki, görürsünüz fs.readFile keçən
Eyni yolu, eyni kimi son dəfə Zəng,
belə əvvəlki versiyası.
Və sonra mən tapmaq etsəniz -
Mən bunu tapmaq yoxsa, Mən 500 tüpürmək.
Və mən onu tapmaq əgər, nə line biz burada görmək üçün gedir?
Biz fs görmək olacaq yəqin ki, mövzu 200 yazmaq
və göndərilməsi res.end faktiki data.
Amma bu bildiriş.
Bu səciyyəvi deyil ən pis ssenari.
Amma bu stat zəng burada mən bəzi məhsulları daha.
Sonra mən başqa var burada asynchronous zəng,
daha abzas.
Belə ki, yalnız cür extrapolate Burada ola bilər, əgər.
Nə problem ilə yarana çalışır JavaScript kimi dil
bu mühitdə Siz geri dəyərlər yoxdur
lakin siz bu callbacks.
Və əlbəttə, bu yalnız edir bir üslub şey fakt
Mən indenting saxlamaq.
Amma bu almaq məntiqi növbəti addım.
Var biri idi və ya düşünək iki və ya üç digər funksiyaları
Mən icra etmək lazımdır ki, təbiət Asynchronous tərəfindən idi,
və buna görə də yalnız cür onları idarə etmək üçün indenting saxlamaq,
onları idarə etmək, onları idarə etmək.
Yığırsınız növ almaq cəhənnəm insanlar zəng kimi
Sizin kodu başlayır çox geniş almaq üçün
və oxumaq üçün səmimi həqiqətən çətin.
Olduğu kimi, mən növ çətinliklə bilər bu sort bir hərəkəti olduğunu demək
Bu növ var
və stylistically bucaqlı şey burada gedir.
Belə ki, bu ideal deyil, çünki Bu çox tez ola bilər
yöndəmsiz, baxmayaraq iki asynchronous çağırır
Belə bir böyük.
Belə ki, bu qarşısını almaq bilər?
Siz glimpsed bilər Mən bir an əvvəl misclicked.
Sənədlərin, bilirsiniz, statSync var kimi görünür.
Və statSync daşımır bir arqument kimi bir callback.
Bu, yalnız yol edir, çünki yəqin nə edir?
Bu instansiya qaytarır fs.stats edir.
Belə ki, bu sizin ola bilər ilk instinkt, sağ?
Xüsusilə əgər callback funksiyaları
və asynchronicity a sizə az yeni, səmimi,
asan yanaşma yəqin ki, yalnız bütün problemin qarşısını almaq
birlikdə, düzmək üçün geri CS101 stil proqramlaşdırma
Siz funksiyası zəng və ya metodu, dəyər qaytarır,
funksiyası, yekunları zəng dəyəri,
funksiyası, dəyəri qaytarır.
Mən buna görə də istifadə edə bilər fs.statSync
sanki eyni olan ancaq bir sinxron versiyası var
olan qaytarır deməkdir dəyəri.
Bu keçmir bir zəng üçün qiymətləndiririk.
Amma niyə yəqin ki, bir olacaq müraciət suboptimal puç
sinxron funksiyaları?
Bəli?
[Işitilemez Remark]
Məhz, bu, uzun zaman alır.
Siz yalnız yavaşlatan edirik hər şey aşağı.
Çünki çox Shake Shack kimi və ya Tasty Burger, onlar xilas əgər
o buzzers və sizi, müştəri qarşısında durmaq
Sizin ərzaq hazırdır xəttinin qədər hətta sifariş alaraq əvvəl
arxasında şəxsin Siz açıq-aydın
put vasitəsilə aşağı yavaşlatır.
İnsanlar tərk başlamaq, Siz sort paket cəlb edir.
Siz hər hansı bir sayı edə bilərsiniz burada analogiya.
Lakin qısa, bu yəqin ki, yaxşı bir şey deyil
biznes üçün və ya server üçün.
Belə ki, asynchronous kodu adətən yaxşı azı
bu halda, lakin bu, mütləq bəzi angst səbəb başlayır.
Və əslində mən demək cəsarət ilk bu stuff yazı,
bir az almaq lazımdır alışma bit.
Belə ki, təchiz başlamaq edək bəzi kitabxana ilə
və texnika etmək asan bu bir az.
Belə ki, ən ümumi biridir kitabxana məşhur kitabxana var
bu gün, bu bir async.js çağırıb.
Və Node.js bir çox kimi kitabxana və ya modulları,
Bu bütün açıq mənbəyidir.
Onlar demək olar ki, bütün canlı və almaq növü olan hub depolar
de-fakto olmaq bu şeyi saxlamaq üçün yer.
Və sonra bir var bütün infrastruktur
bu şeyi quraşdırma üçün NPM, Node Package Manager adlı
siz tanış değilseniz EvanTube növ ilə
kimi app və ya app almaq.
Siz tanış edirsinizsə Red Hat və Fedora ilə
cihaz kimi, bu yum kimi.
Amma bir node var - bu bir paketi meneceri
bu xüsusi ətraf mühit üçün.
Belə ki, biz download və quraşdıra bilərsiniz Bu async kitabxana kimi şeylər
və başqa bir adlı kitabxana və ya modulu vurğulayır.
Amma bu qədər fs, HTTP, yol,
o bütün gəlmək node inşa.
Biz API docs getmək əgər, həqiqətən inşa görürsünüz
node daxil pulsuz almaq modulları bütün dəstə.
Amma gözəl insanların çox haqqında internet onlarla etdik
yüzlərlə əgər digər kitabxana
hər şeyi daha yaxşı etmək və ya fərqli.
Belə ki, bir nəzər edək Bu kitabxana işləyir.
Belə ki, bu kodu ən çox bu an üçün eyni.
Mən olan bir yol var üst yaradılmışdır.
Və indi zəng edirəm async.series.
Belə ki, async kitabxana, bu sizə imkan verir ki, yalnız bir kitabxana
adətən keçmək və ya qaldırmaq bir adlı almaq üçün funksiyaları
yalnız cür digər sonra ki, abzas məsələnin qarşısını almaq,
və həqiqətən yalnız psixi daim ortaya çıxacaq angst
ən azı zaman ilk öz bu dalış
asynchronously proqramlaşdırma ilə.
Kənara, siz qəbul əgər kimi 161 və qıfıllar ilə məşğul olduğunuz
və şərait və bütün qaldırmaq ki, asinxron kodu
və kimi bir mühit Node.js, çox əslində
çox sadə arguably
həqiqətən yazılı çox çoklu kodu.
Anytime var çoklu kodu,
Siz artım şərait var.
Siz narahat olan iki mövzuları
eyni ehtiyatlarının disk və ya yaddaş.
JavaScript gözəllik
Node.js da var ki, sözün yalnız bir sap,
brauzer deməkdir
və ya server yalnız bilərsiniz bir dəfə bir şey yoxdur.
Bu, yalnız sizin üçün var proqramçı
üçün ruhi model saxlamaq Siz sort şeyi növbə necə
və anlamaq necə kodunuzu sifariş.
Amma narahat heç vaxt haqqında şərait qaldırmaq
tamamilə eyni şəkildə da bu kimi Raw kodu ilə ən azı.
Belə ki, bir az var burada grack çətin.
Amma - Mənə açmaq bildirin yalnız bir an üçün docs.
The async.js kitabxana Eynilə, çox googleable edir
bu GitHub yaşayır onların bir çox kimi repot.
Bu hesab etməyin yamalak, bu deyil.
Mənə aşağı diyirləyin bildirin burada oxunmuş Me üçün.
Belə ki, async kitabxana bütün dəstə edir
Bunun içərisində üsulları.
Məsələn, var hər deyilən bir üsul,
Mən yalnız bu basın bir an üçün docs görmək,
bu bir funksiyası və ya metodu ki, bir şey üçün imkan verir
bir dörd hər kimi lakin paralel.
Onlar bütün baş olacaq potensial paralel.
Və hər metodu yalnız sizə geri olacaq zaman bütün
bu tekrarlamalar tam var.
Belə ki, bəlkə onlar baş digər sonra bir.
İdeal halda, onlar baş mahiyyətcə paralel.
Amma üsul deyil sizə zəng.
Bu buzz deyil sizin buzzer bütün qədər
siz elementləri artıq başa iterated.
Belə ki, yalnız bir gözəl yoludur
istifadə aradan qaldırılması sadə dörd loop
lakin həqiqətən bunu bir şey asynchronously.
Amma indi daha çox birbaşa bu nümunə ilə əlaqədar,
bildiriş bu var seriyası metodu.
Və mənə yalnız qoparmaq imkan bir sadə canonical misal.
Belə ki, async kitabxana, seriyası nəzərdə tutulmuş metodu edir
array kvadrat mötərizədə tərəfindən.
Məlumat hansılardır elementləri növləri
əsasında bu array bir sadə misal üzərində?
Bu funksiyaları bir sıra edir.
Belə ki, C, deyəcəyi onlara göstəricilərinə fəaliyyət göstərir.
JavaScript, çox var düzgün funksiyaları istinadlar
və ya anonim funksiyaları.
Və bu, yalnız seriallarda deməkdir
əlbəttə əmr edir up sıfır.
Belə ki, onlar saxlanılır var yaxşı bir sifariş
bir seriyası üçün, 'səbəb seriyası Əlbəttə vasitələri bir şey
üçün paralel deyil.
Belə ki, bu, yalnız o deməkdir ki, bu funksiyası icra olacaq,
bu bir, onda bu bir, bu, onda bu,
Lakin bir çox var
nəhayət isteğe qədər callback adlanır.
Belə ki, burada paradiqma bilərsiniz.
Və hətta baxmayaraq ki, bu bir oğlan kitabxana,
bu nümayəndəsi var çox JavaScript paradiqma
yenə callbacks istifadə.
Belə ki, burada nə görürsünüz.
Olan ilk funksiyası Bu array vasitəsilə keçdi
Əgər siz anonim müəyyən yalnız funksiyası ilə fəaliyyət göstərir.
Yəqin Ancaq xəbərdarlıq ki, Bu sənədlərə görə,
ki, anonim funksiyası olmalıdır bir arqument zəng almaq.
Ki, bir pointer olacaq və ya bir funksiyası istinad
zaman siz zəng ki, kodu dəyər qayıtmaq üçün hazırdır.
Belə ki, yenə yalnız fərqli adətən prosessual proqramlaşdırma
siz istifadə olduğunuz dərhal dəyərlər qaytarılması
ki, bir fərq Bu kimi bir kitabxana istifadə
asinxron proqramlaşdırma daha Siz hazır olduğunuzda deyil, ümumiyyətlə
bir dəyər qayıtmaq üçün bir fayl bir verilənlər bazası,
bir hesab-dən ifadəsi, bu qədər var
zəng funksiyası zəng etmək.
Və gözəl şey Bu kitabxana haqqında
Biz docs oxumaq daha diqqətlə ki,
yalnız və yalnız bütün əgər adlı callbacks sahəsi
Xətalı obyekt olmadan, bütün şey nail olacaq?
Belə ki, başqa sözlə, 2 var, əgər
anonim 10 olduqda funksiyaları
Bu array buna görə də bu sıra,
yalnız onların hamısı nail olsaq,
son isteğe callback edəcək uğurlu hesab etmək olar?
Əgər onların hər , hər funksiyası uğursuz
onu verməyəcəyik sonra hətta icra ediləcək.
Belə ki, sort bir gözəl yolu bir papatya zəncir olan
ki, vaxtından əvvəl dayandırır bir şey yanlış gedir əgər.
Belə ki, burada kontekstində bu görmək biz yenidən həyata bilər necə
ki, əvvəlki proqram.
Mən əvvəlki kimi yolunu almaq belə ki, bu asan hissəsidir.
Mən bu skelet kodu yapışdırıb surəti
orada sənədləri async.series açıq mötərizə,
kvadrat bracket açın.
Və indi bir var fark Bu əvvəlində funksiyası
ikinci, biz görəcəksiniz biz bu getmək harada.
İndi qeyd, bir var ilk az mürəkkəb
ancaq diqqət bu xətti ilə girdi.
Fs.stat statistika almaq deməkdir və ya yolu nə deyil.
Zaman hazır bu zəng edin.
Bu kodu əvvəlki kimi eyni.
Bir səhv varsa, bir fərq artıq var.
Yenə çox ümumi paradiqma Node.js proqramlaşdırma edir
bir şey yanlış gedir və əgər bir callback bilməlidir
Konvensiya, ilk ki, bir zəng üçün dəlil gedir
bütün yaxşı və ya əgər, heç bir olmaq Xətalı obyekt istinad,
kapital E. Bu Error kimi qlobal mövcud sinif
lakin daha çox başqa vaxt.
Belə ki, bu etməklə, var əgər səhv, dolayısı nə var?
Yaxşı nə əsaslanır , seriyası görür
bir şey gedir əgər yanlış, biz yalnız növ istəyirəm
bütün seriyası Abort anonim funksiyası çağırır.
Belə ki, mənim üçün kifayətdir yalnız callback keçən qayıtmaq
Hata obyekt.
Çünki stat verdi əgər Mənə geri bir səhv,
Mən yeni bir yarada bilər Öz Error obyekt,
lakin mən, həqiqətən, qayğı yoxdur
Mən yalnız keçmək istəyirəm nə səhv həqiqətən baş ki,
mən onu keçə bilər Bu zəng üçün.
Və yalnız aydın olmaq üçün, qaytarılması ciddi lazım deyil.
Mən mahiyyətcə bunu istəyirəm amma indi "qayıtmaq yoxdur istədi;
/ / Ki, heç bir daha çox burada kodu "həyata keçirir.
Belə ki, daha başqa bir ümumi JavaScript konvensiya,
Siz deyilik baxmayaraq özlüyündə bir dəyər qaytarılması,
Siz dəyəri keçmək istəyirəm zəng funksiyası
lakin sonra istədiyiniz icra dayandırmaq üçün
siz funksiyası mənasız şəkildə
bunu yalnız zəng etmək üçün buraya geri qayıdıb.
Amma yanlış bir şey var,
biz yalnız geri zəng edirik gedir baxmayaraq səhv
undefined dəyəri qayıtmaq üçün.
Bütün sağ, bu deyil çox güman ki, bir dəyər qayıtmaq.
Mən qayğı bütün a daha icra internat.
Belə ki, bu mənim conflation iki xətləri yalnız bir stilist edir
yalnız Konvensiyanın xətti sıra
kodu Mən yalnız yazdı 2 1.
Belə ki, nə?
Bir səhv deyil, əgər -
həqiqətən aydın olmalıdır Mən də qarşısını bilər
ki, əgər başqa etməklə.
Ancaq yenə də, başqa ümumi paradiqma çek
Sizin səhvlər üçün top və sonra yalnız qayıtmaq çox davam
kodunuzu ilə indent elses və elses və elses.
Belə ki, bir deyil, əgər fayl, indi, bilirsiniz,
Mən bu idarə etmək istəyirəm bir az xüsusi.
Belə ki, burada Java və ya C + + kimi və ya bir neçə digər dillərdə
burada instantiate edə bilərsiniz səhv keçən yazın etiraz
bir default mesaj deyil bir fayl
və bu yalnız edir qədər özbaşına.
Amma siqnalizasiya alıram öz bir səhv.
Və nə bu son yoxdur line ehtimalla demek?
Bütün yaxşı.
Siz üçün null keçmək Əgər səhv parametri, yalnız demək
Konvensiya tərəfindən bütün yaxşı.
Belə ki, nə deməkdir məntiqi nə olacaq?
Null qəbul edilərsə callback üçün
bu anonim deməkdir funksiyası nail olmuşdur
belə danışmaq.
Belə ki, nə lazımdır seriyası üsulu əvvəl və indi əsasında yoxdur
əvvəllər mənim şifahi tərifində?
[Işitilemez Remark]
Sağ, növbəti bir hərəkət?
Bir qeyri-null dönmüşdü varsa dəyəri, yalnız abort olardı
və daha çox anonim funksiyası adlanır almaq olardı.
Amma bu, sonra çünki Bu sonrakı adlı olacaq.
Belə ki, burada məntiq deyil olduqca çox eyni əvvəl
və biz təmiz necə görürsünüz bir anda daha bu qədər.
Mən bu çox növüdür həyata
şifahi bütün udmaq və vizual.
Amma indi, ikinci bildiriş Mən istəyirəm ki, anonim funksiyası
sıra icra edir faylı oxumaq üçün cəhd.
Bu zəng zəng Siz hazır olduğunuzda.
Bir səhv varsa, yalnız callback yolu ilə siqnal
ki qalan bu stuff aborts.
Else qaytarılması null.
Amma nə mən keçən edirəm iki dəlilləri?
Mən oxumaq əgər bu zaman fayl və geri almaq
dəyişən, data deyilən kimi
Mən demek yalnız istəyirəm bütün null qaytarılması ilə yaxşı
ilk arqument üçün.
Mən faktiki qayıtmaq istəyirəm İkinci arqument kimi data.
Çünki mən daha oxumaq sənədlərin,
kodu bu son yığın bildiriş kvadrat mötərizə ki deməkdir
seriyası sonu.
Yalnız iki anonim var idi Bu sıra funksiyaları.
Bir səhv sonra, burada var idi Mən bilirəm ki, bəndlərindən biri
bu zəncirin belə danışmaq üçün uğursuz.
Belə ki, başqa sözlə, bu səhv Xətalı obyekt olacaq
ki, null, istənilən halda bu uşaqlar bilmədi.
Ki, işi varsa, mən yalnız deyiləm çıxmağa gedən və mən gedirəm
400 demək üçün sorğu uğursuz deməkdir,
ki, çox ümumi var hata beledir.
Və sonra, mən gedirəm Hata beledir çap.
Belə ki, mən narahat deyiləm bu dəfə super anal ola,
Mən ayırmaq fikrində deyiləm , 500 və 404 və 403 arasında
Mən yalnız cür deyiləm kor-koranə mənim əl dalğa
və bir şey yanlış getdi demək.
Amma heç bir şey idi, yanlış getmək
Mən bu göndərmək üçün gedirəm Bu data keçən res.end.
İndi bu bir az sirli görünür.
Amma oxumaq yenə əgər sənədlərin,
İkinci arqument Bu final, final callback,
yalnız icra edir ki, oğlan Seriyası edilir dəfə
orada icra və ya bir hissəsi , bu bir sıra olacaq
ikinci dəlilləri bütün
qəbul edilmiş callback üçün.
İndi, bu çıxır ki, yalnız bu sıra keçid
ki, həqiqətən ikinci qayıtmaq arqument burada bu biridir.
Mən bir üzrə düzmək üçün gedirəm iman sıçrayış sadəcə güman istifadə
Bu an üçün Son bir üsuldur
ki, siz son verir bir sıra elementləri.
Çünki bu array ki, qəbul edilir
mənə iki Indicies var, sıfır və bir.
Bu, sadəcə sıfır var heç bir dəyəri var Bu oğlan qaytarır çünki -
ikinci keçmir dəlil lakin bu oğlan yoxdur.
Belə ki, bracket nəticələri sıfır heç bir şey,
nəticələri bracket bir nə var,
Siz aşağıdakı olduğunuz halda bu nöqtəyə qədər boyunca?
Bu fayl, hello, dünya content ehtimalla,
belə ki, necə həqiqətən var çap.
Və mənə bitirək burada bir detal.
Mən köhnə bu cür əgər məktəb, mən almaq istəyirsinizsə
son elementləri, Mən əgər nə results [results.length-1]
ki, sort köhnə məktəb yolu
son elementləri daxil - və ya sıfır index array.
Amma tərəfində olduğu kimi, xatırlayıram Mən bu kitabxana idi ki,
burada tərəfindən olan çizgi Konvensiya yalnız adlanır
sanki bir çizgi xüsusi deyil xarakteri,
yalnız kimi cool görünür dollar işarəsi jQuery üçün edir.
Bu yalnız bir yardım edir üsuluyla keçən nöqtə vurğulamaq
ki, dəqiq nə eyni şey.
Və siz onu istifadə heç varsa əvvəl də JS vurğulamaq
klient kodlaşdırma üçün
və server yan a gözəl faydalı kitabxana
təsvir ki, bir çox insanlar Bu jQuery bütün var istəyirəm
üsulları, insanlar dilədi JavaScript özü ilə gəldi.
OK.
>> Belə ki, mənə olduqca kimi və Mən silsiləsindən seyr edilib
yığırsınız kimi var bir arqument kimi?
>> Bəli.
>> Like belə zaman həqiqətən, təkan kimi
və nə kimi Siz yalnız zaman demək
kimi callback və sonra kimi nə -
[Işitilemez Remark]
>> OK, yaxşı sualdır.
Belə ki, mənə qoparmaq edək burada async Baş səhifə
və ya GetHub haqqında sənədlər.
Belə ki, bu canonical edir strukturu.
Siz zəng Bu istifadə edirsinizsə xüsusi metodu seriyası,
bu iki böyük hissələri var.
Biri bir sıra edir anonim funksiyaları
və iki final callback edir həqiqətən ki, funksiyası
çox icra seriyası sonu.
İndi biz bir zoom əgər ilk az daha yaxın
Bu böyük şeyi ki, anonim funksiyaları array
bu tələbi ilə oğlan sənədlər var
anonim olmaq edir ki, funksiyası
bir arqument adlı zəng ilə və ya foo və ya bar, əhəmiyyətli deyil
lakin o callback zəng edir.
Və bu buzzer sort edir Shake Shack sizə əlləri ki.
Bu vasitədir olan Bir dəyər ola bilər
müştəri sizə çünki yalnız sözün qayıtmaq yoxdur bilməz.
Siz bunu var Bu zəng yoldur.
Çünki bu daxilində əgər funksiya bəzi yavaş çalışan
sorğu bazası kimi kodu, oxumaq fayl sistemi fayl,
orada gözləmək istəmirəm blokunun başqa hər kəs,
Siz zəng zəng etmək istəyirəm.
Belə ki, bu sözün deyil dəlil adı.
Amma, C kimi funksiyası göstəricilərinə var.
Java var istinad sistemi üsulları
və eyni burada JavaScript.
Bu dəyişən, lakin onun növü funksiyası var.
Belə ki, sadəcə onun adını yazmaqla olub callback və ya foo
və ya bar, sonra açıq mötərizə və yaxın mötərizə,
ki, icra edirik ki, funksiyası.
Və null keçən olan deməkdir null səhv və bir
olan bu deməkdir Mən daxil keçmək istəyirəm ki, data
Və sonra yığın aydın olmaq, bu bir callback edir.
Və bu callback adlı deyil,
yalnız konseptual a callback üsul funksiyası
adlanır, çünki Açıklama
bu müəllif kitabxana zaman bütün seriyası başa çatıb
yaxud alt bir əgər səhv tez baş verib.
Belə ki, zəng funksiyası adı, callback funksiyası zəng
, zəng funksiyası adı callback funksiyası zəng
müxtəlif callback birlikdə bütün fəaliyyət göstərir.
>> İndi kimi var zəng müəyyən?
>> Xeyr, çünki bu oğlan serialın keçir
anonim funksiyaları,
kodu bir pointer o icra etmək istəyir.
Məhz, bütün hüququ.
Belə ki, demək edin ki, kodu bir az sadə olur.
Belə ki, bilər.
Və mənim kimi değilseniz, almaq ən azı bilmədən rahatlıq,
bu bir müddət alır Bu istifadə almaq.
Amma biz təmiz olar Bu qədər bir az bit,
sizə çox çox atmaq üçün lakin burada bir variasiya var
və onun başqa bir metodu istifadə
Eyni kitabxana şəlalə çağırıb.
Olan üstdür sıra fərqli hər bir
o anonim funksiyaları mahiyyətcə edam
müstəqil digər hər.
Adı təklif kimi şəlalə uppermost funksiyaları imkan verir
cür dəyərlər keçmək aşağı funksiyası,
sort su şəlalə kimi.
Belə ki, bu ayaq Mən cür edə bilər ki,
mənim istifadə üçün istifadə.
Async.waterfall ildə, aşağıdakı bildiriş.
Mən yalnız fs.stat zəng edə bilərsiniz yolunda keçən
Mən istəyirəm ki, statistika.
Və sonra mən əvvəl xatırlayıram anonim funksiyası
ki, iki dəlilləri yoldan idi,
esults və sonra mən adlı callback funksiyası əl?
Başqa sözlə, yalnız olmaq aydın, geri ki, əvvəllər
ASYNC 2, mən bütün etdi Bu murdar iş.
Mən fs.stat P keçdi adlı
öz anonim elan funksiyası.
Səhv, mən sonra yoxlanılır null deyil sonra bunu,
başqa mən, bütün etdi konvensiyalar aşağıdakı gözəllik
kimi Node.js ki callback edir ümumi funksiyaları nəzərdə tutulub
ən azı bir arqument etmək, sıfır Xətalı object
daha faydalı dəyərlər və ya.
Belə ki, burada paradiqma qeyd
Mən bu callback funksiyası elan dəqiq aşağıdakı
paradiqma ki, bu oğlan async kitabxana yoxdur.
Bu demək olan, niyə am Mən öz zəng həyata
üsul bu müəllif kitabxana sözün mənə təhvil
Bir platter belə danışmaq, bir callback funksiyası istifadə edə bilərəm?
Belə ki, mən yalnız keçə bilər istinad mənə verilmiş
ki, dərhal, mənim bir neçə xətləri
kod kodu bir line olmaq.
İndi biz bu getmək yoxdur?
Növbəti funksiyası Mən icra istəyirəm,
növbəti anonim Bu array funksiyası
funksiyaları aşağıdakı yoxdur.
Notice ilk stat edir ilk arqument.
Belə bir şey var artıq dəyişib.
İndi bu oğlan kitabxana yazdı -
və mən oğlan dedi alıram bu bir oğlan, çünki.
Bu kitabxana yazırdı Bu oğlan sənədlər zəmanət edir
ki, əgər burada bu funksiya Mənə geri Xətalı obyekt keçir
və ya null komaya izlədi digər dəyərləri ayrılmış siyahısı,
O əmin edəcək o digər dəyərlər təhvil verilir
bu anonim funksiyası sol sağ üçün.
Və nə yalnız bir olmaq üçün istifadə tək callback funksiyası sadəcə
Sonuncu belə dəlil olur.
İndi, mən deyiləm bilmirəm diqqət yalnız bilirik.
Amma indi, nə burada götürmek?
Belə ki, biz bilirik sənədlərin
və ya nümunələri əvvəlcədən neçə
ki fs.stat nəticədə gözləyir iki dəlilləri ilə bir callback,
bir olan Error obyekt Error obyekt və ya null sonra
istinad edərək stats obyekt.
Mən bu barədə düşünmək Belə ki, Error object coma stats etiraz
ki, paradiqma uyğun Bu şəxsin kitabxana.
Belə ki, mən sadəcə demək olar, çünki Mən ikinci dəlil yoxdur
bu ki, - ki, gedən fs.stat tərəfindən qəbul ediləcək
callback üçün stats, səhv düşmək deyil Bu kitabxana müəyyənləşdirilməsinin,
Mən ikinci qoya bilər mübahisə adı burada
və ya nə mən onu adını dəyişmək olar
Mən təqib istəyirsinizsə burada zəng tərəfindən.
Belə ki, mən bir keçə bilər burada buradan qiymətləndiririk.
İndi bu kodu bütün baxmayaraq edir admittedly qədər sirli
ən azı surəti yapışdırıb əvvəl çox hissəsi.
Yalnız fərq bildiriş burada bir səhv elan edirəm
obyekt və indi istəyirəm bir az meraklısı almaq üçün.
Mən, həqiqətən, bilmək istəyirəm nə səhv, mən gedirəm edilib
Bu obyekt a daxilində qat əmlak özbaşına kodu çağırıb
Mən bilirəm ki, belə ki, bu bir fayl deyil
ki, icazəsiz olmalıdır, bir HTTP 403 var.
Mənə xatırlayaq ki, əvvəl Mən Error obyekt keçmək
callback üçün.
Və sonra nəhayət oxumaq üçün cəhd fayl, belə ki, bu halda,
Çağlayan, sınıq etdik iki böyük addımlar kodu
üç kiçik addımlar.
Burada gözəllik edək,
Mən fs.readFile zəng edə bilərsiniz yolunda keçən.
Və sonra çətin hissəsi əqli, mən yalnız keçirlər
oğlan zəng edir.
O mənə verilməsi oldu şey, mən fs.readFile keçmək gedir.
Biz sadiq edirik, çünki Eyni konvensiyalara,
bir callback ilk dəlildir təqib Xətalı obyekt və ya null
komaya və ya ayrılmış faydalı stuff siyahısı.
Belə ki, indi və əgər nə deməkdir I Mən bilmək lazımdır sənədləri oxumaq
Bu, son zəng, kənarda burada bu oğlan
kvadrat Mötərizədə gedir Error obyekt qəbul edilməsi
və ya yoxlamaq lazımdır olan null həmişə olduğu kimi burada bu kodu ilə.
Və sonra anlayışı ilə Bu metodun
oğlan sənədlərin, geri son dəyəri
son üsulu Mənim anonim array -
anonim funksiyaları mənim array.
Belə ki, nə fayl geri oxumaq etmir
və mən bir qaytarılması istifadə edirəm loosely indi.
Mən oxumaq nə deməkdir arqumentlər kimi fayl pass
zəng metodu onun əlli?
Iki arqumentlər, ilk Xətalı obyekt və ya null,
demək olar ki, həmişə cavab olacaq.
Və ikinci şey gedir nə oxumaq fayl olacaq?
Fayl məzmunu, biz əvvəllər deyilən data.
Belə ki, sadəcə elan edərək səhv düşmək, nəticəsində,
və səhv bu kontrol sort indi qazma.
Başqa, mən res.end nə ki, nəticəsində keçən.
Bu, şübhəsiz ki, mükəmməl sync deyil
qədər həqiqətən özünüz yazın.
Amma indi üçün, almaq üz ən azı fakt
Bu yəqin olduğunu ümumi paradiqma vasitəsi əgər biz
və kitabxanalar müəllifləri stick bütün sort
bu Konvensiyanın ilə callback üsulları.
Və ilk arqument Xətalı obyekt və ya null.
Və ikinci və üçüncü
və dördüncü obyektləri şeylər var biz qayğı və biz sort
qaydaları edin və sənədlər.
Biz kodu ilə başlayan vicdanla olduqca çirkin deyil.
Və hətta ən son Məsələn cür ağır səmimi deyil
fikrinizi ətrafında kesmek üçün, Bu, ən azı vizual var
Bu çox sıx var kimi görünür.
Və siz rahat bir dəfə bu, o qədər asandır
və o qədər az meylli var ki, əvvəlki misal çox bugs.
Belə ki, mənə nümayiş bildirin burada son bir şey.
Bu versiya üç edir.
Və - No nin buraxsınlar bu bir tək.
Mənə bir neçə gedək oyunlarınız kimi digər son şeylər.
Bütün hüquqlar, belə server 2.
OK. Birincisi, hər hansı bir sualınız, Mən bu çox olduğunu
lakin daha çox istəyirdi təlimatlar, belə?
Siz yaxşı demədim təlimat mütləq.
Bəli?
[Işitilemez Remark]
Doğru, siz mahiyyətcə edirik əməliyyat sistemi üçün yumşaq
hoqqabazlıq etmək üçün necə anlamaq üçün bir dəfə bu top bütün,
bir fayl oxu, bir verilənlər bazası oxu.
Və bu JavaScript server var özü tək yivli var.
Və mahiyyətcə və həqiqətən,
bir şəkil var I, up atmaq etməyib
və bu, mütləq deyil bütün maarifləndirmə
lakin bəlkə biz verəcəyik Bir ruhi model.
JavaScript özü və node
xüsusilə bu var belə hadisə loop çağırıb.
Vasitəsi, siz hesab edə bilər Node.js, bu proqram,
sözün kimi sonsuz loop.
Bu gözləyir, yalnız bir vəhşi loop var və gözləmə və gözləmə,
başa çatdırmaq üçün vəzifələri üçün axtarır.
Və vəzifəsi, getmək bilər bir verilənlər bazası bir şey almaq
və ya burada bir dəyəri verilənlər bazası və ya bu fayl almaq getmək
disk və ya burada bir bir istifadəçi tələb.
Kimi hadisə hər hansı bir sort, brauzerlər hadisə idarə,
kimi server yan hadisə idarə.
Və o şeyi bir hadisə təşkil edir.
Node.js Belə ki, kimsə, yalnız sonsuz loop yazdı
böyük bir vəhşi loop gözləyir stuff baş üçün.
Və stuff baş verir, o, sağ, bir sıraya qədər başa?
Əlbəttə, bir verilənlər bazası bir dəyər qayıtmaq bilər.
Və bir fayl sistemi, əməliyyat Sistem bir dəyər qayıtmaq bilər
təxminən eyni zaman lakin yəqin ki, var olacaq
onların bəzi sifariş olmalıdır.
Və Node.js gedir mahiyyətcə bir növbə var
böyük bir sıra və ya bir kimi vektor, bəzi data strukturu
bütün TAKOZLARI həmin şeyi.
Bu sözün yalnız bilər, çünki bir zamanda onlardan biri idarə.
Belə ki, zaman, geliştirici,
asynchronous JavaScript yazı Asynchronous kod
funksiyası, bu imkan edirik hadisə loop getmək üçün qondarma
növbəti gənə, sağ?
Belə ki, uzun kimi dərhal kimi bütün qayıtmaq
Bu asynchronous üsulları read fayl və stat kimi etmək,
onlar dərhal qayıtmaq çünki nəticədə callback
geri alır.
Kimi tezliklə qayıtmaq kimi,
ki, başqa kimsə deməkdir burada fond off atdı almaq
və ya off popped almaq bilər ki, burada növbə qarşısında.
Və belə ki, var fakt serialization
baş verən hər şey,
baxmayaraq bütün bu stuff paralel olaraq baş bilər
bir çoklu sistemi.
Amma özünü və Node.js Bu server çalışan idi
bir mövzu kimi.
Və ki, aşağı yan edir siz mütləq max yoxdur t
Sizin kompüter həyata qabiliyyəti kimi xüsusilə
Bir 16 əsas və ya varsa Hətta 2 əsas kompüter
və yalnız yayınlıyorsanız node bir misal.
Amma yenə var əgər 161 kimi bir şey qəbul,
Siz böyük bir kabus qarşısını almaq gəlincə baş ağrısı
şərait və irqi qıfıllar və semafor
və həqiqətən yazı çoklu kodu,
belə upsides və downsides.
OK. Belə ki, geri burada kodu, mənə biz başlamaq ki, təklif edək
Şeyi bir az asanlaşdırmaq üçün.
Biz server bir az gördüm əvvəl bu kimi baxdı.
Belə ki, arguably var olduqca sadə.
Ancaq dünya kimi PHP, çərçivələr var
Laravel kimi və var relsləri və Django kimi şeylər,
Node.js dünyada eyni şey.
Və biz daha çox sərf edəcəyik Çərşənbə günü bu zaman
və növbəti layihə.
Amma getmək əgər server 2 directory,
burada bir neçə paradiqmaları bildiriş.
Belə ki, bu - gedir ekvivalent nümunə olmaq
ancaq bir istifadə edir express.js adlı çərçivə
pulsuz açıq mənbə olan relsləri və Django kimi software,
Laravel kimi, ki, yalnız nəticədə gedir
Bu gün unappreciated olmaq 'Səbəb biz yazılı olduğunuz
belə sadə nümunələri.
Amma bizə etibar.
Bu, çox tez olacaq dost olmaq
Bu xilas edəcək, çünki Siz TDS kodu bir çox.
Və ortaq bir paradiqma bir express.js proqram
bir app.js və ya server.js var məntiqi olan fayl
proqram və ya ən azı giriş nöqtəsi.
Siz birdən çox fayl ola bilər.
A node modul alt kitabxanalar olan
nazil etdik ki, ASYNC kimi
və başqaları özünü ifadə.
Və sonra package.json, package.json bu kimi görünür,
və siz özünüz yarada bilərsiniz və ya tools sizin üçün yaratmaq
və bu sözün bir json fayl var
və maraqlı hissəsi burada bağımlılıkları edir.
Sadece, Laravel kimi ki, satıcı directory
və siz narahat idi paketləri haqqında və bunu -
həqiqətən ilə yenilənməsi Artisan və ya oxşar əmrləri,
kitabxanalar siz yüklü,
eyni package.json burada və kitabxanaların idarə
və versiyasını Əgər siz qayğısına ki.
Belə ki, bir package.json varsa, Mən sadəcə NPM edə bilər,
Node Package Manger yüklemek avtomatik olaraq baxmaq olacaq
ki package.json fayl.
Baxmaq və görmək, mən son versiyası
bütün satıcılar modulları
bir node modulları vurğulamaq directory burada və ya bəlkə
bəzi valideyn və ya əcdad directory.
Və əgər bu onları download gedir
və bütün dəstə görəcəksiniz
gedən HTTP məhsulları tel arasında.
Belə ki, məsələn, mənə bildirin siz məzmunu göstərmək
node modulları yalnız bildirirəm.
Mənə davam və cəsarətlə node modulları silmək
İndi bütün bu ki,.
Mən NPM yüklemek əgər, will oxumaq olacaq ki, görmək
ki package.json fayl və biz gördük oxşar çıxış
Bu Laravel dünyada bu.
Bu bütün Yükləməzdən məhsullarının dəstə və ki
çünki öz növbəsində express bütün dəstə asılıdır
digər xalqların kitabxana.
Belə ki, o bütün növ var recursively endirilir.
İndiyədək, mən yenə LS əgər,
mənim node modulları var directory geri
və geri bildirirəm.
Belə ki, yalnız bir yol var sadələşdirilməsi paketi idarə.
İndi biz baxsaq app.js fayl, bu gedir
bir reversion olmaq bizim erkən web server
biz yalnız tüpürmək olduğu "Salam, dünya" həyata.
Amma burada paradiqmaları bildiriş
ilk biz birmənalı tələb modul, sonra biz bu xətti
siz bilirsiniz ki, kodu sənədlərin dən.
Siz sözün müalicə bir funksiyası kimi modul dəyişən,
açıq mötərizə yaxın mötərizə onu icra deməkdir.
Ki, yəqin olacaq gedirik bir şey geri
ümumiyyətlə bir app zəng.
Necə işləyir?
Mən, həqiqətən, bilmirəm.
Mən başqa kimsə, bildirin lazımdır, ekspress dünyada ki, yazın.
İndi üzərində dayanmaq gedirəm onun omuz kimi
Mənim tətbiq etmək bir az sadə çalışan.
Burada, mən qulaq asmaq gedirəm xüsusi port
ən şey ola bilər.
Və burada ki, kodu bəlkə daha xatırladan indi
Laravel və routes.php edir.
Belə ki, bu mən deyiləm, şam yeməyi sadədir yalnız bir marşrut müəyyən gedir
çizgi ulduz üçün, belə ki, hər şey dalmaq gedir
bu tələbi handler.
Sorğu handler üçün paradiqma onun anonim funksiyası
sorğu arqumenti ilə
və cavab obyekt əvvəl kimi.
Və təcili vasitələri res.send Siz kodu təqib göndər
nə göndərmək istədikləri.
Əlbəttə, siz nə meraklısı bir şey
həqiqətən göndərməklə faylları və ya HTML
və ya dinamik generated content.
Amma indi üçün, bütün biz hello, dünya tüpürmək edilib.
Biz server üç getmək varsa, Bu hətta meraklısı yalnız
bəzi işlevselliği göstərmək üçün.
Və biz bir göstərmək lazımdır hətta sexier version
Çərşənbə günü bu.
Amma heç duydum əgər bəlkə Socket IO ki,
Mən hesab edirəm ki, kimi Jonathan və ya kimsə əvvəllər bildirib,
hər biri node həqiqətən məlum deyil
üçün real vaxt davranış, sağ?
Əgər, MySQL PHP haqqında düşünün bir chat server həyata idi
PHP vasitəsi iki nəfər ola bilər foo.com bir brauzer penceresi
və sonra hər IMing başlamaq bir pəncərə digər, Alice,
Başqa Bob ki onların hər biri görür onun
və ya onun ismarıclarınız digər pəncərə.
Necə bu olardı PHP və MySQL?
Laravel cür istifadə və ya istifadə qeyri-maddi, siz ola bilər
bir index.php fayl kimi.
Və siz var - in Bu tüpürmək var bəzi hallarda
formada həyata, belə ki, var HTML forma olacaq
ki, yəqin ki, təqdim normal formada verilməsi vasitəsilə
lakin Ajax yəqin ki,, sağ?
Belə ki, bir qədər, handler təqdim Bir mətn domain yazın
Siz daxil edib və sonra olur Ajax vasitəsilə server göndərilir.
Nə sonra nə server nə?
Belə ki, index.php var
və ya bir şey dot PHP ki, HTTP parametri qəbul
istifadəçi, Alice və ya Bob nin ani mesaj, siz nə edirsiniz
onu təbliğ üçün onunla müvafiq Bob və ya Alice üçün?
Mən sözün sizə demək alətlər var olan
Sizin min bunu.
Siz nə edərdiniz belə kimi?
Siz bir dəqiqə var Bu proqramı həyata keçiririk.
Bəli?
[Işitilemez Remark]
Perfect. Sağ, belə ki, bir verilənlər bazası var.
Biz bir az bilirəm MySQL haqqında bit.
Belə ki, bir masa var mesajlar var,
bəlkə bir dəfə var möhürü, bir istifadəçi ID,
mesaj orqan özü yaradılmış,
və ki, bütün yeniləndi.
Belə ki, bir bazasında saxlamaq.
Və Alice göndərir güman ilk mesajında, necə Bob almaq deyil
İndi ki, mesaj veritabanından?
>> Bəzi Ajax ola bilər daim olacaq ki, cavab
geri bazasında top [işitilemez] almaq.
Məhz >>.
Belə ki, kodu olan Bob kodu edir Alice kimi yalnız eyni sort edir
simmetrik əlaqələr,
Bob browser bəzi Ajax kodu var yəqin ki, bəlkə hər 30 var
çəkərək saniyə Ajax sync vasitəsilə server,
Yeni mesajlar var?
Hər 30 saniyə davam edir cür suboptimal olmaq
o, hətta gözləmək, çünki
əgər Alice sözün yalnız mesajı göndərdi.
Belə ki, Bob browser bilər hər ikinci server edib.
Amma Alice in deməkdir browser server vuruş edir
hər ikinci.
Nə Charlie haqqında [Fərz imla]
və David [imla güman] və Edward [imla güman]
və hər məktubu əlifba?
Sorun nedir Bu yanaşmanın?
Həddindən artıq Xit bir çox -
Mən demək yalnız səmərəli istəyirik Öz görmə dozaj
və ya DDOSing, Paylanmış Service hücum imtina
öz site, bütün malik
Bu istifadəçilərin JavaScript run yalnız ping gönderme ki kodu
heck server həyata hətta ixtiyari sayı,
Bu zaman 80 faiz heç bir şey edib
chat otağı.
Amma yalnız kontrol edirik belə əmin etmək.
Bir çox belə PHP languages ​​yalnız yaxşı deyil
real vaxt rabitə üçün.
PHP geri var, çünki heç bir mərkəzi yaddaş, sağ?
Siz sessiya obyektləri illüziyasını yaradır
mərkəzi anbar lakin ki, bir istifadəçi əsasında var.
Siz qlobal yaddaş yoxdur kimi bir Java Servlet nə
tanış və ya digər çərçivə kimi işləyir.
Node.js baxmayaraq, siz var Siz səbəb qlobal yaddaş "
bir server və bilər ki, istədiyi bir şey xatırlayıram
haqqında bütün istifadəçilər.
Və hələ güc bir verilənlər bazası var.
Amma Node.js haqqında gözəl şey çox daha yaxşı ki
PHP kimi bir şey və illüziya yaratmaq
Çox user dəfə şeylər.
Və əslində kənara, siz kimi PHP chat server həyata keçirir,
lakin siz adətən nə olardı uzun seçki deyilən bir şey
Siz ping yoxdur qovuşdurmağımız Bu server hər ikinci.
Siz server ping, bu server sizə cavab vermir
30 və yuxarı üçün saniyə, bu sözün oturur
bir loop gözləyir və gözləyir.
Və server çek əgər bazasında yeni məlumatlar var
və yalnız bir dəfə, Oh ", görür burada Bob bir mesaj "var
Bu HTP server cavab vermir?
Belə ki, brauzerinizin təsiri ki, IE icon və ya Mozilla
və ya nə yalnız spinning saxlayır bir zamanda 30 saniyə üçün.
Amma ayaq siz deyil ki, 30 bağlantısı sorğu
30 saniyə, bir var.
Belə ki, uzun seçki deyirlər.
Amma daha yaxşı müasir web brauzerlər deyilən bir şey deyil
WebSocket olan Siz CS143 almaq
Siz səmərəli edə bilər Bir müştərilərin TCP əlaqə
bir server bir brauzer kimi və sonra üçün asmaq
yaxın istifadə etmədən kimi bir çox resursları
HTTP kimi ənənəvi edə bilər.
Və Socket IO edir bir Node.js kitabxana
ki, çox asan edir Bu yuva əlaqələri etmək
var və ya illusions köhnə brauzerlər üçün at
Bu həyata bilər ki, real vaxt funksionallıq var.
Belə ki, burada bir nümunəsidir.
Üst bu stuff alır az daha mürəkkəb
lakin əsasən surəti və yapışdırıb edir socket.io 's sənədləri.
Burada indi daha çox dəqiq sorğu handler.
Əgər istifadəçi sorğu zərbə, nə fayl mən gedirəm
yəqin olmaq onlara xidmət edir?
Index.html.
Və bəzi yeni var burada stuff stream
Mən sizə göstərmək lazımdır yalnız bir anda.
Amma bu yalnız bir yoldur
bir fayl qapma az daha səmərəli
yalnız fs.readFile bunu daha.
Bu bir az daha asan var xüsusilə böyük faylları üçün.
Belə ki, uzun hekayə qısa, bu xətləri yalnız xidmət
index.html adlı bir fayl up
İndi ehtiva kəsb edən HTML forma olan Alice
və Bob intercommunicate bilər.
Nəhayət, io.sockets.on, bu belə up burada bu xətt gəlir.
Belə ki, mən yalnız oxuyuram sənədlər io.socket mənə verir
qondarma çıxış WebSocket bir browser ilə,
brauzerinizin arasında və server.
Mən xüsusi dinləmək alıram hadisə bağlantısı olan vasitələri
zaman ilk istifadəçi xit çalışan server
Bununla əlaqədar açmaq üçün mən geri zəng zəng etmək üçün gedir.
Və indi mən gedirəm aşağıdakı etmək.
Hər beş saniyə, mən nə üçün gedirəm?
Mən buraxmaq və ya yayım üçün gedirəm Siz danışıq xatırlayıram əgər,
qrafik dil ki yayım blokları ki?
Belə ki, siz buraxmaq olacaq
və ya adlı hadisə tetiklemek özbaşına server.
Və olacaq Mesaj Ping ehtiva
və cari tarixi.
Belə ki, bu bir aktualdır chat server ki, Alice
və Bob istifadə edə bilərsiniz, lakin sort var avtomatlaşdırılmış chat server
mesajlar olduğu yalnız növ sonar pings.
Bu, sadəcə ki vaxtlarda tarix hər beş saniyə göndərilir.
Belə ki, mən, həqiqətən, bu run əgər şey - və bu.
Aşağı burada aydın olmaq üçün, bildiriş Bu yalnız burada aşağı giriş edir.
Belə ki, mənə çevirmək bildirin ki, kor göz.
Mənə app.js. üzvü node edək
Mənim brauzerinizin gedək.
Burada ev səhifəni yenidən yüklə.
[Pause]
Və mənə inspektor yaxın qoy.
Hər beş saniyə, mən var nümayiş hətta baxmayaraq
insan üçün interaktiv
ki, bir şey asynchronously olur.
Brauzer bildirişdə, heç bir spinning icon var.
Bu meraklısı sistemini istifadə edir müasir brauzerlərdə Chrome
bir yuva saxlanılması başlıq altında bağlantısı
və deyirlər nə var ümumiyyətlə pub / sub model,
dərc / model abunə biz görülən olduğu
ki, olduqca aydın burada.
Amma nə bu barədə gözəl general pub / sub paradiqma edir
bir yayıncı ola bilər ki,.
Bu halda mərkəzi server və bütün
fərdi brauzerlər müştərilər.
Alices və və Bobs dünya üçün üzv ola bilərsiniz,
belə ki, relay messages bilərsiniz istifadəçilər hər hansı bir sayı arasında.
Və yenə biz istəyirik baxmayaraq interaktiv görən deyil,
biz bəlkə 12 xətləri idi kod yalnız bunu.
Və yəqin ki, bir sıçrayış deyil Siz qamçı necə təsəvvür etmək
index.html fayl həyata ki, bir doğru HTML forma var,
ilə jQuery kodu az Gündüz göndərmək deyil ki, Ajax
ancaq göndərir nə Alice və ya Bob növü server
və sonra server onu Relay edəcək.
Mən fikir söz bir son şey yalnız
bu sizə tease.
Biz dərəyə getmək əgər sıfır və bir,
yalnız ki, kodu görürsünüz burada bir az fərqli.
Yalnız belə gördüm, bu bir alternativ deyil
Mən fs.readFile deyilən nə metodu əvvəl, vasitəsi,
Siz Go ", Node.js deyə bilərsiniz yaddaş bu faylı oxuyun.
Amma bu, böyük, yalnız vermək bir zamanda mənə bir yığın. "
Və CS165 bilirik bilər
və ya 161 fayl sistemi müxtəlif var
performance xassələri.
Siz oxuya bilər 512 bayt blokları
və ya 2 kilobayt və ya nə.
Bu optimize yolu deyil iteratively geri fayl əldə
Siz onu tüpürmək bilər ki, bir az daha tez
brauzerinizin və ya son müştəri kim.
Məzmun Belə böyük məbləği Bu gün biz dalış olacaq
Çərşənbə günü daha ətraflı Tim [ehtimal imla]
Xüsusilə necə biz baxaraq bəzi fikirləri tərcümə edə bilərsiniz
Bu ilk yarısında Əlbəttə Laravel və modelləri
bir kitabxana daxil ki, o özü Bookshelf.js adlı yazdı
getdikcə olmaq olan cəmiyyətdə məşhur
bu onun ən verir, çünki,
Bu daha çox, əgər fəsahətli işləməsi
olan geri ki, Laravel kitabxana fikir,
belə ki, daha çox və necə daha
tam hüquqlu inkişaf Çərşənbə günü apps.
Biz sonra görəcəksiniz.