>> Pob hawl.
Felly, y Cliffhanger oedd, beth yw node.js fel y ydych yn ei wybod heddiw?
Unrhyw beth? Yeah?
>> Yr oedd fel fframwaith ysgrifennu JavaScript
ceisiadau yn fras -
>> OK, sy'n gweithio.
>> - Gwn hoffi defnyddiau cyffredin fel -
neu rywbeth i chi yn gallu ei wneud yn debyg -
[Anghlywadwy Sylw]
>> Iawn yn dda.
Yeah, felly mae'n fframwaith.
Mae'n injan gan yr ydych yn Gall gweithredu cod JavaScript
safle gweinydd.
Gall hyn olygu y symlaf o bethau
fel ysgrifennu llinell orchymyn sgript nad ydynt mewn Python neu Bash
neu Ruby neu PHP, ond dim ond yn JavaScript hun
a gweithredu ar ei amrantu archa 'n barod.
Neu allwch chi redeg mewn gwirionedd o fewn weinydd y we.
Ac yn wir o fewn node.js ei hun,
fframwaith hwn yn criw cyfan o lyfrgelloedd ymhlith sy'n cael eu
mewn gweinydd HTTP adeiledig yn.
Felly, gallwch ysgrifennu mewn gwirionedd yn gweinydd gan y byddwn yn gweld
mewn dim ond hyn o bryd, super hawdd gan dim ond i ddeall ychydig
o HTTP a TCP a phorthladdoedd.
A gallwch silio yn gwrando weinydd y we heb Apache,
heb Microsoft IIS.
Heb unrhyw un arall meddalwedd gosod,
gallwch silio hwn a gwrando ar y rhan fwyaf o unrhyw borthladd
ar y system sy'n eich bod yn cael.
Felly, achos a phwyntiau, gadewch i mi fynd ac agor
i fyny yr enghraifft hon, gweinydd-0.js.
Felly, yn sylwi bod y brig y ffeil, dim ond bagad
o sylwadau anniddorol, ac yna mae cwpl
o linellau cynrychioliadol o god y byddwn yn gweld achlysurol.
Felly, HTTP var yn cael ei gwneud yn ofynnol "HTTP".
Felly, adeiledig yn i node.js ' seilwaith yn criw cyfan
o fodiwlau sydd mewn gwirionedd yn unig llyfrgelloedd ac mae popeth yn fath
o ofod enw gyda y dynodwr unigryw
fel yr un yma yw "HTTP".
Er mwyn i fel yn llawer o ieithoedd fel Java a C + +
a C, dim ond pan fyddwch yn mewnforio neu gynnwys
neu mewn nod siarad ei gwneud yn ofynnol modiwl yn gwneud ei ddarnau.
A'r holl cof ei gwneud yn ofynnol cael lwytho
i mewn i RAM a'u defnyddio felly.
Felly, rydych yn fath o llwytho'r llyfrgelloedd neu fodiwlau ar y galw.
Mae hyn yn golygu mynd yn ei flaen ac yn ei gwneud yn ofynnol
gyfer y rhaglen hon y llyfrgell HTTP,
ac yn cyfeirio at y llyfrgell trwy ffordd o newidyn o'r enw HTTP.
Ond mae hyn yn symbol chwith gallai wedi cael eu galw unrhyw beth, foo,
bar, Baz, does dim ots.
Felly, yn wahanol i C + + a Java a C lle pan fydd angen
neu fewnforio llyfrgell, 'i jyst fath
o yn dod yn hygyrch yn fyd-eang,
modiwlau node.js yn yn dynnach namespace.
Fel bod hunain - swyddogaeth y Dim ond ar gael ar hyn o bryd
drwy gyfrwng yr enw amrywiol.
Ni allwch dim ond dechrau dulliau teipio sy'n bodoli
mewn yn iawn ffordd sydd yn ôl pob tebyg yn dda,
oherwydd wedyn eich namespace nid yw'n cael bron mor anniben
fel mewn llawer o ieithoedd.
Mae pob hawl, felly, yn awr fel y comin awgrymu, gan greu gweinydd HTTP
fel y mae Jonathan [tybio sillafu] oedd yn bosibl yn llythrennol
mor syml â ffonio'r creu dull gweinydd y tu mewn
y modiwl HTTP.
Felly, mae hyn yn dychwelyd y cyfeiriad
i ryw fath o weinydd y we.
Daeth i Apache, nid pwysau o reidrwydd mor drwm.
Mae hyn yn un ychydig yn symlach.
Ac yn awr, yr wyf wedi i ychydig syml, yn gwneud ychydig o bethau.
Felly, yn gyntaf, gadewch i mi sgrolio i lawr i waelod yma
a sgipio y trafodwr dull ar gyfer hyn o bryd.
Ac yn sylwi ar y llinell hon o god,
server.on sy'n yn y bôn yn golygu gweinydd -
gwrando fel mewn cod jQuery,
gwrando ar gyfer digwyddiad Gelwir cais
a dim ond yn cymryd dyfalu beth ddylwn i ei wneud
pan fydd digwyddiad cais tanau yn y gweinydd.
Yeah?
>> Ffoniwch y trafodwr swyddogaeth.
Felly, yn llythrennol gweithredu'r cod sy'n cael ei cyfeirir atynt
gan y newidyn hwn ac mewn gwirionedd yn Nid newidyn i symbol yma,
beth yw y symbol cyfeirio?
Wel, yr enw hwn o weithredu yma
a triniwr yn ôl pob golwg yn cymryd dau dadleuon.
Pam dau? Wel, os ydych yn unig darllen y unrhyw ddogfennau
ar gyfer y modiwl penodol, rydych yn yn cael gwybod bod y trafodwr
fydd yn cael eu galw i rym yn pasio o leiaf dwy ddadl,
cyfeiriad at y cais,
ac y tu mewn y cais yr ydym yn yn llythrennol yn golygu cais HTTP.
Felly, mae pawb sy'n HTTP penawdau y gallai cofiwch
o ddechrau'r semester neu ryw dosbarth cyn
neu brofiad fel y cael llinell a'r llinell llu
a llinell Defnyddiwr-Asiant, i gyd cael eu crynhoi ac yn fwy y tu mewn
cais hwn gwrthrych.
A'r gwrthrych ymateb didoli ar gyfer data Outbound.
Felly, mae gennych cyfeiriad at yn gwrthwynebu hynny'n mynd i ganiatáu i chi
i anfon gwybodaeth yn ôl i y porwr drwy ffonio dulliau
ar y ddadl olaf enw Res ar gyfer ymateb.
Ond gallai hyn gael ei alw foo neu bar, mae hyn yn unig yw'r confensiynau.
Felly nawr, beth ddylwn i ei wneud?
Wel, mae'n ymddangos bod y tu mewn o'r gweinydd gwe super syml
fy mod yn gweithredu, rwy'n mynd i wneud y canlynol.
Rydw i'n mynd i ysgrifennu HTTP header gyda statws cod 200,
200 ystyr OK, popeth yn iawn.
Ac yna, dw i'n mynd i basio ar ôl pob golwg.
Beth sydd y math data y ail ddadl i ben yn iawn?
>> Mae'n gwrthwynebu?
>> Mae'n gwrthrych gyda faint o allweddi a gwerthoedd?
Dim ond un o bob un, ar y dde, un gwerth allweddol pâr.
Felly, 'math o gynnwys'.
A'r unig reswm Rwy'n dyfynnu yma yn
oherwydd efallai y cysylltnod yn cyfuno ar gyfer arwydd minws
neu rywbeth fel 'na.
Felly, rhaid i mi ddyfynnu yma, singe neu dyfynodau dwbl.
Ond unwaith eto patrwm cyffredin
mewn cod JavaScript yn aml dyfynodau sengl y dyddiau hyn,
colon ac yna'r gwerth.
Felly, mae hyn yn dim ond y hyn a elwir yn y math meddwl.
Mae hwn yn pennawd HTTP sy'n mynd yn llythrennol
i fod yn fodlon math cysylltnod colon destun plaen slaes sy'n mynd
cael ei anfon gan y gweinydd y porwr
fel bod y porwr yn gwybod p'un ai i redeg y testun fel Raw
neu HTML neu fel ddelwedd neu ffilm
neu ffeil fflach neu unrhyw beth arall.
Nawr, ble ydw i'n ei eisiau mewn gwirionedd anfon nghorff y dudalen?
Wel, dim ond drwy ddarllen y dogfennau
am y gwrthrych ymateb tu mewn y llyfrgell hon.
Gwelaf fod yna hawl dull ac sy'n cymryd llinyn,
efallai pethau eraill, ond cyn lleied â phosibl llinyn.
Ac y llinyn yn beth sy'n boeri allan at y porwr.
Yn yr achos hwn ei super syml, ei byd helo,
ond gallai fod yn opne braced, html, braced agos,
pen braced agored, yn agos braced ac yn y blaen,
gallai hyn fod html Raw.
Ond rydym yn cadw'r enghraifft syml drwy jyst poeri
y symlaf o fathau meddwl sydd yn dadlau testun / plaen.
Ac yna response.end yn unig yn golygu cau'r cysylltiad
ac anfon popeth gen i math o clustogi'n y tu mewn
yr amcan hwn yn ôl at y porwr.
Dwi'n ei wneud. Mae pob hawl.
Felly, y peth olaf Rwy'n gwneud i lawr yma
ac mae hyn yn braidd yn fympwyol ac yn golygu i fod yn oer,
yn fy mod yn dweud y gweinydd yn olaf i wrando
ar TCP penodol yn ôl porthladd diofyn.
Dwyn i gof o'r dechrau o bod gwasanaethau dosbarth -
neu os ydych fel arfer yn unigryw adnabod gan rifau,
AD yn y we, 443 yn seiliedig HTTP gwefannau, 22 yn SSH, 21 yw FTP
a 1337 yn unig fympwyol ond mae'n uwch na 1024
sy'n golygu ar y rhan fwyaf systemau, gallaf ei ddefnyddio
heb fod angen super breintiau defnyddiwr.
Felly, dim ond gyfleus.
Ond mae 8080 yn oddi ar - cyffredin un, 8088, mewn gwirionedd unrhyw beth mawr
yn y miloedd yn fwy cyffredin ond mae hyn yn unig yn fwy elitaidd.
Mae pob hawl, felly beth sy'n digwydd pan Fi 'n weithredol yn rhedeg hyn?
Wel, nid wyf yn ymweld â y dudalen mewn porwr.
Yr enw ar y ffeil yn gweinydd-0.js.
Oherwydd unwaith eto, Apache yn yn awr allan o'r llun
ar gyfer yr ail hanner y cwrs.
Os ydw i eisiau ar y we gweinydd, mae angen i mi ysgrifennu
ac yna rhedeg y gweinydd we.
Ond mae'n troi allan bod JavaScript y ddau ar ochr y cleient
ac mae'r ochr y gweinydd yn iaith dehongli.
Felly, y cyfan sydd angen i mi ei cyfieithydd.
Felly it's - os yn mynnu i redeg nod ac yna gweinydd-0.js,
Caf neu efallai ddim yn gweld rhywfaint o allbwn yn dibynnu
ar yr hyn y llyfrgelloedd Rwyf wedi cynnwys, dim byd yn ymddangos i fod yn digwydd.
Ond gadewch i mi fynd i porwr a gadewch i mi fynd
i'r un cyfeiriad IP fy cleientiaid CS50.
Ond gallai hyn dim ond yn ogystal fod yn fy Mac
neu fy PC ac yna pwyswch ar 'return.
Sydd mewn gwirionedd yn edrych fel Apache.
Dyna fel y cyfeirlyfr rhestru buom yn edrych
yn yn yr hanner cyntaf.
Felly, yr hyn a wnaeth i ei wneud o'i le?
Yeah.
[Anghlywadwy Sylw]
Yn union, dde?
Felly, Apache yn dal i wrando ar y porth diofyn 80.
Hyd yn oed er y gallwn newid hynny, Gallwn i droi 'i off i gyd gyda'i gilydd
ond mae'n dal i redeg.
Ond guys hyn yn gallu yn sicr yn fyw.
Yr wyf yn syml rhaid i roi colon 1337 ac yna efallai
neu efallai nad yw slaes ar y diwedd i gael mynediad i'r porthladd hwn
y gweinydd hwn yn cael ei rhedeg ar.
Ac yn awr yr wyf yn gweld bod helo, byd wedi dychwelyd.
A gallaf daro ail-lwytho fel sawl gwaith ag y dymunaf,
mae'n dal i wasanaethu i fyny dudalen.
Yn wir, os byddaf yn agor Chrome yn arolygydd, ewch i rwydweithio
ac yna ail-lwytho y dudalen gyfan,
sylwi bod yn wir oedd hyn yn y cais a gafodd ei anfon.
Os byddaf yn edrych ar y ffynhonnell Raw,
sylwi fy porwr yn anfon pob un o'r pethau hynny.
Ac yna yr ymateb gan y gweinydd yn super syml.
Mae yna 200.
Os nad yw'n rhy isel ar y sgrin,
mae math o gynnwys.
Ac yna node.js fath o awtomatig
i mi ychwanegu y dyddiad a'r yr holl bethau eraill
bod porwyr fel arfer yn ei ddisgwyl.
Felly, gadewch i ni dim ond yn gweld ychydig gwiriad bwyll.
Gadewch i mi fynd yn ôl at y cod yn gweinydd-0.js a gadewch i mi -
bob tro y byddaf yn mynd i mewn i yr atebwr,
gadewch i mi dim ond dweud console.log.
('Roedd gennym ymwelydd!').
Nid oes angen i mi ail-grynhoi neu unrhyw beth fel 'na,
ei fod yn iaith dehongli.
Felly nawr, gadewch i mi fynd yn ôl at y dudalen, ail-lwytho un, dau,
dair gwaith ac yn mynd Nôl i fy ffenestr.
Ac yn awr yr wyf yn gweld hyn.
Wel dyna rhyfedd, Rwy'n gweld chwe llinell.
Trivia diddorol ar y we, pam y gwnaeth Rwy'n cael chwech cais i beidio tri?
Yeah?
[Anghlywadwy Sylw]
Yeah. Felly, fel y gwyddoch yr ychydig icon dwp yn y top
y bar porwr bod llawer
o wefannau a ddefnyddir grym fod yn crib Harvard,
gallai fod yn logo y cwmni neu unrhyw beth fel 'na.
Felly, porwyr y dyddiau hyn didoli
o rhyfyg yn gwneud cais HTTP ychwanegol
i bron pob gwefan sy'n Byddwch yn ymweld gwirio os oes
yn ddiofyn ffeil Gelwir favicon.ico
yn yr un cyfeiriadur y ffeil roeddech yn chwilio amdani.
Ac os felly, mae'n rhoi yr eicon yno.
Felly yr holl rydym yn gweld yn union hynny.
Ac yn wir, gadewch i ni weld os byddwn yn gallu gweld hon yn hytrach na math
yn union, 'Cawsom ymwelydd'.
Gadewch i mi fynd yn ei flaen ac allbwn.
Ac yr wyf yn unig yn gwybod hyn o edrych ar y ddogfennaeth.
Mae eiddo tu mewn cais gwrthrych a elwir yn URL
sy'n digwydd i fod yn llwybr
y gofynnwyd amdano yn y URL ei hun.
Felly, os wyf yn ailgychwyn y gweinydd dim ond drwy ailsefyll fel nod
ar weinydd-0.js a bellach yn gwneud hyn yn un, dau,
tri a mynd yn ôl yma.
Yno y mae.
Slash yr hyn yr wyf - dynol gofynnwyd
yn favicon.ico yn beth yw'r porwr yn
gofyn rhyfyg.
Ond nid y pwynt yw cymaint o stwff favicon
ond sut y gweinydd yn cael ei weithredu.
Yeah?
>> Pam bod yn rhaid i i fod yn rhyw cais?
>> Pam bod yn rhaid i - yn ôl natur o sut HTTP gweithio.
Felly, gall HTTP ond gofyn un ffeil ar y tro.
Gall porwyr fod yn smart y dyddiau hyn
a chadw'r TCP cysylltiad agored.
Os ydych yn cymryd CS143 neu yn gyffredinol gyfarwydd â rhwydweithio,
fel y gallwch gael enillion effeithlonrwydd
drwy gadw'r rhwydwaith soced agored
wrth wneud HTTP lluosog geisiadau dro ar ōl tro drosto
ond maen nhw'n un ffeil am bob cais.
Felly, os byddwch yn ymweld rhywbeth fel -
Yr wyf yn golygu y gallwn ni fynd i'r rhan fwyaf o unrhyw gwefannau.
Os byddwch yn mynd i - gadewch i ni tynnu i fyny arolygydd y Chrome yma.
Efallai y bydd yn llenwi y rhan fwyaf o y dudalen.
Ewch i'r tab rhwydwaith ac ewch i www.cnn.com.
A phan fyddwch yn ymweld cnn.com, ei hafan -
eich porwr yn hytrach atrociously yn gwneud - yn dal i gyfrif.
OK. O leiaf 289 HTTP geisiadau dro ar ôl tro.
A dyma pam pan fyddwch yn ymweld gwefannau arbennig o chwyddedig,
eu bod yn araf i lwytho oherwydd yr holl
yr asedau y maent yn llwytho.
Felly, mae'n edrych fel 298.
Efallai y bydd rhai Ajax mynd ymlaen ar hyn o bryd neu ryw
yr asedau yn unig yn isel.
Felly, pob un o'r rheiny yn cais unigol sy'n mynd yn ôl
ac ymlaen, yn ôl ac ymlaen.
A dyna pam gynharach, hyd yn oed er ein bod yn fath o siarad
am y peth braidd yn fancifully lle rydych yn rhoi'r tag sgript,
gwbl yn gwneud gwahaniaeth pan fydd gennych -
yn dechrau i gael llawer o draffig a llawer
o ffeiliau y gofynnir amdano.
A phob un o'r hyn yn cynrychioli yn ôl pob tebyg delwedd, ffeil cyfryngau,
ffeil JavaScript, Ffeil CSS neu debyg.
Felly, rydym eisoes hyd at tua 4 megabeit yn unig
i edrych ar newyddion heddiw.
Gwestiwn da.
Mae pob hawl.
Felly, beth yw rhai o'r y upsides er bod?
Iawn, rydym yn gwybod sut i wneud tudalennau gwe eisoes yn PHP.
Ac mae llawer ohonoch yn dod i mewn i y dosbarth wybod Django
a Python neu reiliau gyda Ruby.
Felly, pam mae angen arall eto iaith a seilwaith?
Beth yw node.js arbennig dda os ydych yn gwybod?
[Saib]
Mae rhai beth?
Nac oes? Yeah?
>> Trosglwyddo negeseuon.
>> Felly, trosglwyddo'r negeseuon.
Felly, mae hynny'n wir ac mae'n wir am reswm mwy technegol
a bod node.js ac yn wir JavaScript yn arbennig o
o addas i asynchronous cod,
os ydych yn creu lle y rhith
o wneud lluosog pethau ar unwaith.
Felly, hyd yn oed er eu bod yn mewn gwirionedd yn digwydd dro ar ōl tro,
yn wir yn y rhan fwyaf o achosion, JavaScript ddwy ochr y cleient
ac ochr y gweinydd yn threaded sengl.
Ac os ydych yn cymryd 161 neu hyd yn oed 61 yn golygu bod -
y rhaglen hon yn gwybod,
y cyfieithydd yn gallu llythrennol dim ond un peth ar yr un pryd.
Ond mae hyn nid yw yn wych ar gyfer rhywbeth fel gweinydd gwe
lle y gallech wedi dwsinau neu gannoedd neu hyd yn oed filoedd
defnyddwyr i gyd yn ceisio i gael gafael ar eich tudalen we
ar yr un iawn o amser.
Ac eto, sy'n awgrymu sy'n eu trin un
ar ôl y llall ar ôl y eraill, yn enwedig os yw rhai
o'r rhai cais fel y gwelsom ar CNN gallai fod angen gwasanaethu
i fyny 300 ffeil cyn i chi hyd yn oed yn cyrraedd y defnyddiwr nesaf
sydd am weld y dywed newyddion.
Node.js yn fwy addas ar gyfer amgylcheddau fel 'na.
Oherwydd mae'r hyn sy'n digwydd yw unrhyw broses rhedeg yn araf
fel darllen ffeil o ddisg neu holi cronfa ddata neu siarad
i ryw gweinyddwr rhwydwaith eraill,
sy'n tueddu i gael latency, dde?
Os ydych yn cymryd 61 neu 161 yn enwedig i gyd o'r math hwn
gwasanaethau ymylol yn tueddu i fod yn llawer arafach
na gwneud unrhyw beth y tu mewn o yr un RAM a'r un CPU
yn ei ddweud yn yr achos hwn gweinydd yn rhedeg mewn gwirionedd.
Ond yr hyn sy'n braf am node.js yw y gallwch -
a JavaScript yn fwy cyffredinol yw y gallwch wneud rhywbeth
ac yna dweud, "Hmm, hyn yn mynd
i fynd â mi ychydig o milieiliadau neu hyd yn oed ychydig eiliadau.
Gadewch i mi fath o fforc bod i ffwrdd, " ond nid yw'n broses wir.
Ac yna pan mae'n ei wneud yn ei wneud proses rhedeg sy'n araf
fel crafangio rhesi o cronfa ddata neu ddarllen ffeil. html
o ddisg, bydd yn fynd yn ôl i mi yn hytrach
na fi gorfod aros ar ei gyfer.
Felly, er mwyn gwneud hyn yn fwy clir.
Mae hyn yn fy ffordd o gwneud hyn yn fwy cyfarwydd.
Mae pob hawl, felly dyma'r Ysgwyd Shack yn y sgwâr.
Mae hwn yn fath o patrwm cyffredin
am esbonio asynchronicity.
Mae hyn mewn gwirionedd yn dda enghraifft oherwydd Shake Shack
a Burger blasus yn hynod o araf am yr hyn maent yn ei wneud.
Ond y pwynt yw eu bod yn yn dda iawn yn cymryd archebion
ac yn cymryd eich arian ar ôl yr ydych yn aros am eich bwyd.
Felly, mae hyn mewn gwirionedd yn well dyluniad na'r dewis arall.
Oherwydd debyg i chi gerdded i mewn i siop fel hyn a gawsoch
i flaen y llinell a chi gosod eich archeb a'ch bod am
i byrgers, gorau y gallaf dweud, mae'n cymryd o leiaf bum
munud neu fwy i mewn gwirionedd yn cael byrgyr.
Felly, byddai'n fod yn garedig o fodel busnes drwg
os tra byddwch yn aros am eich byrgyr, Alice [sillafu tybiedig]
a Bob [sillafu tybio] a Charlie [sillafu tybiedig]
a phawb arall yn ciwio tu ôl i chi
a ydych yn rhwystro llythrennol llinell aros am eich bwyd.
Felly yn amlwg, yn Shake Shack
a bwyd cyflym eraill Nid yw lleoedd yn gwneud hyn,
maent yn ei wneud rhywbeth fel hyn.
Maent yn rhoi swnyn i chi.
Ac maent yn fath o anfon chi ar eich ffordd.
Ac maent yn galw chi yn ôl gan gwneud y dirgrynu peth bach
neu fflach i gael eich sylw.
Felly, mae hyn yn llythrennol beth?
Rhywbeth fel node.js ei wneud.
Os node.js neu JavaScript yn fwy cyffredinol yn cael ei ddefnyddio
ac mae'r rhaglennydd yn ddigon smart
i sylweddoli, "Rydych yn gwybod beth?
Beth bynnag mae angen i mi ei wneud yn iawn yma y gallai gymryd peth nifer
o filfedau eiliad neu eiliad.
Rydych yn gwybod beth?
Gadewch i mi fynd yn ei flaen, ac nid alw yn gydamserol -
"Hynny yw blocio guy pawb arall yn unol, "-
gadewch i mi fynd yn ei flaen a math o gamu o'r neilltu
ac yn syml yn galw fy hun yn ôl
pan fydd y rhedeg hir llawdriniaeth yn gyflawn. "
A galw yn ôl, wrth gwrs, yn cyfeirio ato yn yr achos hwn
â swyddogaeth alwad yn ôl, a cyfeiriad at Chuck o god
a fydd yn cael eu gweithredu pan fydd eich byrgyr yn barod,
yn debyg y peth hyn gael rhywfaint o math o swyddogaethau adeiledig yn
fod yn dechrau dirgrynu neu suo pan mae'n amser i chi
cael eu galw yn ôl i flaen y llinell.
Felly, beth mae hyn yn olygu mewn termau real?
Wel, mae'n rhaid i ni gweithio ein ffordd i fyny.
Felly, gadewch i mi fynd yn ei flaen a gwneud hyn yn gyntaf.
Yn gweinydd-1.js, gadewch i mi yn gyntaf symleiddio'r cod
fel y gallwn gymryd camau babi tuag at yn broblem fwy cymhellol.
Mae hyn yn union yr un rhaglen a ysgrifennais o'r blaen.
Ond beth sydd wedi cael ei newid?
Mae rhyw fath o ychydig gwahaniaeth cystrawennol
rhwng hyn a fersiwn 0 funud yn ôl.
Beth neidio allan yn y chi os ydych yn cofio?
Yeah Cynthia [sillafu tybio]?
[Anghlywadwy Sylw]
Yeah. Felly nawr, mae gennym linell o swyddogaeth sy'n cael ei basio i mewn
Rydym wedi gotten gwared ar y math
enwir uselessly swyddogaeth trafodwr.
Ddiwerth yn unig yn y cyn hyd yn oed yn galw mewn un lle,
Nid wyf yn gwir angen i gwastraffu amser yn rhoi ei enw
a'i gwneud yn fwy anodd i darllen y cod top i'r gwaelod.
Felly, gadewch i ni dim ond yn datgan inline yn swyddogaeth ddienw.
Ac yr wyf i'n ei wneud dau beth arall.
Fy mod yn gwneud yn well defnydd o dot nodiant.
Felly, fel yn jQuery, mae llawer o nod Gall dulliau yn cael eu clymu gyda'i gilydd.
Felly, unwaith y byddwch chi'n ei wneud yn galw rhywbeth, nid oes gennych
aros i linell newydd a galw ddull arall,
gallwch dim ond gadwyn nhw at ei gilydd.
Ac felly yn y modd hwn, gallwn 'n sylweddol tynhau hyn i fyny.
Felly, mae hyn yn llythrennol weinydd y we mewn pum llinell
o gyfanswm cod yn wahanol i'r -
yn wahanol i'r hyn yr ydych efallai fel arfer yn rhaid iddynt ei wneud i osod rhywbeth.
Os byddaf yn mynd i mewn i gweinydd 2 awr, gadewch i ni wneud hyn.
Yn gweinydd 2 - mewn gwirionedd gadewch i ni yn dod yn ôl at y gweinydd 2.
Gadewch i ni yn awr yn agor i fyny async-0.js a fynd i'r afael â'r broblem dan sylw.
Felly, yn gyntaf, gadewch i ni fynd ymlaen ac yn agored
i fyny async-0.js yn y porwr.
Felly, async-0, gadewch i mi fynd yn ôl at y porwr.
Hit ail-lwytho.
Ac yn awr, mae hyn yn fath y neges gwall.
Yn wir, dw i'n gweld 500 yn arolygydd Chrome ar.
Ond gadewch i mi yn fwy manwl ofyn am hello.txt.
OK. Felly, mae hyn yn ymddangos i weithio.
Felly nid async-0.js yn ymddangos i gweini rhywbeth i slaes.
Nid oes ganddo unrhyw gefnogaeth ffeil rhagosodedig.
Ond os wyf yn benodol ofyn am hello.txt,
sy'n ymddangos i gael ei gefnogi.
Pam hynny?
Wel, yr hyn yr wyf wedi mynd yma
ac wneud yn cael ei roi ar waith gweinydd gwe super syml
sy'n dangos lle Gall asynchronicity fod yn ddefnyddiol.
Ac mae hynny'n cael ei weithredu fel a ganlyn.
Yn gyntaf, Im 'yn arfer y Modiwl HTTP eto,
ond hefyd FS sy'n yn ôl pob tebyg yn sefyll am?
Yn gyffredinol yn CS, system ffeil.
System ffeiliau OK.
Felly allan FS, system ffeil.
Mae pob hawl, felly beth mae hyn yn rhoi i mi?
Ymwneud â Functionality ffeiliau fel cael ei basio,
agor ffeil, ysgrifennu cyfeirlyfrau, cyfeirlyfrau darllen
a hynny i gyd math o bethau.
Felly nawr yn sylwi, y cod hwn yr un fath ag o'r blaen,
creu y gweinydd, gan fynd heibio mewn swyddogaeth ddienw.
Mae hyn yn fath o fympwyol.
Nid yw hyn yn iawn gweinydd gwe diogel.
Yn wir, gallech gael gafael ar rhan fwyaf o unrhyw ffeil ar fy disg caled
neu ar y gweinydd caled gyrru trwy weithredu cod hwn
oherwydd fy mod yn jyst yn ddall gan dybio fy mod yn mynd
chrafangia beth bynnag yw'r defnyddiwr gofynnir amdano yn y URL.
Ac yr wyf i'n mynd i rhagddodiad gyda dot
er mwyn i mi mod ychydig bod yn ddiogel
drwy ddweud pa bynnag ffeil gallant cais wedi i o leiaf ddechrau'r
yn y cyfeiriadur cyfredol.
Wrth gwrs, mae bygythiad yma.
'Achos os ydynt yn lle hynny cynnwys yr hyn y?
Yn eu llwybr, gallant fath o gweithio o gwmpas hynny hefyd.
Dot, dot, dde?
Felly, os bydd y defnyddiwr yn unig yn rhoi dot, dot yn y URL, mewn theori,
gallent ddechrau cael fy - a dweud ffeil cyfrinair.
Felly, nid yw hyn yn golygu i'w sicrhau,
mae'n golygu i fod yn syml.
Felly dyma, mae gennyf newidyn sy'n yw Concatenation o dot
sy'n bresennol cyfeiriadur a bod y cais URL
a welodd gennym o'r blaen yw fel slaes neu / hello.txt.
Felly nawr, mae'n cael ychydig yn fwy diddorol.
Yn gyntaf, yn sylwi ar y gwaelod.
Dw i'n gwrando ar y yr un porthladd ag o'r blaen.
Felly, y gwir diddorol gwaith sydd y tu mewn o'r yma.
Bob tro y bydd cais dod i mewn gan natur
o'r cod hwn, beth ydw i'n ei wneud?
Im 'yn galw ffeil dull ffeil darllen system,
pasio yn y llwybr yr wyf am ei ddarllen.
Ac yn awr, mae hyn yn yr hyn sy'n ddiddorol yma,
hyn yw drwy weithredu yn y dull asynchronous.
Ni allwch gael ffurflen gwerth o ffeil darllen.
Yn yr hysbysiad wir, mae mynegiant dim chwith
i'r chwith y ffeil darllen.
Nid yw'n dychwelyd gwerth.
Yn hytrach, mae'n galw am alwad yn ôl weithredu pan fydd yn barod
i roi i chi yn ôl ateb.
Felly, unwaith eto i fod yn glir, tra yn a fu,
mewn llawer o raglennu ieithoedd, os ydych eisiau
i ddarllen ffeil achos ym mhwynt PHP,
tanlinellu ffeil yn cael tanlinellu cynnwys,
gennych mynegiant chwith yn yr holl gwerth ar ôl -
cyn yr arwydd cyfartal, sy'n golygu eich bod yn pennu
i'r newidyn y ffurflen gwerth y swyddogaeth honno.
Gallwch wneud hynny mewn node.js, ond fel arfer yn cael
i alw yn benodol synchronous fersiynau o swyddogaethau yn ei hoffi,
Yr wyf yn meddwl ei fod yn darllen cydamseru ffeil neu cydamseru darllen y ffeil.
Wedi anghofio sut y maent yn enwi ei.
A byddai hynny'n rhoi chi gwerth dychwelyd.
Ond os yw'r ffeil ar rhywfaint o system ffeiliau anghysbell
neu ddisg yn unig naturiol araf, gallai gymryd 10 milfed eiliad
neu 2 eiliad ar gyfer y ffeil mewn gwirionedd yn dod yn ôl.
Yn y cyfamser, nid oes unrhyw eraill ar y we ymwelwyr yn cael eu gwasanaethu
gan eich websit.
Rydych yn blocio.
Dyna beth a elwir blocio IO, mewnbwn / allbwn.
Felly dyma, mae hyn yn llawer callach.
Oherwydd yr hyn node.js yn mynd
i'w wneud ar ddehongli yn y canlynol,
mae'n mynd i alw y dull ffeil darllen,
ceisio un i fyny y ffeil sydd wedi cael llwybr a nodir gan y gwerth P.
Ac yna os a phan mae'n barod i roi i chi yn ôl y cynnwys
y ffeil P, bydd yn galw swyddogaeth y mae ei llofnod yn
gan gonfensiwn y canlynol.
Mae dau dadleuon, y cyntaf sydd efallai gwrthrych Gwall,
cyfalaf E, ei fod yn wrthrych Gelwir Gwall neu Null
os nad oes gwall o'r fath.
A'r ail ddadl - cymryd dyfalu - yn mynd i fod beth?
Mae'n cael ei alw data yn amlwg, ond beth yw data yn fwy diriaethol?
>> Cynnwys?
>> Mae cynnwys hello.txt yn yr enghraifft yr wyf yn tynnu
i fyny yn fy porwr funud yn ôl.
Felly, mewn geiriau eraill i ddarllen ffeil ac mae llawer node.js swyddogaethau
fel nad yn yn dychwelyd gwerthoedd.
Maent yn galw callbacks a phasio
i callbacks hynny beth fyddai wedi bod yn draddodiadol
dychwelyd gwerth.
Mae'r upside y dull hwn yw
y gallech ffonio darllen y ffeil yn T0.
Grym swyddogaeth alwad yn ôl Nid yw cael eu galw un tic yn ddiweddarach
felly i siarad yn T, mae'n y gellid ei alw yn T1000,
mil dic yn ddiweddarach.
Ond y pwynt yw bod y gweddill y cod yn y ffeil hon,
os o gwbl fyddai unwaith cael ei weithredu tra node.js
ac er bod y system ffeiliau ffigurau allan sut i ddarllen
bod ffeil a chael yn ôl i chi.
Felly rydych greu'r -
hynny'n effeithiol y rhith
o parallelism wrth osod Nid yw prosesau rhedeg yn arafach yn
bloc y pethau pwysig, y rhan sy'n gwasanaethu defnyddwyr.
Felly, sut yr ydym yn ymdrin â hyn?
Mae hyn yn gyffredin iawn patrwm node.js.
Ac mae ffordd yn unig i symleiddio mae hyn yn byddwn yn gweld o'r blaen ar hyd.
I wirio yn gyntaf os Nid yw gwall yn null.
Felly, os nad yw'n ffug yna yr oedd gwall.
Nid wyf yn gwybod beth yw hwnnw, efallai nad yw'r ffeil yn bodoli.
Doeddwn i ddim yn cael caniatâd.
Mae'r llwybr enw yn anghywir.
Unrhyw nifer o bethau allai fynd o'i le.
Am y tro, yr wyf i'n mynd i fympwyol dychwelyd y 500
sy'n gwall gweinydd mewnol.
Aeth rhywbeth o'i le.
Nid wyf yn wir gofal i wneud diagnosis iddo.
Felly, gadewch i ni jyst dweud y defnyddiwr ei fod yn torri.
Ac yna, dw i'n mynd i wneud res.end,
ac mae hyn yn nodiant llaw-fer.
Dwyn i gof bod diwethaf amser i ddim res.write
ac yna wnes res.end.
Os mai dim ond am anfon un llinell o gynnyrch,
gallwch wneud y cyfan ar unwaith gyda res.end gyda dadl,
ac mae hynny'n mynd i anfon beth bynnag yw'r neges gwall yn
tu mewn gwrthrych hwn at y porwr.
Mae'n 'n bert yn bwaog dwyn i gof funud yn ôl.
Nid oes gennyf unrhyw syniad beth mae hyn yn yn golygu ar yr olwg gyntaf.
Ond pan fyddaf yn gofyn am ffeil nad oedd yn bodoli -
Wps, mae angen i redeg y gweinydd eto.
Pan fyddaf yn gofyn am ffeil nad oedd yn bodoli, EISDIR,
felly rhywbeth am ei fod cyfeiriadur,
os wyf yn gwneud rhywfaint o hap llinyn yno,
mae'n debyg mae hynny'n golygu y Nid yw'r ffeil yn bodoli hyd yn oed.
Ac mae hynny oherwydd fy cod yn syml yn dweud i ysgrifennu
allan beth bynnag fo'r Raw Neges gwall yw,
felly nid hawdd iawn i'w defnyddio ond o leiaf yr wyf i'n ei drin.
Else, os nad oedd yn gwall beth ydw i'n ei wneud?
Yr un peth fel o'r blaen tafod allan OK 200, blaen -
testun / plaen math a meddwl Yna boeri allan y data.
A dyna pam dwi'n cael y cynnwys hello.txt a dim ond
i gadarnhau os byddaf yn edrych yn hello.txt,
'i' yn llythrennol dim ond helo, byd.
Ac os ydw i wedi newid hyn helo, y byd, yn arbed y ffeil,
ailgynnal y gweinydd, ail-lwytho'r dudalen.
Yn awr, yr wyf yn cael y fersiwn.
Felly, rydw i wedi wirioneddol yn unig ail-ysgrifennu gweinydd gwe
fel y bodoli ar gyfer llawer blynyddoedd ond gan ddefnyddio node.js.
Ond gallwn wneud hyn hyd yn oed yn fwy yn lân.
Gadewch i mi agor async-1.js.
Yn awr, yn sylwi fy mod yn ychwanegu modiwl arall yn y cyfnod hwn,
mae'n debyg y modiwl llwybr.
Yn awr, mae hyn yn dda cyfle i edrych
ar yr hyn y ddogfennaeth edrych fel.
Node.js yw ddogfennaeth.
Fel PHP yn fy marn i mewn gwirionedd yn eithaf da
ac yn syth ymlaen.
Os byddaf yn mynd i node.js a Google a chwilio am lwybr node.js,
hyn y byddwch yn gweld fel arfer cyswllt uniongyrchol i URL
fy mod yn rhoi i fyny yma funud yn ôl.
Felly / api yw'r lle swyddogol i fynd am ddogfennaeth.
A beth byddwch yn gweld ar y brig
o ddogfennaeth swyddogol nod yn yw pob un o'r dulliau a'r
neu eiddo tu mewn modiwl penodol,
Gelwir un ohonynt yn ymuno.
Ac ymuno yw swyddogaeth cynorthwy-ydd hynny'n mynd i ganiatáu i mi
i beidio trafferthu gyda holl pwyntiau cadarnhaol.
Ac mae wedi y ychwanegu bonws fel y gwelwch
o'r dociau yw hi hefyd normalizes y llwybr o ganlyniad.
Felly, os yw'r defnyddiwr neu os oes gennych ddotiau neu ddotiau dot neu unrhyw gyfuniad
o mathau hynny o berthynas llwybrau, ymhlith y upsides
y dull cydgysylltiedig yw bod mae'n mynd i lanhau popeth i fyny
ac yn rhoi i chi canonaidd llwybr heb unrhyw
o ddotiau hynny neu ddotiau dot.
Felly, mae'n beth da mewn cyffredinol ar gyfer diogelwch o leiaf
os ydych yn edrych ar y dychwelyd gwerth y Dydw i ddim yn
yn yr achos syml penodol.
Ond i ddim am ei ddefnyddio.
Felly, yr wyf yn awr yn creu llwybr a ychydig yn fwy programmatically
gyda path.join yn lle hynny o Concatenation Raw.
Felly, dyna ychydig lanach nag o'r blaen.
Ac yn awr yn sylwi fy mod yn bod yn ychydig yn fwy deallus yn hytrach
na dim ond blindly yn ceisio darllen y ffeil,
Rydw i'n mynd i mewn gwirionedd ffoniwch fs.stat.
Felly, os ydych yn gyfarwydd
gyda lefel isel C swyddogaethau a C, hyd yn oed yn PHP.
Mae llawer o lyfrgelloedd ffurflenni stat swyddogaeth hon
hanfod ystadegau ar ffeil, maint y ffeil,
y caniatadau, enw a phethau fel 'na,
a hefyd ymhlyg os y ffeil yn bodoli ai peidio,
ac os yw'n ffeil neu cyfeiriadur
neu i gysylltu symbolaidd neu rywbeth arall.
Felly nawr yn sylwi, rwy'n galw fs.stat.
Ac yna yn ôl pob golwg yn ôl at y dogfennau,
Ddylwn i fynd yn ôl mewn Gwall gwrthrych
neu yn dilyn Null gan rywbeth ystadegau.
Ond gadewch i ni edrych ar hyn, node.js.fs.
Dyma y ffeil dogfennaeth system.
Gadewch i mi chwilio am ystadegau.
Mae llawer mwy swyddogaethau yma.
Wps, hynny cydamseru stat, fs.stat.
Felly dyma, mae'n asynchronous ystadegau (2).
Dyna ystyr os ydych yn cofio o brif dudalennau,
pennod 2 y brif dudalen,
mae hynny'n golygu hyn yn llythrennol dim ond gweithredu'r nod
o lefel isel stat swyddogaeth system.
Felly, mae'r alwad yn ôl yn cael dau dadleuon, gwall a stat
lle mae stat yn fs.stats gwrthwynebu.
Felly, gadewch i ni weld pa gwrthrych hwn i fod i edrych fel.
Gadewch i ni cliciwch ar y ddolen ac yr wyf yn gweld hynny.
Y gwrthrych ystadegau yn cynnwys debyg rhyw ddull cynorthwy-ydd,
yn y ffeil, yn cyfeiriadur, yn criw o bethau eraill.
Ei fod yn y "yn cael ei" ffeil yr wyf yn gofalu amdanynt yn yr achos penodol hwn.
Felly dyma fi yn mynd.
Os oedd camgymeriad, yna gadewch i mi mechnïaeth y tro hwn
ac yn cymryd yn ganiataol.
Os oes camgymeriad, roedd yn yn ôl pob tebyg ffeil 404 Nid yw dod o hyd.
Gallai fod yn rhywbeth arall
ond fy mod yn cael ychydig ddiog yma dim ond i ganolbwyntio
ar y manylion yn fwy diddorol.
Ond ar gyfer y defnyddiwr dibenion, nid yw ffeil yn dod o hyd,
os oedd unrhyw wall yn datgan y ffeil.
Fel arall, gadewch i mi gwirio a yw'r ffeil yn wir ffeil gwirioneddol.
Felly, os nad ei fod yn ffeiliau, mae'n bodoli.
Mae rhywbeth yno, ond mae'n debyg cyfeiriadur
neu efallai gyswllt symbolaidd
neu rywbeth arall sy'n ffynci ar y system ffeil.
Naill ffordd neu'r llall, y defnyddiwr ni ddylid edrych arno.
Felly yn awr, Fi jyst ddim yn mynd i boeri
allan gonfensiynol anawdurdodedig 403.
Ond unwaith eto dim ond confensiwn,
Gallwn i fod wedi defnyddio rhywbeth arall mewn theori.
Ac yna yn olaf, gadewch i mi ceisio i ddarllen y ffeil.
Felly, gadewch i mi sgroliwch i lawr.
Ac yn awr sylwi ar hyn yn lle Gall y cod yn cael ychydig o flêr,
yn sylwi fy mod yn galw fs.readFile pasio
yn yr un llwybr, yr un adalwad amser ddiwethaf,
felly y fersiwn blaenorol.
Ac yna os byddwn i'n dod o hyd i -
os nad wyf yn ei chael yn, Yr wyf yn boeri allan o 500.
Ac os wyf yn dod o hyd iddo, beth linell ydym yn mynd i'w weld yma?
Rydym yn mynd i weld y fs ysgrifennu pennawd 200 yn ôl pob tebyg
a res.end anfon y data gwirioneddol.
Ond yn sylwi ar hyn.
Ac nid yw hyn yn dangosol y senario achos gwaethaf.
Ond mae gen i stat hwn ffoniwch yma nag gennyf rai pethau.
Yna, mae gennyf un arall alwad asynchronous yma,
felly mae mwy bant.
Felly, dim ond fath o allosod os gallech oddi yma.
Pa broblem yn tueddu i godi gyda yr iaith fel JavaScript
yn yr amgylchedd hwn lle Nid oes rhaid i werthoedd dychwelyd i chi
ond yn hytrach, yr ydych wedi callbacks hyn.
Ac wrth gwrs, mae hyn yn unig yw beth arddull y ffaith
fy mod yn cadw tolcio.
Ond yn cymryd hyn i rhesymegol cam nesaf.
Gadewch i ni dybio roedd un neu dau neu dri swyddogaethau eraill
fod angen i mi i weithredu hynny Roedd gan asynchronous natur,
ac felly 'ch jyst fath o cadw tolcio i ymdrin â hwy,
i ymdrin â nhw, eu trin a'u trafod.
Byddwch yn cael math o alwad yn ôl uffern wrth i bobl alw
lle mae eich cod dechrau i gael eang iawn
a dweud y gwir galed iawn i'w darllen.
Fel y mae, yr wyf yn gallu fath o prin dweud bod hyn yn fath o lif
sydd â math hwn
o arddull ongl beth yn digwydd yma.
Felly, nid yw hyn yn ddelfrydol oherwydd gall hyn fod yn gyflym iawn
anhylaw, er bod dau Nid yw asynchronous yn galw
mor bwysig â hynny.
Felly, gallem osgoi hyn, dde?
Efallai eich bod wedi cael cipolwg ar y Yr wyf yn misclicked funud yn ôl.
Yn y dogfennau, eich bod yn gwybod, mae'n edrych fel nad oes statSync.
Ac nid statSync yn cymryd am alwad yn ôl fel dadl.
Mae'n cymryd dim ond y llwybr oherwydd mae'n debyg gwneud beth?
Mae'n dychwelyd yn enghraifft o fs.stats.
Felly, gallai hyn fod yn eich greddf gyntaf, dde?
Yn enwedig os swyddogaethau alwad yn ôl
a asynchronicity yn Ychydig newydd i chi, a dweud y gwir,
dull hawsaf yw yn ôl pob tebyg dim ond osgoi'r broblem i gyd
gyda'i gilydd, yn mynd yn ôl i ddidoli o raglennu arddull CS101
lle rydych yn galw swyddogaeth neu dull, yn dychwelyd y gwerth,
yn galw swyddogaeth, ffurflenni gwerth,
swyddogaeth, yn dychwelyd y gwerth.
A gallai wyf yn defnyddio, felly, fs.statSync
sydd yn llythrennol yr un fath ond mae'n fersiwn cydamserol
sy'n golygu ei fod yn dychwelyd gwerth.
Nid yw'n pasio gwerthfawrogi i alwad yn ôl.
Ond pam byddai hynny'n debygol o fod yn workaround suboptimal i droi
â swyddogaethau cydamseredig?
Yeah?
[Anghlywadwy Sylw]
Yn union, mae'n cymryd amser hir.
Rydych yn unig yn arafu popeth i lawr.
Gan fod yn debyg Shake Shack neu Burger blasus, os ydynt yn cael gwared
o declynnau hynny a wnaethoch, y cwsmer yn sefyll yn y tu blaen
o linell nes bod eich bwyd yn barod cyn hyd yn oed yn cymryd y gorchymyn
y person y tu ôl mae'n amlwg eich bod
drwy Rhowch arafu.
Mae pobl yn dechrau gadael, chi fath o tynnu pecynnau.
Gallwch wneud unrhyw nifer o'r cyfatebiaethau yma.
Ond yn fyr, mae'n Mae'n debyg nad yn beth da
ar gyfer busnes neu ar gyfer y gweinydd.
Cod fel asynchronous yn fel arfer yn dda o leiaf
yn yr achos hwn, ond mae'n bendant yn dechrau achosi rhywfaint o ing.
Ac yn wir yr wyf yn meiddio dweud pryd yn gyntaf ysgrifennu pethau hyn,
bydd yn cymryd ychydig yn ychydig o ddod i arfer â.
Felly, gadewch i ni ddechrau i arfogi i chi gyda rhai llyfrgelloedd
a thechnegau i wneud hwn yn haws ychydig.
Felly, un o'r rhai mwyaf cyffredin llyfrgelloedd yn llyfrgelloedd poblogaidd
y dyddiau hyn, mae hyn yn un o'r enw async.js.
Ac fel llawer o node.js llyfrgelloedd neu fodiwlau,
mae'r rhain i gyd ffynhonnell agored.
Maent bron i gyd yn byw ac yn cael storfeydd ganolbwynt sy'n fath
o yn dod yn y de facto lle i storio pethau hyn.
Ac yna mae 'na seilwaith cyfan
ar gyfer gosod y pethau hyn enw NPM, Rheolwr Pecyn Node
ac os ydych yn gyfarwydd gyda EvanTube yn garedig
o app tebyg neu app gael.
Os ydych yn gyfarwydd gyda Red Hat a Fedora
fel yn y peiriant, mae fel iym.
Ond mae'n nod - mae'n rheolwr pecyn yn unig
ar gyfer yr amgylchedd penodol.
Felly, gallwn lawrlwytho a gosod pethau fel y llyfrgell async
ac hefyd yn un arall a elwir yn y tanlinellu llyfrgell neu fodiwl.
Ond mae'r fs mor bell, HTTP, llwybr,
hynny i gyd yn dod a adeiladwyd i mewn i nod.
Felly, os ydym yn mynd i'r docs API, byddwch mewn gwirionedd yn gweld bod eu hadeiladu
i mewn i nod a gewch am ddim criw cyfan o fodiwlau.
Ond mae digon o bobl neis ar y rhyngrwyd wedi gwneud dwsinau
os nad cannoedd o llyfrgelloedd eraill
i wneud pethau'n well neu'n wahanol.
Felly, gadewch i ni edrych ar sut y llyfrgell hon yn gweithio.
Felly, mae'r rhan fwyaf o'r cod hwn yw union yr un fath am y tro.
Mae gen i lwybr yn greu i fyny top.
Ac yn awr rwy'n galw async.series.
Felly, y llyfrgell async, mae'n dim ond llyfrgell sy'n caniatáu i chi
i basio neu godi fel arfer o swyddogaethau i gael enw un
ar ôl y llall yn unig i fath o osgoi y mater hwnnw bant,
ac yn wir dim ond y meddwl ing a fydd yn codi yn ddieithriad
o leiaf pan fyddwch yn gyntaf plymio i mewn i hyn ar eich pen eich hun
gyda rhaglennu asynchronously.
Fel yn neilltu, os ydych wedi cymryd 161 ac rydych wedi delio â chloeon
a chodi amodau a'r holl o hynny, cod asynchronous
ac amgylchedd fel node.js mewn gwirionedd yn llawer,
Gellir dadlau bod llawer symlach
nag ysgrifennu mewn gwirionedd cod multithreaded.
Anytime oes gennych cod multithreaded,
oes gennych gyflyrau codi.
Rhaid i chi boeni am dau edafedd cynnwys
am yr un adnoddau ddisg neu gof.
Mae harddwch JavaScript
mewn node.js yn mae yn llythrennol dim ond un edau,
sy'n golygu bod y porwr
neu gall y gweinydd yn unig wneud un peth ar yr un pryd.
Dim ond i fyny i chi, y rhaglennydd
i gadw model meddwl ar gyfer sut yr ydych yn fath o giwio pethau
a chyfrif i maes sut i archebu eich cod.
Ond byth yn rhaid i chi boeni am godi amodau
yn yr un ffordd yn lleiaf â'r cod Raw fel hyn.
Felly, mae'n ychydig yn galed i grack yma.
Ond - Felly gadewch i mi agor y docs am ddim ond ennyd.
Mae'r llyfrgell async.js sy'n yn yr un modd yn googleable iawn,
mae'n byw yn y GitHub repot fel llawer ohonynt.
Peidiwch â meddwl ei fod yn fras, nid yw'n.
Gadewch i mi sgrolio i lawr i'r Read Me yma.
Felly, mae'r llyfrgell async yn darparu criw cyfan
o ddulliau tu mewn iddo.
Er enghraifft, mae dull o'r enw yr un,
ac os fyddaf yn clicio hyn yn unig i weld ei docs am eiliad,
mae hyn yn swyddogaeth neu ddull sy'n eich galluogi i wneud rhywbeth
fel pedwar bob ond ar yr un pryd.
Maen nhw i gyd yn mynd i ddigwydd o bosibl ar yr un pryd.
A'r dull pob un yn unig mynd i ddychwelyd i chi pan fydd yr holl
o iteriadau yn gyflawn.
Felly, efallai y byddant yn digwydd un ar ôl y llall.
Yn ddelfrydol, y maent yn digwydd yn y bôn yr un pryd.
Ond nid yw'r dull yn eich ffonio yn ôl.
Nid yw'n cyffro eich swnyn nes bydd yr holl
o'r elfennau sydd gennych ailadroddodd dros wedi cwblhau.
Felly, dim ond yn ffordd braf
o osgoi defnyddio pedair dolen syml
ond yn gwneud mewn gwirionedd rhywbeth asynchronously.
Ond yn awr yn fwy uniongyrchol gysylltiedig â hyn enghraifft,
sylwi mae hyn yn dull gyfres.
A gadewch i mi dynnu i fyny enghraifft canonaidd syml.
Felly, y llyfrgelloedd async, cyfres dull hwn yn cymryd i mewn fel a awgrymir
gan y cromfachau sgwâr yn arae.
Beth yw'r data mathau o elfennau
yn amrywiaeth hwn yn seiliedig ar ar enghraifft syml?
Mae hwn yn amrywiaeth o swyddogaethau.
Felly, yn C, byddech yn galw eu gweithredu awgrymiadau.
Yn JavaScript, mae mwy o cyfeirio yn briodol i swyddogaethau
neu swyddogaethau dienw.
Ac mae hyn yn unig yn golygu, araeau
wrth gwrs, yn cael eu harchebu o sero ar i fyny.
Felly, maent wedi cynnal gorchymyn sy'n dda
ar gyfer cyfres, cyfres achos ' wrth gwrs yn golygu gwneud rhywbeth
er mwyn peidio ochr yn ochr.
Felly, mae hyn yn unig yn golygu bod hyn yn Bydd swyddogaeth yn cael eu gweithredu,
yna mae hyn yn un, yna mae hyn yn un, yr un yma, yna mae hyn yn un,
Fodd bynnag, mae llawer o
tan yn olaf y dewisol cael ei alw'n alwad yn ôl.
Felly, yn sylwi ar y patrwm yma.
A hyd yn oed er bod hyn yn yn llyfrgell un dyn, a
mae'n gynrychioliadol o'r patrwm JavaScript gyffredin iawn
o eto gan ddefnyddio callbacks.
Felly, sylwi ar yr hyn rydych yn ei wneud yma.
Yn y swyddogaeth cyntaf yn pasio i mewn drwy amrywiaeth hwn,
chi diffinio dienw swyddogaeth yn unig gyda swyddogaeth.
Ond rybudd y mae'n debyg yn ôl ddogfennaeth hon,
Dylai fod swyddogaeth dienw cymryd alwad yn ôl dadl.
Mae hynny'n mynd i fod yn pwyntydd neu mae cyfeiriad at swyddogaeth
y dylech ffonio pan fydd eich cod yn barod i ddychwelyd gwerth.
Felly eto, yn wahanol am ychydig rhaglennu nodweddiadol gweithdrefnol
lle rydych chi'n eu defnyddio i dychwelyd gwerthoedd yn syth
bod un gwahaniaeth gyda gan ddefnyddio llyfrgell fel hyn
mewn rhaglennu asynchronous mwy yn gyffredinol, yw pan fyddwch yn barod
i ddychwelyd gwerth o cronfa ddata, o ffeil,
o rhifyddeg mynegiant, mae i fyny i chi
i alw swyddogaeth galw'n ôl.
A'r peth braf am y llyfrgell hon
os ydym yn darllen y docs yn fwy gofalus yw,
os a dim ond os yw pob un yr ardal a elwir callbacks
heb gwrthrych Gwall, bydd yr holl beth yn llwyddo?
Felly, mewn geiriau eraill, os oes 2,
os oes 10 dienw swyddogaethau
yn amrywiaeth hwn, felly, yn y gyfres hon,
Dim ond os yw pob un ohonynt yn llwyddo,
bydd y galw'n ôl dewisol terfynol yn cael eu hystyried yn llwyddiannus?
Os oes unrhyw un ohonynt yn methu, pob swyddogaeth
ar ôl ni fydd hyd yn oed yn cael ei weithredu.
Felly, mae'n ffordd braf o fath o gael cadwyn llygad y dydd
sy'n terfynu'n rhy gynnar gynamserol os oes rhywbeth yn mynd o'i le.
Felly, er mwyn gweld hyn mewn cyd-destun, dyma yw sut y gallem ail-weithredu
y rhaglen flaenorol.
Yr wyf yn cael y llwybr fel o'r blaen, felly mae hwn yn y rhan hawdd.
Yr wyf yn adysgrifia bastio hwn cod sgerbwd
o'r ddogfennaeth yno async.series parenthesis agor,
agor braced sgwâr.
Ac yn sylwi yn awr yr wyf wedi un swyddogaeth yn y ddechrau'r hwn
ail, byddwn yn gweld lle rydym yn mynd o hyn.
Ac yn awr yn sylwi, mae'n Ychydig cymhleth ar y dechrau
ond yn canolbwyntio yn unig ar iddo linell wrth linell.
Fs.stat yn golygu cael yr ystadegau neu nad beth am y llwybr hwnnw.
Ffoniwch alwad yn ôl hwn pan fydd yn barod.
Mae'r cod hwn yr un fath ag o'r blaen.
Os oes camgymeriad, mae un gwahaniaeth nawr.
Unwaith eto, mae'r patrwm cyffredin iawn mewn rhaglennu node.js yn
os oes rhywbeth yn mynd o'i le a angen am alwad yn ôl i yn gwybod
erbyn confensiwn, y cyntaf ddadl i alwad yn ôl yn mynd
i fod na, os popeth yn iawn neu cyfeirio at wrthrych Gwall,
cyfalaf E. Mae'n fel Gwall dosbarth sy'n bodoli yn fyd-eang
ond yn fwy ar hynny ryw adeg arall.
Felly, drwy wneud hyn, os mae 'na camgymeriad, beth yw'r goblygiadau?
Yn seiliedig dda ar yr hyn yr wyf yn dywedodd y gyfres yn ei wneud,
yw os unrhyw beth yn mynd anghywir, rydym yn unig fath o eisiau
i erthylu'r cyfres gyfan swyddogaeth ddienw galwadau.
Felly, mae'n suffices i mi dim ond dychwelyd alwad yn ôl pasio
yn y gwrthrych Gwall.
Oherwydd os stat yn rhoi i mi yn ôl camgymeriad,
Gallwn greu newydd Gwall gwrthrych fy hun,
ond nid wyf yn wir gofal i,
Fi jyst am eu trosglwyddo beth bynnag fo'r gwall yn digwydd bod mewn gwirionedd yn
fel y gallaf ei drosglwyddo i alwad yn ôl hwn.
A dim ond i fod yn glir, mae'r Nid yw ffurflen dreth yn gwbl angenrheidiol.
Yn y bôn yr wyf am wneud hyn ond roeddwn i eisiau ei wneud nawr "yn dychwelyd;
/ / Fel nad oes unrhyw mwy cod yma executes ".
Felly, unwaith eto cyffredin arall confensiwn yn JavaScript,
hyd yn oed os nad ydych yn dychwelyd gwerth y cyfryw,
ydych am eu trosglwyddo gwerth i'r swyddogaeth galw'n ôl
ond yna rydych am i roi'r gorau i weithredu
y swyddogaeth ydych yn yn, y ffordd ddibwys
i wneud hyn yn unig i alw dychwelyd yma.
Ond does dim byd o'i le,
rydym yn dim ond gwneud alwad yn ôl yn dychwelyd gwall hyd yn oed er ei fod yn mynd
i ddychwelyd mewn gwerth heb ei ddiffinio.
Mae pob hawl, nid yw hyn yn dychwelyd gwerth mwyaf tebygol.
Y cyfan yr wyf yn poeni am yn byrddio gweithredu pellach.
Felly, fy cyfuno'r rhain dwy linell yn unig yw steilydd
i confensiwn yn unig i y nifer o linell
o god yr wyf newydd ei ysgrifennu 2-1.
Felly beth arall?
Os nad oes gwall -
mewn gwirionedd fod yn glir Gallwn hefyd yn osgoi
drwy wneud os arall.
Ond unwaith eto, un arall patrwm cyffredin yw gwirio
ar gyfer eich camgymeriadau i fyny top ac yna dim ond dychwelyd yn hytrach na pharhau
i indent eich cod gyda elses ac elses ac elses.
Felly, os nad ei fod yn ffeil, erbyn hyn, eich bod yn gwybod,
Yr wyf am ymdrin â hyn ychydig yn arbennig.
Felly dyma fel yn Java neu C + + neu ychydig o ieithoedd eraill,
dyma sut y gellir enghreifftio yn wrthwynebu deipio gwall pasio
mewn neges diofyn o nid ffeil
ac mae hyn yn unig braidd yn fympwyol.
Ond dw i'n signalau camgymeriad o fy mhen fy hun.
A beth mae hyn yn olaf lein yn ôl pob tebyg yn arwyddo?
Popeth yn iawn.
Os byddwch yn pasio yn null am y paramedr camgymeriad, mai dim ond yn golygu
drwy gonfensiwn popeth yn iawn.
Felly, mae hynny'n golygu yr hyn y fydd yn digwydd yn rhesymegol?
Os null cael ei basio i'r alwad yn ôl
mae hynny'n golygu hyn yn ddienw swyddogaeth wedi llwyddo
fel petai.
Felly, beth ddylai y gyfres dull rhagflaenu ac yn awr yn seiliedig ar
ar fy diffiniad llafar yn gynharach?
[Anghlywadwy Sylw]
Symud ymlaen i'r un nesaf, dde?
Os yw'n wedi dychwelyd di-null gwerth, byddai'n dim ond erthylu
a dim mwy dienw Byddai swyddogaeth yn cael eu galw.
Ond, oherwydd nid yw wedi, yna bydd hyn yn cael eu galw nesaf.
Felly, mae'r rhesymeg yma yw 'n bert lawer yr un fath ag o'r blaen
a byddwn yn gweld sut i lanhau hyn i fyny ymhellach mewn munud.
Yr wyf yn sylweddoli hyn yn fath o lawer
i amsugno'r holl lafar ac yn weledol.
Ond yn awr yn sylwi, yr ail swyddogaeth dienw yr wyf am
i weithredu yn y gyfres yn i geisio i ddarllen y ffeil.
Ffoniwch alwad yn ôl hwn pan fyddwch yn barod.
Os oes camgymeriad, dim ond arwydd iddo drwy y alwad yn ôl
fel bod y gweddill pethau hyn terfynu'n rhy gynnar.
Null dychwelyd arall.
Ond pam ydw i'n pasio mewn dau dadleuon?
Wel hyn o bryd os wyf yn darllen y ffeil a mynd yn ôl
fel newidyn a elwir data,
Rwyf am i nid yn unig yn arwyddo popeth yn iawn drwy ddychwelyd null
gyfer y ddadl gyntaf.
Yr wyf am ddychwelyd y gwir data fel yr ail ddadl.
Oherwydd os wyf yn darllen ymhellach yn y dogfennau,
sylwi ar hyn darn olaf o god braced sgwâr yn golygu bod yn y
ddiwedd y gyfres.
Dim ond dau ddienw swyddogaethau yn y gyfres hon.
Os oedd gwall yma, yna Yr wyf yn gwybod bod un o'r cysylltiadau
yn y gadwyn hon fel i siarad methu.
Felly, mewn geiriau eraill, gwall hwn yn mynd i fod yn wrthrych Gwall
hynny yw null os o gwbl o'r rhain guys wedi methu.
Ac os yw hynny'n wir, Im 'jyst mynd i achub ac rwy'n mynd
i ddweud 400 sy'n golygu cais yn methu,
mae hynny'n gyffredinol iawn neges gwall.
Ac yna, yr wyf i'n mynd i argraffu'r neges gwall.
Felly, dydw i ddim yn trafferthu i fod yn rhefrol super y cyfnod hwn,
Dydw i ddim yn mynd i wahaniaethu rhwng 500 a 404 a 403,
Im 'jyst fath o blindly chwifio fy llaw
a dweud aeth rhywbeth o'i le.
Ond os na wnaeth mynd o'i le,
Rydw i'n mynd i anfon y res.end pasio data hwn.
Nawr mae hyn yn edrych ychydig yn cryptig.
Ond unwaith eto os wyf yn darllen y dogfennau,
yr ail ddadl i hwn alwad yn ôl terfynol, terfynol,
y dyn mai dim ond wedi cyflawni unwaith y bydd y gyfres yn cael ei wneud
gweithredu neu gyfran yno o, mae hyn yn mynd i fod yn amrywiaeth
o'r holl ail dadleuon
a gafodd eu pasio i'r alwad yn ôl.
Nawr, mae'n ymddangos bod y Dim ond yn cysylltu yn y gyfres hon
sydd mewn gwirionedd yn dychwelyd i'r ail ddadl a yw hyn un yma.
Felly, yr wyf i'n mynd i ddatrys y ar naid o ffydd yn syml yn defnyddio tybio
gyfer hyn o bryd y ddiwethaf yn ddull
sy'n rhoi i chi yr olaf elfennau o arae.
Gan fod amrywiaeth hwn sy'n cael ei basio
i mi Mae dwy mynegeion, sero ac un.
'I' jyst sero oes unrhyw werth gan fod hyn yn guy yn dychwelyd -
nid yw'n trosglwyddo mewn ail ddadl, ond y boi yn ei wneud.
Felly, canlyniadau braced sero oes unrhyw beth,
un canlyniadau braced yn cynnwys yr hyn,
os ydych chi wedi bod yn dilyn ynghyd hyd at y pwynt hwn?
Mae'r ffeil, gall y helo, cynnwys y byd yn ôl pob tebyg,
felly dyna sut yr wyf yn mewn gwirionedd argraffu.
A gadewch i mi orffen un fanwl yma.
Os wyf yn gwneud y math hwn o hen ysgol, os wyf am gael
ar yr elfennau diwethaf, pe gallwn gwneud canlyniadau [results.length-1],
dyna fath o hen ffordd yr ysgol
o gael at y elfennau diwethaf i mewn - neu sero mynegai arae.
Ond, fel yn yr ochr, yn cofio fy mod wedi llyfrgell hon
yma tanlinellu a oedd erbyn yn unig a elwir confensiwn
llythrennol yn tanlinellu gymeriad nad yw'n arbennig,
'i jyst yn edrych yn cŵl fel arwydd doler yn ei wneud ar gyfer jQuery.
Mae hyn yn unig yw cynorthwy-ydd dull tanlinellu dot diwethaf
sy'n gwneud yn union yr un peth.
Ac os nad ydych erioed wedi ei ddefnyddio cyn tanlinellu JS ddau
ar gyfer codio ochr y cleient
ac ochr y gweinydd yn llyfrgell hynod ddefnyddiol
bod cymaint o bobl a ddisgrifir mae'n hoffi jQuery yn cynnwys yr holl
o'r dulliau, mae pobl yn dymuno ddaeth gyda'r JavaScript ei hun.
OK.
>> Felly, fel 'n bert i mi a Roeddwn yn gwylio yn y gyfres,
chi wedi hoffi alwad yn ôl fel dadl?
>> Ydw.
>> Fel felly pan fyddwch mewn gwirionedd yn hoffi gwthio hynny yn,
ac fel hyn y mae'n ei yn ei olygu wrth 'ch jyst wedi
fel adalwad ac yna ddim yn hoffi -
[Anghlywadwy Sylw]
>> Iawn, cwestiwn da.
Felly, gadewch i mi dynnu i fyny y brif dudalen async yma
neu y ddogfennaeth ar GetHub.
Felly, mae hyn yw'r canonaidd strwythur.
Os ydych chi'n galwad ddefnyddio'r cyfres dull penodol,
mae dwy ran mawr iddo.
Mae un yn amrywiaeth o swyddogaethau dienw
a dau yn am alwad yn ôl terfynol swyddogaeth sy'n mewn gwirionedd
ddienyddio ar yr union ddiwedd y gyfres.
Yn awr, os ydym yn chwyddo i mewn ychydig yn agosach ar y cyntaf
o bethau mawr hynny, mae'r amrywiaeth o swyddogaethau dienw
gan y gofyniad hwn dogfennaeth guy wedi
i fod yn ddienw swyddogaeth sy'n cymryd
mewn un ddadl a elwir yn alwad yn ôl neu foo neu far, nid yw o bwys
ond mae wedi galw ei alwad yn ôl.
Ac mae hyn yn fath o eich swnyn bod Shake Shack dwylo chi.
Mae hyn yn y modd y gallwch ddychwelyd gwerth
i'r cwsmer oherwydd eich Gall nid yn unig yn llythrennol yn dychwelyd.
Rhaid i chi wneud iddo gan ffordd o alwad yn ôl hwn.
Oherwydd os tu mewn hon swyddogaeth rhywfaint rhedeg araf
cod fel cronfa ddata ymholiad, darllen y ffeil o'r system ffeiliau,
nad ydych am i aros yno a bloc pawb arall,
ydych am i ffonio'r alwad yn ôl.
Felly, mae hyn yn llythrennol enw'r ddadl.
Ond fel yn C, yr ydych yn cael awgrymiadau swyddogaeth.
Yn Java gennych dulliau system gyfeirio
a'r un yma yn JavaScript.
Mae hyn yn amrywio ond o'i fath yn swyddogaeth.
Felly, yn syml drwy ysgrifennu ei enw a yw alwad yn ôl neu foo
neu bar, yna parenthesis agor a parenthesis cau,
eich bod yn gweithredu y ar y swyddogaeth honno.
A phasio null sy'n golygu gwall ddi-un
sy'n golygu mai dyma'r data yr wyf am eu trosglwyddo i mewn
Ac yna y darn fod yn glir, mae hyn yn alwad yn ôl arall.
Ac nid yw'n cael ei alw alwad yn ôl,
'i jyst yn gysyniadol yn swyddogaeth dull alwad yn ôl
oherwydd ei fod yn cael ei alw'n trwy ddiffiniad
llyfrgell awdur hwn wrth y gyfres gyfan wedi cwblhau
neu is-set o hynny os yw gwall wedi digwydd yn gynt.
Felly, enw'r swyddogaeth alwad yn ôl, yn galw swyddogaeth alwad yn ôl,
enw'r swyddogaeth alwad yn ôl, yn galw swyddogaeth alwad yn ôl,
gwahanol alwad yn ôl swyddogaeth i gyd gyda'i gilydd.
>> Erbyn hyn mae gennym fel diffinio alwad yn ôl?
>> Na, gan fod hyn yn guy yn trosglwyddo i mewn i'ch amrywiaeth
swyddogaethau ddienw,
pwyntydd i'r cod mae eisiau i weithredu.
Yn union, yn iawn.
Felly, os gwelwch yn dda dweud bod y Cod yn cael ychydig yn symlach.
Felly, mae'n bosibl.
Ac os ydych chi fel fi, yn cymryd cysur mewn o leiaf wybod,
mae'n cymryd amser i ddod i arfer â hyn.
Ond gallwn lanhau hyn i fyny ychydig bach,
peidio â thaflu gormod ar i chi ond dyma amrywiad arall
ac mae ei ddefnyddio dull arall
yn yr un llyfrgell a elwir yn rhaeadr.
Mae'r upside un ohonynt yn yn wahanol cyfres lle mae pob
o'r rhai dienw swyddogaethau a gyflawnwyd yn y bôn
annibynnol ar pob un o'r lleill.
Rhaeadr fel mae'r enw'n awgrymu, yn caniatáu i'r swyddogaethau uchaf
i'r math o basio mewn gwerthoedd i'r swyddogaeth is,
fath o hoffi rhaeadr o ddŵr.
Felly, y peth gorau am hyn yw fy mod yn gallu fath
o defnyddio hyn i fy mantais.
Yn async.waterfall, sylwi ar y canlynol.
Gall Fi jyst alw fs.stat pasio yn y llwybr
yr wyf am ei gael ystadegau ar.
Ac yna cofio cyn i mi wedi cael swyddogaeth dienw
nad oedd dau dadleuon gyfeiliorni,
esults ac yna yr wyf yn galw y swyddogaeth alwad yn ôl â llaw?
Mewn gair arall yn unig i fod yn glir, dwyn i gof bod yn gynharach
yn async 2, yr wyf yn gwneud popeth o'r gwaith cas.
Yr wyf yn galw pasio fs.stat mewn P,
datgan fy ddienw hun swyddogaeth.
Yna yr wyf yn gwirio os yw camgymeriad Nid null yna Fe wnes i hyn,
arall y gallaf yn gwneud hynny, y cyfan harddwch o ddilyn confensiynau
fel yn node.js yw bod alwad yn ôl swyddogaethau yn gyffredinol i fod
i gymryd o leiaf un ddadl, gwrthrych Gwall ddilyn gan sero
neu werthoedd yn fwy defnyddiol.
Felly, yn sylwi ar y patrwm yma,
y swyddogaeth alwad yn ôl Rwy'n datgan yn dilyn yn union y
patrwm y dyn hwn llyfrgell async yn ei wneud.
Pa un yw dweud hyn, pam ydw Yr wyf yn gweithredu fy hun alwad yn ôl
dull pan mae'r awdur y llyfrgell yn llythrennol dosbarthu i mi
ar blât fel petai, a swyddogaeth galw'n ôl Gallaf ddefnyddio?
Felly, a gaf fi basio yn y cyfeirio ei fod yn rhoi i mi
fel bod ar unwaith, fy nifer o linellau
o god yn dod yn un llinell o god.
Nawr, ble rydym yn mynd â hyn?
Mae'r swyddogaeth nesaf y bydd Rwyf am i weithredu,
y dienw nesaf swyddogaeth yn y arae hon
swyddogaethau y mae'r canlynol.
Hysbysiad stat cyntaf yw y ddadl gyntaf.
Felly, rhywbeth newid yn barod.
Yn awr, y boi sy'n ysgrifennodd y llyfrgell -
ac i ddim yn dweud guy oherwydd ei fod yn ddyn.
Mae hyn yn guy a ysgrifennodd y llyfrgell hon yw gwarantau dogfennau
os swyddogaeth hon yma mynd yn ôl i mi gwrthrych Gwall
neu ddilyn null gan goma rhestr wedi ei wahanu o werthoedd eraill,
bydd yn gwneud yn siŵr bod y rhai gwerthoedd eraill yn ei ben ei hun
at y swyddogaeth dienw mewn trefn o'r chwith i'r dde.
A hyn a arferai fod yn ddim ond swyddogaeth alwad yn ôl ei ben ei hun yn unig
yn dod yn y ddadl olaf o'r fath.
Nawr, nid wyf yn gwybod pwy ydw i'n canolbwyntio ar ddim ond eich bod yn gwybod.
Ond yn awr, beth yw'r cymryd i ffwrdd yma?
Felly, rydym yn gwybod o y dogfennau
neu ychydig o enghreifftiau blaenorol
bod fs.stat yn y pen draw yn disgwyl am alwad yn ôl gyda dau dadleuon,
y gwrthrych Gwall sy'n Gwall gwrthrych neu null dilyn
gan gyfeirio at ystadegau gwrthwynebu.
Felly os wyf yn meddwl am hynny, Stats coma Gwall gwrthrych yn gwrthwynebu,
sy'n cyd-fynd yn y patrwm llyfrgell yr unigolyn hwn.
Felly, gallaf ddweud yn syml oherwydd Gen i ddim yr ail ddadl
ei fod yn - sy'n mynd i gael ei basio gan fs.stat
i'r alwad yn ôl yn cyfeiliorni, stats trwy ddiffiniad y llyfrgell hon,
Gallaf roi'r ail enw dadl yma
neu beth bynnag y gallaf ailenwi ei
os ydw i eisiau dilyn gan y alwad yn ôl yma.
Felly, gallaf basio un gwerthfawrogi oddi yma i yma.
Yn awr, yr holl cod hwn er rhaid cyfaddef braidd yn cryptig yn
o leiaf copïo past ar gyfer y rhan fwyaf o o'r blaen.
Yr unig wahaniaeth yw rhybudd yma rwyf i'n datgan Gwall
yn gwrthwynebu ac yn awr yr wyf am i gael ychydig yn ffansi.
Fi 'n weithredol yn awyddus i wybod beth y camgymeriad, felly dwi'n mynd
i fwyta tu mewn gwrthrych hwn eiddo a elwir yn fympwyol cod
fel y gwn fod nid yw hyn yn ffeil
Dylai fod yn anawdurdodedig, ei fod yn HTTP 403.
Gadewch i mi gofio bod cyn Yr wyf yn pasio'r gwrthrych Gwall
i'r alwad yn ôl.
Ac yna yn olaf ceisio darllen y ffeil, felly yn yr achos hwn,
y rhaeadr, dwi wedi torri y cod o ddau gam mawr
yn dri camau llai.
Sylwi ar y harddwch yma,
Gallaf alw fs.readFile pasio yn y llwybr.
Ac yna y rhan caled yn feddyliol, yn cael ei Fi jyst pasio
yn alwad yn ôl y dyn yn.
Y peth ei fod wedi fy trosglwyddo, rwy'n mynd i basio i fs.readFile.
Oherwydd ein bod ni i gyd yn glynu at yr un confensiynau,
ddadl gyntaf am alwad yn ôl yn gwrthrych Gwall neu null dilyn
gan goma neu wedi gwahanu rhestr o bethau defnyddiol.
Felly, beth mae hynny'n ei olygu yn awr ac os byddaf yn darllen y dogfennau byddaf yn gwybod
hyn, mae'r galw'n ôl olaf un, y boi yma y tu allan i
y cromfachau sgwâr yn mynd i gael ei basio yn Gwall gwrthrych
neu null y dylwn edrych am fel bob amser â'r cod hwn yma.
Ac yna trwy ddiffiniad y dull hwn
yn nogfennaeth yr guy, gwerth diwethaf a ddychwelwyd
oddi wrth y dull olaf yn fy amrywiaeth dienw -
fy amrywiaeth o swyddogaethau dienw.
Felly, beth yn darllen dychwelyd ffeil
a dwi'n defnyddio ffurflen llac nawr.
Yr wyf yn golygu yr hyn yn darllen pasio ffeil fel dadleuon
i'r dull galw'n ôl ei ben ei hun?
Mae dau dadleuon, yn gyntaf yn gwrthrych Gwall neu null,
dyna bron bob amser mynd i fod yr ateb.
A'r ail beth yn mynd i fod yn beth i ffeil darllen?
Mae cynnwys y ffeil, data fel y byddem ni'n ei alw yn gynharach.
Felly, dim ond drwy ddatgan cyfeiliorni, yn arwain at,
a gwirio am y gwall hwn yn fath o ddiflas nawr.
Arall, yr wyf yn gwneud res.end pasio yn y canlyniad.
Bydd hyn yn sicr Nid cydamseru yn berffaith
hyd nes y byddwch mewn gwirionedd yn ysgrifennu eich hun.
Ond am y tro, yn cymryd i ffwrdd o leiaf y ffaith
bod pob golwg hwn patrwm cyffredin, lle os ydym
ac awduron llyfrgelloedd pob math o ffon
â chonfensiwn hwn o ddulliau alwad yn ôl.
Ac mae'r ddadl cyntaf yw gwrthrych Gwall neu null.
A'r ail a thrydydd
a gwrthrychau pedwerydd yn bethau yr ydym yn gofalu am ac rydym yn didoli
o yn dilyn rheolau a ddogfennaeth.
Rydym yn dechrau gyda cod sy'n yn onest yn eithaf hyll.
A hyd yn oed bod y mwyaf diweddar enghraifft yw dweud y gwir fath o galed
i lapio eich meddwl o amgylch, mae'n o leiaf yn eu golwg,
edrych fel ei fod yn llawer tynnach.
Ac ar ôl i chi fod yn gyfforddus ag ef, mae'n llawer haws
ac mae mor llawer llai tueddol o bugs na hynny enghraifft flaenorol.
Felly, gadewch i mi yn dangos un peth olaf yma.
Mae hyn yn fersiwn tri.
Ac - Na, gadewch i ni adael yr un yma yn unig.
Gadewch i mi fynd i mewn i un neu ddau o pethau olaf eraill fel blasau.
Mae pob hawl, felly yn gweinydd 2.
OK. Yn gyntaf, unrhyw gwestiynau, Rwy'n gwybod hyn yn llawer
ond eich bod eisiau mwy o cyfarwyddiadau, felly?
Doeddech chi ddim yn dweud da cyfarwyddyd o reidrwydd.
Yeah?
[Anghlywadwy Sylw]
Cywir, rydych yn y bôn drugarog i system weithredu
at chyfrif i maes sut i jyglo pob un o'r peli hyn ar yr un pryd,
darllen o ffeil, darllen o gronfa ddata.
Ac mae'n y gweinydd JavaScript ei hun bod yn threaded sengl.
Ac yn ei hanfod ac mewn gwirionedd,
mae un llun Doeddwn i ddim yn taflu i fyny,
ac nid yw'n reidrwydd holl oleuedig sydd
ond efallai y byddwn yn rhoi chi model meddwl.
JavaScript ei hun a nod
yn arbennig wedi hyn a elwir yn ddolen digwyddiad.
Lle, gallwch feddwl o node.js, y rhaglen,
yn llythrennol fel dolen ddiddiwedd.
Dim ond dolen gwyllt, yn aros ac yn aros ac yn aros,
chwilio am dasgau i'w cwblhau.
Ac efallai y bydd y dasg yn cael ei, ewch nôl rhywbeth o gronfa ddata
neu dyma gwerth o'r cronfa ddata neu mynd yn cael y ffeil
o ddisg neu dyma ofyn defnyddiwr.
Mae unrhyw fath o ddigwyddiad, yn union fel gyrru y digwyddiad porwyr,
fel y gweinydd a yrrir gan ddigwyddiad ochr.
Ac unrhyw un o'r pethau hynny gyfystyr â digwyddiadau.
Felly rhywun yn node.js, dim ond Ysgrifennodd dolen ddiddiwedd,
dolen gwyllt mawr, yn aros am bethau ddigwydd.
Ac fel pethau yn digwydd, mae'n yn dod i ben i fyny mewn ciw, dde?
Yn sicr, cronfa ddata Gallai dychwelyd gwerth.
A system ffeil, gall y gweithredu Gallai system yn dychwelyd gwerth
tua'r un pryd ond mae'n debyg yn mynd
bod rhywfaint o archebu iddynt.
Ac node.js yn mynd i bôn ciw
fel amrywiaeth mawr neu fector, rhywfaint o strwythur data
sy'n byfferau pob o'r pethau hynny.
Oherwydd ei fod yn gall yn llythrennol yn unig trin un ohonynt ar y tro.
Felly, pan fyddwch, y datblygwr,
ysgrifennu JavaScript asynchronous Cod ddefnyddio asynchronous
swyddogaeth, rydych yn caniatáu hyn hyn a elwir yn ddolen digwyddiad i fynd
at y tic nesaf, dde?
Felly, ar yr amod eich unwaith dychwelyd gan fod yr holl
o ddulliau asynchronous hyn ddim yn hoffi ffeil darllen a stat,
maent yn dychwelyd ar unwaith oherwydd bod y galw'n ôl yn y pen draw
mynd yn ôl.
Cyn gynted ag y byddwch yn dychwelyd,
mae hynny'n golygu rhywun arall yn gallu cael popped i ffwrdd y stoc yma
neu ei fod yn gallu cael popped i ffwrdd o flaen y ciw yma.
Ac felly, mae yn ffaith y cyfresoli
o bopeth sy'n digwydd,
er bod yr holl bethau hyn Gall fod yn digwydd ochr yn ochr
ar system multithreaded.
Ond node.js ei hun ac y gweinydd yn rhedeg
fel un edau.
A'r ochr i lawr o hynny yw t nad ydych o reidrwydd yn max
allan eich cyfrifiadur gallu mor arbennig
os oes gennych craidd 16 neu hyd yn oed cyfrifiadur 2 craidd
a ydych ond yn rhedeg un enghraifft o nod.
Ond os ydych wedi eto cymryd rhywbeth fel 161,
eich bod yn osgoi hunllef enfawr o cur pen pan ddaw
i amodau a hil cloeon a semaffor
ac ysgrifennu wirioneddol y cod multithreaded,
felly upsides a anfanteision.
OK. Felly, yn ôl at y cod yma, gadewch i mi yn cynnig ein bod yn dechrau
i symleiddio pethau ychydig.
Gwelsom un gweinydd ychydig yn ôl a oedd yn edrych fel hyn.
Felly, dyna gellid dadlau eithaf syml.
Ond yn union fel yn y byd o PHP, mae fframweithiau
fel Laravel ac mae pethau fel Rheiliau a Django,
un peth yn y byd node.js.
A byddwn yn gwario mwy amser ar hyn ar ddydd Mercher
ac yn y prosiect nesaf.
Ond os byddaf yn mynd i mewn i gweinydd 2 cyfeiriadur,
sylwi ar gwpl patrymau yma.
Felly, mae hyn yw - mae mynd i fod yn enghraifft cyfatebol
ond mae'n defnyddio fframwaith o'r enw express.js,
sydd yn ffynhonnell agored am ddim meddalwedd fel Rheiliau a Django,
fel Laravel, dyna dim ond yn y pen draw yn mynd
i fod yn unappreciated heddiw 'Achos rydym wedi bod yn ysgrifennu
enghreifftiau o'r fath syml.
Ond yn ymddiried ynom ni.
Bydd hyn yn gyflym iawn dod yn eich ffrind
oherwydd y bydd yn arbed chi lawer o god TDS.
Ac patrwm cyffredin ar gyfer cais express.js yn
i gael app.js neu server.js ffeil sy'n cynnwys y rhesymeg
eich rhaglen neu yn o leiaf y pwynt mynediad.
Gallwch gael ffeiliau lluosog.
Mae subdirectory modiwl nod sydd â'r llyfrgelloedd
eich bod wedi llwytho i lawr fel async
a mynegi ei hun mewn eraill.
Ac yna package.json, package.json edrych fel hyn,
a gallwch ei greu â llaw neu offer creu hynny ar eich rhan
ac mae'n llythrennol ffeil JSON
a'r rhan diddorol yw'r dibyniaethau yma.
Yn union fel yn Laravel, rydych yn Roedd gan y cyfeiriadur gwerthwr
ac roedd yn rhaid i chi boeni am becynnau a gwneud -
mewn gwirionedd yn diweddaru gyda Artisan neu gorchmynion tebyg,
llyfrgelloedd chi wedi gosod,
yn yr un modd â package.json yma a byddwch yn rheoli llyfrgelloedd
ac mae'r fersiynau eich bod yn gofalu amdanynt.
Felly, os oes gen i package.json, Gallaf yn syml ei wneud NPM,
Pecyn Node Rheolwr osod, mae'n mynd i edrych yn awtomatig
ar y ffeil package.json.
Edrychwch i weld, ydw i'n yn cael y fersiwn diweddaraf
o'r holl fodiwlau gwerthwyr
mewn nod tanlinellu fodiwlau cyfeiriadur yma neu efallai
mewn rhai rhiant neu cyfeiriadur hynafiad.
Ac os nad yw, mae'n mynd i'w llwytho i lawr
a byddwch yn gweld criw cyfan
o bethau HTTP yn mynd ar draws y wifren.
Felly, er enghraifft, gadewch i mi dangos y cynnwys
o fodiwlau nod unig i fynegi.
Gadewch i mi fynd yn ei flaen a boldly dileu modiwlau nod
fel bod yr holl gen i yn awr yw hwn.
Ac os NPM wyf yn gosod, byddwch yn gweld ei fod yn mynd i ddarllen
y ffeil package.json a rydym wedi gweld allbwn tebyg
at hyn yn y byd Laravel.
Mae'n lawrlwytho cyfan criw o bethau a dyna
oherwydd mynegi yn ei dro yn dibynnu ar criw cyfan
o lyfrgelloedd pobl eraill.
Felly, pawb yn fath o yn cael eu llwytho i lawr recursively.
Hyd yn hyn, os wyf yn gwneud yn LS eto,
mae fy modiwlau nod cyfeiriadur yn ôl
a mynegi wrth gefn.
Felly, 'i' jyst yn ffordd o symleiddio'r broses o reoli pecyn.
Nawr, os edrychwn ar y ffeil app.js, mae hyn yn mynd
i fod yn dychwelyd i ein gweinydd gwe cynharaf
lle rydym yn unig poeri allan "helo, byd".
Ond sylwi ar y patrymau yma,
gyntaf rydym yn gofyn i'r mynegi modiwl, yna mae gennym y llinell hon
o god y gwyddoch o'r ddogfennaeth.
Rydych yn llythrennol trin y amrywiol modwl fel swyddogaeth,
mor agored parenthesis cau cromfachau yn golygu chyflawni.
Sy'n mynd i bob golwg dychwelyd rhywbeth yr ydym yn mynd
Yn gyffredinol, galwch am app.
Sut mae'n gweithio?
Dwi ddim yn gwybod.
'N annhymerus' yn gadael i rywun arall, eich bod yn gwybod, yn y byd yn mynegi ysgrifennu hynny.
Rydw i'n mynd i sefyll ymlaen yn awr ei ysgwyddau er
i wneud fy nghais rhedeg ychydig yn symlach.
Yma, dw i'n mynd i wrando ar y porthladd penodol
a allai fod yn y rhan fwyaf o unrhyw beth.
A dyma yw cod sy'n efallai yn fwy atgoffa rhywun nawr
o Laravel a routes.php.
Felly, mae hyn yn swper syml, rwy'n jyst yn mynd i bennu llwybr
ar gyfer seren slaes, felly mae popeth yn mynd i gael ei amsugno
gan y cais hwn triniwr.
Mae'r patrwm am y cais trafodwr yw ei swyddogaeth ddienw
gyda dadl chais
a gwrthrych ymateb yn union fel o'r blaen.
Ac res.send mewn modd penodol eich bod yn anfon y cod dilyn
gan beth bynnag yr ydych yn dymuno anfon.
Ac wrth gwrs, gallwch wneud rhywbeth ffansi
drwy anfon mewn gwirionedd ffeiliau neu HTML
neu a gynhyrchir yn ddeinamig cynnwys.
Ond am y tro, i gyd fe wnaethom ei boeri allan helo, byd.
Os ydym yn mynd i mewn i gweinydd tri, mae hyn yn hyd yn oed yn fwy ffansi yn unig
i ddangos i chi rai functionality.
A byddwn yn dangos i chi yn fersiwn hyd yn oed yn sexier
o hyn ar ddydd Mercher.
Ond os ydych chi wedi clywed erioed o Socket IO efallai,
felly fel y credaf Jonathan neu rywun dywedais yn gynharach,
un o'r pethau nod yn wirioneddol hysbys
amdano yn ei amser real ymddygiad, dde?
Meddyliwch am PHP yn MySQL, os ydych yn yn gweithredu gweinydd sgwrs
yn PHP lle gallai dau berson yn agor ffenestr porwr i foo.com
ac yna cychwyn IMing pob eraill, Alice mewn un ffenestr,
Bob mewn un arall fel y pob un ohonynt yn gweld ei
neu ei negeseuon yn y ffenestr arall.
Sut y byddech yn gwneud hyn yn PHP a MySQL?
Defnyddio neu beidio â defnyddio Laravel fath o amherthnasol, gallwch gael
fel ffeil index.php.
A ydych yn mynd i gael - yn rhai achosion, mae'n rhaid iddo boeri
allan o ffurflen, felly does mynd i fod yn ffurflen HTML
nad yw yn ôl pob tebyg yn cyflwyno trwy gyflwyno ffurf normal
ond Ajax yn ôl pob tebyg, dde?
Felly, mae ar gyflwyno trafodwr, felly i chi deipio i mewn i gae destun,
byddwch yn taro mynd i mewn ac yna mae'n mynd anfon at y gweinydd drwy Ajax.
Beth ydych chi'n yna ei wneud ar y gweinydd?
Felly, mae gennych index.php
neu rywbeth dot PHP sy'n a dderbyniwyd yn paramedr HTTP
gan y defnyddiwr, Alice neu Bob neges chwim, beth ydych chi'n ei wneud
ag ef er mwyn i ledaenu ei i Bob neu Alice, yn y drefn honno?
Yr wyf yn golygu yn llythrennol cael yr offer â hwy
i wneud hyn yn eich min.
Felly, fel beth fyddech chi'n ei wneud?
Mae gennych un funud i weithredu'r rhaglen hon.
Yeah?
[Anghlywadwy Sylw]
Perffaith. Iawn, felly gennych cronfa ddata.
Rydym yn gwybod ychydig ychydig am MySQL.
Felly, mae gennych tabl dyna negeseuon,
efallai mae o weithiau stamp, ID defnyddiwr,
gorff y neges ei hun yn creu hynny,
diweddaru hynny a hynny i gyd.
Felly, rydych yn ei storio mewn cronfa ddata.
Ac yn debyg Alice yn anfon y neges gyntaf, sut y mae Bob yn cael
y neges bellach o'r gronfa ddata?
>> Gallai fod yn rhai Ajax ymateb sy'n mynd yn gyson
yn ôl at y gronfa ddata top yn cael y [anhyglyw].
>> Yn union.
Felly cod Bob pwy cod yn yr un fath ag Alice yn unig fath
perthynas cymesur,
Porwr Bob rhywfaint cod Ajax sy'n debyg efallai bob 30
eiliad tynnu'r gweinydd drwy Ajax cydamseru,
a oes negeseuon newydd?
A oes negeseuon newydd?
Bob 30 eiliad yn mynd i fod yn fath o suboptimal
oherwydd ei fod yn gorfod aros hyd yn oed
os Alice llythrennol dim ond anfon y neges.
Felly, gallai porwr Bob bob eiliad yn cyrraedd y gweinydd.
Ond mae hynny'n golygu Alice porwr yn taro y gweinydd
bob eiliad.
Beth am Charlie [Sillafu tybio]
a David [sillafu tybio] ac Edward [sillafu tybio]
a phob llythyr arall y wyddor?
Beth yw'r broblem y dull hwn?
Mae llawer o hits yn ormodol -
Yr wyf yn golygu eich bod yn unig yn effeithiol Ddosio eich golwg eich hun
neu DDOSing, Gwasgaredig Ymosodiad Gwrthod Gwasanaeth Of ymosodiad
ar eich safle eich hun, drwy gael yr holl
o ddefnyddwyr hyn yn rhedeg JavaScript cod sydd newydd pinging y
Heck allan o'ch gweinydd hyd yn oed os nifer mympwyol,
80 y cant o'r amser nad oes neb wedi dweud dim byd
yn yr ystafell sgwrsio.
Ond ydych ond yn gwirio i wneud yn siŵr o hyn.
Felly PHP mewn llawer o Nid yw iaith yn unig yn dda
ar gyfer cyfathrebu amser real.
Oherwydd yn PHP cofio mae dim cof canolog, dde?
Mae gennych gwrthrychau sesiwn sy'n creu y rhith
storio canolog ond hynny ar sail fesul defnyddiwr.
Nid oes rhaid i chi gof byd-eang fel chi ei wneud mewn Java Servlet
mewn cyfarwydd neu mewn eraill ffrâm yn gweithio fel 'na.
Node.js fodd bynnag, oes gennych gof byd-eang 'yn achosi i chi gael
un gweinydd a bod 'yn gallu cofio unrhyw beth y mae am
am yr holl ddefnyddwyr.
A ydych yn dal i fod yn efallai gronfa ddata.
Ond y peth braf am node.js hefyd yw ei fod yn llawer gwell
na rhywbeth fel PHP a chreu y rhith
o drin lluosog pethau ar unwaith.
Ac yn wir fel yn o'r neilltu, gallwch gweithredu sgwrs gweinyddion yn PHP,
ond byddech fel arfer yn ei wneud rhywbeth o'r enw pleidleisio hir
lle nad ydych yn ping y gweinydd bob eiliad.
Rydych yn ping y gweinydd, y Nid yw gweinydd yn ymateb i chi
i fyny o 30 eiliad, yn llythrennol yn eistedd
mewn dolen aros ac aros.
A'r gwiriadau gweinydd os mae data newydd yn y gronfa ddata
a dim ond unwaith y byddwch yn gweld, "O, dyma neges gan Bob, "
mae'n ymateb i'r gweinydd HTP?
Felly, yr effaith yn eich porwr yw bod yr eicon IE neu Mozilla
neu beth bynnag dim ond yn cadw nyddu am 30 eiliad ar y tro.
Ond mae'r upside yw, nid ydych yn ei wneud 30 o geisiadau cysylltiad
mewn 30 eiliad, mae gennych un.
Felly, fe'i gelwir yn pleidleisio hir.
Ond hyd yn oed yn well yn gwe modern porwyr yn rhywbeth a elwir yn
WebSocket, a oedd yn byddwch yn cymryd y CS143,
gallwch wneud yn effeithiol yn Cysylltiad TCP o gleientiaid
fel porwr i weinydd ac yna hongian ar iddo
heb ddefnyddio bron cymaint o adnoddau
fel HTTP gallai ei wneud yn draddodiadol.
Ac Socket IO yn llyfrgell node.js
sy'n ei gwneud yn llawer haws i gwneud y cysylltiadau soced
neu illusions yno ar gyfer hen borwyr
er mwyn i chi roi hyn ar waith ymarferoldeb go iawn amser cymwys.
Felly, dyma enghraifft.
Mae hyn yn stwff i fyny top yn cael ychydig yn fwy cymhleth
ond mae'n gopïo a gludo yn bennaf o ddogfennaeth socket.io 's.
Dyma bellach yn fwy cais triniwr union.
Os yw'r defnyddiwr gais slaes, pa ffeil ydw i'n mynd
i fod yn ôl pob golwg gweini iddynt?
Index.html.
Ac mae rhai newydd ffrwd stwff yma
y byddaf yn dangos i chi mewn dim ond hyn o bryd.
Ond mae hyn yn unig yw ffordd arall
o crafangio ffeil ychydig yn fwy effeithlon
na dim ond gwneud fs.readFile.
Mae'n ychydig callach yn enwedig ar gyfer ffeiliau mawr.
Stori hyd hir yn fyr, y llinellau hyn yn unig i wasanaethu
i fyny ffeil o'r enw index.html
sydd ar hyn o bryd yn cymryd yn ganiataol yn cynnwys y ffurflen HTML y mae Alice
ac efallai Bob ymgyfathrebu.
Yn olaf, io.sockets.on, felly mae hyn yn yn dod o'r llinell hon i fyny yma.
Felly, Im 'jyst yn darllen y io.socket ddogfennaeth rhoi i mi
mynediad i hyn a elwir yn WebSocket gyda porwr,
rhwng y porwr a 'r gweinyddwr.
Im 'yn gwrando am arbennig cysylltiad digwyddiad sy'n golygu
pan fydd y defnyddiwr yn gyntaf yn cyrraedd y gweinydd yn ceisio
i agor y cyswllt hwn, rwy'n mynd i alw alwad hon yn ôl.
Ac yn awr, yr wyf i'n mynd i wneud y canlynol.
Bob pum eiliad, yr hyn yr wyf i'n mynd i wneud?
Rydw i'n mynd i allyrru neu ddarlledu os ydych yn cofio dechrau,
yr iaith graffigol byddai bod blociau darlledu?
Felly, rydych yn mynd i allyrru
neu sbarduno digwyddiad o'r enw fympwyol o'r gweinydd.
Ac mae'n mynd i cynnwys Ping neges
a'r dyddiad cyfredol.
Felly, mae hwn yn wirioneddol sgwrs gweinydd sy'n Alice
a gall Bob defnyddio, ond mae'n fath o gweinydd sgwrs awtomataidd
lle mae'r negeseuon yn pings yn unig fath o sonar.
'I' jyst yn dyddio ar adegau sy'n cael eu hanfon bob pum eiliad.
Felly, os wyf mewn gwirionedd yn rhedeg y beth - a dyna ni.
I fod yn glir i lawr yma, rhybudd mae hyn yn unig yw logio i lawr yma.
Felly, gadewch i mi droi llygad dall i hynny.
Gadewch i mi wneud nod o app.js.
Gadewch i mi fynd i fy porwr.
Ail-lwytho y dudalen cartref yma.
[Saib]
A gadewch i mi gau'r arolygydd.
Bob pum eiliad, mae gennyf arddangos er nad
rhyngweithiol ar gyfer pobl
o rywbeth sy'n digwydd asynchronously.
Yn yr hysbysiad porwr, does dim eicon nyddu.
Mae'n defnyddio nodwedd ffansi o Chrome mewn porwyr modern
o gynnal soced cysylltiad o dan y cwfl
ac mae'n hyn a elwir Yn gyffredinol, tafarn / is model,
cyhoeddi / subscribe model, lle nad ydym wedi gwneud
sy'n eithaf clir yma.
Ond yr hyn sy'n braf am hyn tafarn cyffredinol / is patrwm yn
y gallwch gael un cyhoeddwr.
Yn yr achos hwn mae'r weinydd canolog a'r holl
yr unigolyn porwyr yn gleientiaid.
Alices a Bobs y Gall byd danysgrifio iddo,
fel y gallwch gyfleu negeseuon ymhlith unrhyw nifer o ddefnyddwyr.
A hyd yn oed er unwaith eto rydym yn Nid yw gweld rhyngweithgarwch,
oedd gennym efallai 12 llinellau o god yn unig i wneud hyn.
Ac mae'n debyg nad naid ddychmygu sut y gallech chwip
allan y ffeil index.html sydd â ffurflen HTML yn wir,
ychydig bach o god jQuery gyda Ajax nad yw'n anfon yn ystod y dydd
ond dim ond yn anfon beth bynnag Alice neu Bob fath i'r gweinydd
ac yna y gweinydd Bydd trosglwyddo allan.
Ac yr wyf yn addo i gael cipolwg ar ar un peth olaf yn unig
i chi pryfocio gyda hyn.
Os ydym yn mynd i mewn i nant sero ac un,
byddwch yn gweld cod bod yn unig ychydig yn wahanol yma.
Dim ond felly eich bod wedi ei weld, mae hyn yn ddewis arall
at yr hyn a elwir yn fs.readFile dull yn gynharach, lle,
gallwch ddweud node.js, "Ewch darllen y ffeil i mewn i gof.
Ond os yw'n fawr dim ond rhoi mi darn ar y tro. "
Ac efallai y byddwch yn gwybod o CS165
neu 161 y systemau ffeil gwahanol
eiddo perfformiad.
Efallai y byddwch am ddarllen mewn blociau o 512 bytes
neu 2 cilobeit neu beth bynnag.
Mae hyn yn ffordd optimize o mynd yn ôl o ffeil iteraidd
fel y gallwch boeri allan ychydig yn gyflymach
at y porwr neu i pwy bynnag y cleient diwedd yn.
Swm mor enfawr o gynnwys heddiw ac rydym yn mynd i ddeifio
i fwy o fanylder ar ddydd Mercher gyda Tim [sillafu tybiedig]
yn benodol yn edrych ar sut yr ydym yn gallu cyfieithu rhai o'r syniadau
o hanner cyntaf y cwrs Laravel a modelau
i mewn i lyfrgell fod ef ei hun Ysgrifennodd enw Bookshelf.js
sy'n cael ei dod yn fwyfwy poblogaidd yn y gymuned
oherwydd mae'n rhoi y rhan fwyaf ohono i chi,
os nad yn fwy na'r ymarferoldeb huawdl
sy'n dwyn i gof yw bod mewnwelediad llyfrgell Laravel,
felly mae mwy ar hynny a mwy o sut y
i ddatblygu fledged llawn apps ar ddydd Mercher.
Welwn ni chi bryd hynny.