>> Dobře, takže jsme zpátky, několik cílů pro dnešek,
budeme tam, kde jsme skončili minule,
Připomínám, že jsme byli aby byl tento sled
ze serverových aplikací souvisejících, velmi jednoduchý, ale pomocí uzlu JS
a také v poslední době pomocí expresní dotek AS
a to, co bylo vyjádřeno JS analog v PHP světě.
Takže express je více ... zavřít,
takže express je v podstatě MBC rámec, který je dost
populární v uzlu js světě,
Regál, který uvidíme dnes přes Tim je analogový
z výmluvný, který je ORM na objekt relační mapper
, že ve skutečnosti usnadňuje aby nedošlo k nízkoúrovňové kód SQL
a vlastně vyjádřit vztahy mezi různými objekty.
Takže jeden z nejlepší věci poctivě
o uzel js je to, jak Snadno tak to půjčuje sebe
dělat v reálném čase aplikace, věci, jako chatovací servery
nebo serverů pro zasílání zpráv, něco, co vy nyní používat
jako Google ... G-chatu nebo Google putyka
nebo aktualizace stavu Facebook nebo i Twitter, pokud jste
na své webové stránce vše je trochu v reálném čase
nebo vám Iluze reálném čase
a že to vlastně bolest krk co do činění s něčím
jako je PHP a MySQL pravé, co jsme navrhnout
v pondělí by být prostředkem
o které byste mohli realizovat iluze reálném čase chování
s serveru chatu v PHP, to, co budete muset dělat?
Alice odešle zprávu, hity zadejte, kde to jde?
Jo.
>> [Část neslyšitelný]
>> Do databáze a poté co prohlížeč Bob mají
k tomu, aby skutečně vidět co Alice řekl, jo?
>> [Část neslyšitelný]
Mějte >> dotazování databáze, Dobře, takže ajax požadavek má
střílet každou sekundu, každý pár sekund nebo jsme si povídali krátce
ale nepodíval se na příklad něco jako dlouhé dotazování,
někdo připomenout, jak
, že mechanismus ... na na vysoké úrovni funguje?
>> [Část neslyšitelný]
>> Přesně tak, jo, takže prohlížeč stále dělá ajax požadavek
na serveru, na foo dot php ale foo tečka php jen zdá,
pověsit, je to v podstatě sedí v cyklu while pro tolik
30 sekund a obvykle pouze jednou tečka php soubor foo
si uvědomuje, oh je tu nový řádek
v databázi dělá ve skutečnosti reagovat
s http reagovat.
Takže si myslíte, že by to mohlo jinak pověsit na server
a to dělá do jisté míry
ale to znamená, že je mnohem menší nároky
protože nepotřebujete novou tcp spojení, spojení nové htp
skutečně požadovat data ze serveru.
Ale uzlu js přichází s velmi populární knihovna s názvem zásuvka
dot io které by mohly nikdy použit, je postaven na vrcholu
o technologii s názvem webu zásuvka, která je přítomna
ve většině moderních prohlížečů a co se zásuvka io dělá, je, aby vám
vytvořit v podstatě trvalé připojení
mezi prohlížečem a serverem to je velmi nízká režie
takže to nemusí být nutně mají stejné problémy škálování
že byste mohli, pokud jste neustále bít na serveru
ve světě a PHP můj SQL a podobně.
Dokonce i pro starší prohlížeče
které nepodporují webové zásuvku tato knihovna zásuvka tečka io možné
klesnout zpět na blesky realizace zásuvek
a zásuvky se sítí věc z CS143 například.
Nebo to může dokonce klesnout zpět na dlouho dotazování samo o sobě tak realizovat
že stejný druh práce
asi ve skutečnosti zachování iluze této souvislosti.
Takže socket [neslyšitelný] io a to ve formě
z knihovny Java Script, v podstatě, pokud jej používáte
ve formě uzlu js aplikace nejen instalovat
to jako balíček pomocí něco jako NPM, které jsme použili v pondělí
a nebo také zahrnout strip značku ve v html souboru
která říká, že použití na straně klienta knihovny.
Takže tam jsou dvě poloviny do to a to, co jsme tady udělali
ve čtvrté iteraci sekvence pondělním
z příkladů je následující.
Takže tato struktura souboru je připomínající velmi společného souboru
pro vyjádřených js a naštěstí je to způsob jednodušší
než lervo [fonetické] bylo, vzpomínám-li si nastavit
up lervo máš obrovský ošklivý výpis z spoustu souborů,
prodejce adresáře, lib a velmi těžká váha v porovnání s to.
Nyní v spravedlnosti jsme svlékli pryč věci, které je do značné míry
rozptýlení, ale všechny šťavnaté věci je opravdu
v uzlu modulu.
Jen aby vám chuť Podíváme-li se
na uzlu modulu je tu dva moduly nebo knihovny
že Stáhnul jsem si tento by bylo ekvivalentní
adresáře dodavatele, jeden se nazývá Express, který je
jako larevel ale v uzlu
a zásuvka io jeden jen jsem se zmínil.
Takže ty existují, takže můžeme proveďte následující kroky, pokud otevřu
až řekněme index dot html, Pojďme se podívat na první html,
to se bude skládat tento orgán, má výborný,
Super jednoduchý chat serveru.
Takže tam to prý ul. s jedinečným nápadem zpráv
a to je místo, kde jeden li v době,
všechny rychlých zpráv jsou chystá se objeví mezi Alicí
a Bob a pak je tu jednoduchý formulář s textovým polem
a tlačítko pro odeslání kterou Alice
nebo Bob může skutečně Zpráva se navzájem.
Takže čistý dopad, pokud Já spuštění této aplikace
tím, že dělá uzel prostor app tečku js, když jsem vytáhnout pár
oken prohlížeče je, že Alice by mohla být na pravé straně,
Bob by mohl být na vlevo a jen
aby bylo jasné, že to žádná magie tu mám jedno okno
v anonymním takže není Sdílení souborů cookie nebo cokoli
jako je tento, se jedná o dva různé uživatele.
Měl bych být schopen mít Alice pozdravit Bob, klikněte na tlačítko Odeslat
a teď vidíte na levé straně že Alicin zpráva byla odeslána
a téměř okamžitě na pravé straně.
No dotazování zdánlivě zapojen, Bob obdržel stejnou zprávu.
Nyní Bob říká, že pozdravit Alici vidíte opačný účinek.
Takže to, co se opravdu děje, jak hodně kód potřebujeme napsat
k provedení tohoto serveru chatu
které si nyní můžete extrapolovat mentálně, že každý
V této místnosti, pokud to nebyly na mém [neslyšitelné]
ale na foo dot com jsme mohli všichni začít chatovat okamžitě
navzájem.
Takže to, co je zapojen, a než jsem se vymazat tuto obrazovku je to
právě socket io bytí trochu hlučný, je to jen tisk
z ladících informací na obrazovku,
je tu opravdu nic jinak tam děje.
Takže dovolte mi otevřít app dot js, tak jako dříve, že máme pár věcí
v horní části souboru.
Banda požadavků, tak to jsou jako knihovny
nebo zaostření stopy nebo vyžadují onces bez ohledu na mentální model, který
Chcete mít a jen shrnout FS se používá
Pro jaké funkce?
Takže systém souborů, takže čtení souborů potenciálně, a tak podobně
a já používám to v jednom umístit, jak uvidíte,
expresní samozřejmě je to rámec, který budeme používat,
je přísně není potřeby bychom mohli
stejně jako v pondělí zcela vytvořit naše vlastní http serveru od nuly
tím vytvořit server a všechny tohoto druhu kód z před
ale jak uvidíme to dělá věci trochu jednodušší
protože vše, co musíte udělat, je na lince 3 zde instanci
a vyjádřit objekt, zavolám je aplikace, poněkud svévolně,
Budu pak řekne aplikaci poslouchat na libovolně portu 1337,
které by mohly být 80 konvencí
a pak konečně mám nový vedení, které dnes říká
požadovat zásuvku IO knihovny a pak
tohoto řetězce přístupu by Tento operátor tečka Jsem jen
volání lekci poslouchat, že je v podstatě říká zásuvku
io knihovna také poslouchat stejném serveru
nebo webové socket spojení.
Takže co teď, takže to, co je to dělá, tyto čtyři řádky
kódu zde, která by měla podívejte se připomíná larevel,
co to představuje?
>> [Část neslyšitelný]
>> To je ... cesta, jen cesta tak v app dot JS,
aka serveru dot js závislosti na to, co lidé chtějí, aby ji volat
ve svých aplikacích Máte konvence
dělat definování tras,
app tečka get znamená, když máte požadavek GET jít
se na doslova lomítko pokračovat a volat tuto anonymní funkce
a anonymní funkce v V tomto případě se podle požadavku
nebo požadavek a odpověď, potenciálně některé další věci
ale minimálně ty dva.
Žádost poskytuje přístup k věcem, jako jsou parametry http
a záhlaví a další šťavnaté věci
a pak se reakce je mechanismus
kterou můžete reagovat na uživateli.
Tak to je super jednoduché i i když jsme neviděli dost
Stejný kód minule, jsem pomocí souborového systému modulů,
vytvořit čtení metodu proudu který v podstatě dělá,
vytvořit čtení proud, který znamená, že v podstatě začít slurping
up bajtů z indexu tečkou html tak efektivně, jak je to možné
aniž by nutně čekání do svého přečíst celý soubor
a jak děláte, že potrubí je doslova
v tom smyslu, svislou čarou pokud jste pohodlně
s linuxovou příkazovou řádku,
potrubí do reakce objektu.
Tak byly tam dva příklady týkající se toků v pondělí,
jsme se jen podíval na jednoho, ale jste vítáni podívat se zpět
u potoka o a proudu 1.
Stream 1 ... 0 ano něco podobného k tomu,
proud 1 udělal něco téměř přesně jako to,
je to jen úhledný jedna vložka říkat nějak
z usrkávat něco sem a pak začít posílat ho zde
ve stejnou dobu, aniž dělá hmotu souhlasit
a pak masivní právo,
Tento přístup je obecně účinnější.
Tak to je docela staré věci i když to bylo nové v pondělí,
To je vše, co má realizovat chatu serveru
s uzlem js a více konkrétně socket dot io.
Tak, jak to funguje, dovolte mi, abych jej přesunout se trochu,
tak io je jen variabilní , který se týká
k modulu se požadované výše,
dot zásuvka je jen vlastnost uvnitř ní
že mi dává zásuvka související funkce
na je běžná metoda, která souvisí s tím, co obecný pojem?
Událost tak na aka poslouchat některé knihovny to prostě znamená,
na slyšení tuto událost který se nazývá spojení
a teď to víte jen z při pohledu na dokumentaci,
kdo napsal knihovnu definované akci s názvem
spojení, které nemá to, co si bude myslet,
když Alice a Bob se připojí.
Nestyď se a zavolej to anonymní funkce take absolvování
v jednom argumentu klient což je zřejmě nějaká
objektu, který reprezentuje Alicin připojení
nebo Bobův připojení nebo Charlie, nebo někdo jiný
a teď děláme následující.
Poté, co jsme říct klientovi on nebo ona je připojen
naslouchat konkrétně
pro zprávu, která je zcela libovolně nazvaný zprávu
tlustého klienta.
To je něco, co Tim a Přišel jsem se, mohlo by to být foo
nebo baru, je to jen některé Jedinečný řetězec, který jsme potřebovali
rozhodnout, jak vývojáři.
Kdykoliv Alice nebo Bob slyší
že událost je tento anonymní funkce by měla být volána
a data, Obsah Alice
nebo Bobův zpráva by měla být předán do této rutiny události
a teď, co by Klient si dobře můžete druh
ze si to docela intuitivně Klient by měl vysílat,
jinak známý jako vydávat Zpráva s názvem metoda serveru
čímž znamenat tuto zprávu přichází ze serveru není
z prohlížeče, a co by tato zpráva být
to je zřejmě užitečné zatížení od co přišlo od klientů
a my jsme jen tak libovolně říkají zpráva.
Takže hodně z toho je libovolná
prostřednictvím přiměřené pojmenování úmluv, Tim a já jsem přišel
s, většinou Tim a pak jsme jednoduše se vytváří v konečném důsledku
chatu serveru, který dělá to, co, Při Alice odešle zprávu
a hity zadejte Jaká událost zřejmě dostane padáka,
jen rekapitulovat.
Alice typy zpráv, hity zadání, klient zpráva vystřelil,
Tento kód slyší, že i nyní Server vysílá co,
co je konečný výsledek to opravdu?
Alice odešle zprávu nyní Server je rebroadcasts
účinně všem kromě pro Alici, proč všichni kromě
pro Alici, když se jen dívat
na straně klienta dokumentace dot dot vysílání přiznat,
doslova dělá, vysílá zprávu
všem kromě Klient, který vám poslal
že nejnovější zpráva.
Takže to je důvod, proč si jen vidět to jednou na každé straně,
Nevidíte jak Alice a Bob dostat Alicin zprávu.
Tak to je ono, to je předávání prostředek
pokud se to jen s ve zprávách
a bezdrátově je ven
a to je pozoruhodně škálovatelné Myslím dokonce
s velmi jednoduchou serveru a pár řádků
kódu byste mohli jistě zvládnout stovky ne-li tisíce
souběžných jednoduchých zpráv tam a zpět, jako to
a jen si představte, složitost Nyní, jak to udělat v PHD
nebo Larevel nebo můj SQL a kolik kód, který by měl
psát, aby se skutečně dosáhnout.
Nyní ve spravedlnost v tomto není perzistentní pravý
pokud server spadne ztrácíme celou historii
takže to není úplně dokonalý překlad, ale je to
že přímo vpřed.
Pojďme se podívat na skriptu Java Kód my přeskočil dříve,
to je Alice a Bobův klienta,
webové stránky, které používáte nyní pojďme se podívat sem na chvíli.
Je tu trochu víc kódu
ale je to do značné míry právě jQuery zde tak Oznámení
že na webové stránce že jsem vytáhl
se před chvílí jsme jQuery knihovnu,
zásuvka io knihovny a jako stranou všimnete rozdílu
zde, lomítko lomítko na Začátek cesty
jako to znamená, že to, co přesně,
kde je jQuery tečka js na kterém serveru?
Jo.
>> [Část neslyšitelný]
>> Je to na internetu jo doslova volal kód tečka jQuery
dot com tak proč lomítko, lomítko, proč ne jen jeden lomítko,
kde je http nebo tlustého střeva, Co to znamená obecně
pokud lomítko lomítko na začátek url?
Je to vlastně užitečné.
Dobře, takže to, co je zřejmě Chybí http teď, pokud jsme důvod
přes to logicky, obvykle nepotřebujete
zmínit servery jmen právo
jako když stačí použít lomítko jQuery tečka js, co se předpokládá,
prohlížečem?
Že soubor je na stejné server, takže i nadále tohoto druhu
logiky, pokud nechcete říct, to, co protokol, co je
prohlížeč předpokládat, stejný protokol tak Pokud jste někdy navštívili webové stránky
že vám chybu spolu linie nezabezpečený obsah
Na této stránce je to proto, někdo má pevný kódované HTTP
dvojtečka lomítko lomítko URL pro obrázek nebo skript Java
nebo soubor CSS, něco jako, že ve zdrojovém kódu stránky
ale samotná stránka v prohlížeče URL http s..
Takže je to jen ozdobný malý způsob,
říct, nevím Co je protokol
, že tyto koncové uživatele bude používat
ale jen se ujistěte, že zápasy, takže chrom
a další prohlížeče nemusíte křičet na uživatele.
Jediný úlovek je jQuery lidé lépe nastavit
až https na svém serveru.
Takže oni jsou vlastně výpis z 443..
Dobře zatím to jeden tady je to druh
zavádějící lomítkem zásuvka io navrhuje
že je adresář s názvem zásuvka dot io na mém serveru
ale tam to není, pokud se hrabat
kolem je tu adresáři uzlů modulu
ale tam je nic veřejnost o tom,
když jsme nakonfigurován zásuvky io poslouchat na stejných portech,
1337 v podstatě, že knihovna že někdo jiný napsal, je jít
na druh vložit nějaký kód do životního prostředí uzel JS
a jen poslouchat pro tuto cestu.
Že knihovna má jen nakonfigurován cestu pro to,
že to není skutečný adresář.
To by bylo v standardní umístění.
Dobře, takže teď zajímavé část,
takže když dokument je připraven, jak je uvedeno
tímto jQuery konstrukci, První Chystám se jít dopředu
a připojit do zásuvky,
co socket jen tím, že ... aby to jednoduché Jdu se připojit
lomítko, to je kde je uživatel,
Já jsem držel příklad jednoduché jsme jen tak připojit
na přesně stejnou adresu URL, která uživatel navštívil a pak jdu
provést následující kroky, jdu řekněte prohlížeč Alice nebo Bob
poslouchat zprávy ze serveru.
Opět to může být foo
nebo bar kdykoliv budete slyšet zprávu
z ní dat na serveru volání a pak proveďte tento kód jQuery
které Hádám, že většina, pokud ne každý je obeznámen
se v těchto dnech, ale v podstatě pin na seznam zboží
na stávající UL, které byl nazýván zprávy
který doslova říká, bez ohledu na náklad je
na chatu zprávy následuje spojovník, následuje příjem,
následovaný mezerou a poté je čas aktualizace a to je důvod, proč
aby bylo jasné, jestli se vrátíme
k tomu dostanete ty další kulky znovu a znovu
a opět s datem časy.
Zatím Podíváme-li se Zde se budeme muset
zvládnout odeslání formuláře tak, aby byl přijímající
z rychlé zprávy, tady je odeslání a to je něco
z nesouvisí s uzlu js, poslouchat na formulářích předložit událost.
Když se to stane se zabránilo selhání, to prostě znamená, že nemusíte předkládat ji
na serveru v obvyklé Tak znovu načíst celou stránku,
Chceme, aby to všechno přes ajax.
Zde je jen několik kódy jQuery
skutečně získat vstup jejichž typ je zpráva,
jehož jméno je zpráva pokračovat
a dostat je hodnota pak budete pokračovat
a pokud jste skutečně zprávy, je-li Alice a Bob
nebo Bob ve skutečnosti typy některé žádná 0 počet úhozů vydávat
na zásuvce zpráva s názvem Klient zpráva s tímto užitečným zatížením
a pak tady je to , co je to na rozdíl od zelené
na červenou, jednoduše výstup zařízení na straně [neslyšitelný].
Tak to je ono, ale všechny to je právě nastaven,
skutečné nové věci bych argumentovat jen tyto tři
nebo pět řádků kódu zde a že trochu rad na napájení
uzlových JS a s ním tento konkrétní knihovny.
Takže pojďme rychle podívejte se na expresní dot js,
tak co budu snažit dělat ve zbývajícím pár
minut, je zde zřízen Několik nápad, několik technik
že pak bude trvat několik minutová přestávka, bude Tim nastavit
a pak se budeme potápět hlouběji
na zajímavější expresní aplikace a také
na regál, knihovna Tim vlastně napsal
k open source komunitě
že nám dává výmluvná světlo funkčnost s mým SQL
a transakce a jiné, jako funkce a že bude také potápět
v trochu hlouběji do jazyk Java skript sám,
jak její předmět nebo non-class model funguje jinak vědět
jako prototyp modelu, víc na to přijít.
Takže pojďme se podívat na poslední dvě Žádosti zde, server, pět
a server 6, které jsou všechny trochu podobné duchu,
tyto nejsou chatu servery ale oni používají express.
Takže pojďme se podívat na co to vlastně dělá,
Chystám se jít dopředu a otevřené ... Chystám se spustit tuto aplikaci
se uzel app JS, budu vrátit do svého prohlížeče a znovu
a to je zřejmě vše tento server dělá,
je to super jednoduché serveru to je zřejmě hledání
motoru, takže když jsem zadat foo a předložit žádné výsledky vyhledávání
pro foo, jsem nedostal kolem , kterým se provádí sofistikované
back-end, vše, co se děje
udělat, je echo bez ohledu na to, co zadáte žádné výsledky pro foo,
na baru žádné výsledky tak, jak to děláme
protože tam je pár kusů, jeden,
tam je jasně nějaký Vstupy jsou poskytované
k serveru ne Larevel Samozřejmě ale uzel js teď
takže musíme nějak se v tomto parametru Q,
jsme jasně dělají nějaký druh pohledu zde,
jsme vykreslení zobrazení tak, Možná, že je to příležitost
šablony nebo proměnné interprelation [fonetický]
takže se pojďme podívat na následující.
V app js pro tento konkrétní Server je všechno, co máme.
Jednou budeme požadovat vyjádření sama o sobě, dvě modul cesta
který jen dělá některé užitečné věci
jako je spojování řetězců dohromady a tak dále pro mě,
I naslouchání na portu 1337 a Nyní je to nový, takže se ukáže,
z tohoto výslovného jako Larevel podporuje různé zásuvné moduly
a technologií a jiné věci, a jeden
z technologií, které Můžete připojit je pohled motoru
což znamená jen to, co šablon Motor chcete použít,
Larevel měl to vlastní věc, ale můžete připojit
v různých věcech, různé broskev P rámce mají
různé způsoby šablon, EJS je jen obyčejný
a docela jednoduchý motor že právě pojďme si dělat věci
jako složených závorek, které jste měli v syntaxi Larevels
pro střídání proměnných,
je to trochu jinak syntakticky je vše.
Takže teď je tu ta věc s názvem střední ware tak uvidíte
ve svém vlastním týmu uzlu projektu byla middle ware je jen druh kódu
nebo knihovny, které podáváte
do [neslyšitelný] odpověď životní cyklus aplikace,
jinými slovy, tyto dva řádky říkají express
udělat nějakou práci navíc mezi Tentokrát to dostane žádost
a mezi časem se posílá že požadavek na vlastní trase,
váš kód, který jste napsali.
Tak především tato linka zde použít expresní tečku statické a všechny
této složitosti to jen znamená, že pokud vidíte žádost
že přijde na statické souboru jako foo dot JIF nebo foo dot css
nebo foo tečka js, takže není dynamicky generované trasy,
jděte do toho a předpokládám, že žije ve veřejném podadresáře,
to je vše, co dělá.
Je to něco jako mapování v Larevel, vše na Váš web
nebo váš adresář spíše Larevel.
Tento další řádek je jen říká chci použít trasy,
Chci používat věci jako aplikace dot se
který jsme viděli před chvílí a uvidíme pár sekund nyní.
Takže app tečka získat prostředky naslouchat této trase,
lomítko, když vám to říkat to anonymní funkce, která vezme
v žádosti a A reakce a nyní jen
jako Larevel máte cestu založit šablony,
odpověď dot činí, citovat konec citátu index,
činí je šablona tzv. index,
že je to tak pojďme pozastavit, které závit jen na chvíli pohled
na obsah adresář zobrazení
a všimněte si, to taky je super jednoduché pro teď,
tam je index dot EJS a vyhledávání bodových Ejs,
Samozřejmě chci první
, protože to, co jsem právě unavený k tomu a uvidíme
do indexových zobrazení dot EJS většina vlastně úplně html
v současné době, je tu vlastně ne šablon děje.
Tak jsem technicky ne ani potřeba říkat EJS,
Nepotřebuji, aby funkčnost ale jsem si to uniforma,
tak to je ono, to je to, co dává mi to velmi jednoduchý formulář.
Takže je tu jen jedna další cesta, Podíváme-li se tady dole jsem řekl,
že toto je to, co se zpracovává lomítko vyhledávání skutečného nastavíte řazení
společnosti Google, jako handler pro odeslání formuláře, když se dostanete
že cesta volat toto anonymní funkce
a vykreslení šablony volal hledání
a co je druhý argument, pravděpodobně na mysli.
Vypadá to, že JSON objektu druhy nebo Java objekt skript.
Jaká je role, která Druhý argument pravděpodobně?
>> [Část neslyšitelný]
>> Skutečný dotaz, který uživatel zadal zřejmě žije
na žádost dot dotazu, dotaz s odkazem na všechno
po otazníku tečkou q, která je libovolný název
že jsem dal stejně jako Google
a mezitím q tlustého střeva je právě říká přecházejí do šablony,
Hledání dot EJS, klíč Q a hodnota
jakéhokoliv q je aktuální hodnota byla.
Tak, že opustí jen jeden soubor zajímat názorů,
Hledání dot EJS I uchovávány to super jednoduché příliš,
Je to většinou jen html, s výjimkou pro jeden poněkud pozoruhodnou řádku
které je tato syntaxe zde který vypadá jako banda
různých šablon motory to prostě znamená, že konektor
hodnoty q a aby bylo odvážné.
Takže neexistuje žádný skutečný vyhledávání funkce, ale to dělá trochu
o navrhnout, jak byste strukturu kostru
žádosti takhle.
Zatím ... vlastně jsem může ukázat jednu věc,
Všimněte si, že musím některé html se zde css soubory
a Java skript soubory, nic v těchto souborech
v současné době, ale všimněte si, že tam je veřejný adresář
jak jsem již řekl dříve pro statické soubory, takže když jdu
tam je tu můj css adresář,
když jdu tam Je tu styly dot css
a tam je žádné Obsah tam
ale to, jak byste jsou veřejné přístupné soubory.
Dobře pojďme se podívat u jedné další varianty zde
a pak budeme zavádět jeden nápad a přestávka.
Tak tohle je server 6 poslední, tak To je téměř totožné, s výjimkou
na spodních dvou řádcích které vypadají takhle.
Takže vlastně je tu Třetí linka, která je odlišná
ale já jsem skrytý ... tak ať mi zpět mírně nahoru tak to někdo bude chtít
navrhnout, co se děje zde v Laicky řečeno
nebo technické podmínky, co se liší o této verzi
vzhledem k těm, čáry v horní uzly.
Co vám pravděpodobně tady a proč to udělal?
Jo, Sharon.
>> [Část neslyšitelný]
>> Jo, vypadá to, že jsem přestěhoval index a hledání
takže oddělené přímé nebo tak něco, Jsem zapracovány ven
a to tak, že podobně jako v Larevel byste mohli dát všechny
Vaší logiky regulátoru uvnitř trasy dot php
s anonymními funkcemi Znovu a znovu a znovu
ale tento soubor je samozřejmě je dost masivní
tak na trasách dot php co nejvíce
z vás dělali je, že jste zadán název
třídy regulátoru nebo i název metody
že by se tzv.
takže stejný nápad tu ještě ale syntaxe je poněkud
jiný, takže tady upozornění
že mám zřejmě realizován své vlastní uzlu js
modul a modul je jen Soubor Java skript, který se drží
v podstatě jeden konvence že uvidíme za chvíli.
Takže předpokládejme, že všechny mé Funkce pro index
a pro vyhledávání jsou zřejmě byl uveden v tomto adresáři
a teď volám, že celý modul nebo balíček nebo knihovny,
co chcete myslet na to, jak,
as trasy proměnná s názvem trasy.
Takže zřejmě se tam trasy dot index je metoda zvaná
Obsah a zřejmě tam je jiná metoda volána hledání
v této trasy modulů nebo knihovny
a já jsem jen směrováním jen proto, že nemám dát všechny
mého anonymního kódu uvnitř mé app souboru.
Tak pojďme do trasy všimnete tam je jen index dot js
a když se podívám na tu to je Úmluva Myslel jsem dříve
tak to je docela libovolná ale je to konvence uzel.
Kdykoliv se rozhodnete vlastní uzel js knihovna,
aka modulu, který v podstatě může napsat libovolný kód Java script vás
Chci v tomto souboru, bude jsou zabaleny velmi čistě písek
tak, že všechny vy proměnné vyberte nebude kolidovat
s knihovnou někoho jiného, proměnné nebo metody nebo něco
stejně jako to, ale nic Chcete-li vystavit
k vnějšímu světu ala Veřejná metoda v Java skriptu
nebo php nebo jiné jazyky musíte plop uvnitř
globální objekt, který autor uzlu pojmenovaném vývozu.
Takže tím, že dělá vývozu dot index jsem odhalil uživatelům
tohoto modulu volána metoda index, který mapuje na tuto funkci
takže je to anonymní na pravá strana
ale já jsem ve skutečnosti, že mu jméno na levé straně
a export do světa
takže můžete volat dot index nebo tečka hledání.
Takže aby bylo jasno, kdybych měl také něco jako funkce foo
sem, že udělal něco
že funkce by absolutně být funkční,
to by se dalo nazvat v tento soubor, ale nikdo
ve vnějším světě studený někdy zavolat foo
protože to nebylo vyvezeno pomocí tohoto bodového zápisu.
Tak to je vše, co se děje,
všechno je pěkně jméno rozmístěny pro vás.
Takže konečný výsledek, pokud mám uzel z app a obnovte stránku je
že když jsem teď hledat
pro bar ... funkčně Tyto aplikace jsou stejné
ale je to jen trochu krok směrem k čistší provedení,
jistě, když začnete psát více a více kódu
a že to vše jsou.
Samozřejmě, že ne zvlášť složité nebo komplexní
ale v podstatě východiskem
za to, co bude vaše První uzel js app.
Co budeme dělat pravděpodobně později tento týden tento víkend
jak jste se finišuje na php aplikace budeme následovat
s velmi jednoduchá Žádost o tým se potápět
do podobné ducha zahřívací cvičení pro PHP
který na základě střední semestr průzkum,
lidé se hodit prochází cvičení
dělat něco docela jednoduchého
ale docela vedena před vámi vlastně řešit něco víc
na vlastní pěst, takže budeme navázat s tím
a v podstatě bude díky za týden a půl
od teď mírně překrývají s php záměrně.
Jakékoliv dotazy pak na vyjádřit, na zásuvky io
nebo zmatenost zbývající od pondělí možná.
Dobře, takže doufejme, že jeden z take-a-způsoby, potud je
že je pro některé z nich věci určitě hodně méně
nad hlavou, než si mohl byly použity.
Takže dovolte mi představit jedna poslední myšlenka,
takže velmi časté programování paradigma
Java skriptu, který je skutečně přítomen v jQuery
v posledních verzích tak může mít vlastně viděli tuto techniku
dříve, ale je to také docela obyčejný v uzlu js světě,
je to běžné v Tim je vlastní Knihovnička knihovna
takže budeme znovu to v konkrétnější příklad
v okamžiku, kdy je řešení na kód, jako je toto,
To je reprezentativní kódu jsme viděli v pondělí, takže si přečtěte soubor
V této souvislosti není reálné Metoda je podobná v duchu
na fs dot číst soubor, ale předpokládáme, že je to jen někteří z nich se
up metoda, která dělá něco velmi podobného.
Tak jsme narazili na několik problémy v pondělí obecně
takže to, co je trochu ... proč Je to kluzký svah,
Tento zavolat paradigma z programovacího jazyka Java skriptu
a zavolat zpět paradigma Jen jsem na mysli tuto techniku
kde se nevrací Hodnoty ihned
protože síla blok serveru
v tom něco jiného, ​​co je užitečné, místo toho zavolat zpět
jako bzučáky na Shake Shack, když jste připraveni
předat zpět odpověď jako argument.
To je kluzký svah
kde se velmi rychle se stává nepříjemné, proč?
Jo.
>> [Část neslyšitelný]
>> Jo, minimálně se stává druh nečitelný právo
Máte-li všechny tyto výzvy záda a pokud jste ulpívající
k dobrému stylu, je to čím dál docela masivně členité
v průběhu času a případ, že bych zdůraznit to Například, pokud jste trochu klouzat
přes to se prostě chtěl otevřete soubor JSON a vytisknout jej,
takhle to je, a přesto jsme mají asi 8 nebo 10 řádků zde
které jsou již trochu z nepříjemně členité,
máme zkusit úlovek, který je
pokud jste obeznámeni se zpracování chyb technika
, který vám umožní vyzkoušet něco
a pokud to selže, můžete chytit snad
bez celého programu ukončení, ale je tu
tolik složitost jako ty druhy ze si to promyslet
a nedej bože, co děláme pár další asynchronní volání metody,
věc je již bude tady,
byste si mohli myslet je to druh hloupé estetické, ale to
protože zpětné volání Paradigma je tak běžné, alespoň
v nativním kódu uzlu tento velmi rychle se stal nudný,
těžko ladit, odsazení začne záležet, takže můžete setřídit
Chase věci dolů, je to prostě není velmi šťastný způsob,
z programování.
Takže to, co lidé dělali
v různých kontextového uzlu mezi je se snažit zjednodušit to,
os Například sliby je další způsob myšlení
o psaní asynchronní kód že vizuálně změní něco
jako verze 1 do Tato verze 2.
Tvrdím, a to je opět jen trochu smíšené
mezi skutečnou kódu a pseudo kód, je to reprezentativní
o tom, jak byste znovu zavést že přesně to samé,
otevřete soubor json, analyzovat a vytisknout
s použitím co tzv. sliby
a klíč syntaktické detaily je
že je řetězení tu děje.
Všimněte si, že pouze středník
v celém ... vlastně dobře pojďme ... nechci klamat.
Toto není nezbytně nutné ale pojďme být v souladu,
Všimněte si, že středník , který odkazuje na otevření
celého tohoto prohlášení je celou cestu sem.
Takže, když jsem formátován to ... trochu hledat
jako tři příkazy, tři příkazy, které můžete vidět
v jazyce Java nebo jiných jazycích které mají vyzkoušet a chytit
a zpracování výjimek obecněji.
Všimněte si, že jsem řetěz Návratová hodnota každého
z těchto metod dohromady.
Takže to, co se děje, přečtěte si soubor pokud je to metoda, která existuje,
zřejmě se snaží číst tento soubor,
dot pak ano, pak je velmi společný název ve světě
ze slibů způsob, který by měl provést
v případě, že předchozí věc podařilo.
Takže je to něco jako úspěch handler, takže pak json tečka analýze,
dobře json tečka parse je jen metoda
do globální databáze json a to zřejmě řídí
v tomto případě slib modelu
takže říkáme, že lze jen Předpokládejme, že hovor Tato chlapa
a pokud uspěje pak zavolejte toho chlapa a pak
v případě, že to vlastně Provede jednoduše utěšit log data
v otázce.
Tak kde je chyba manipulace, všimněte si, jsem trochu
velmi slepě vstoupil z tohoto římse
a právě volal toto Způsob a pak tato metoda
aniž by se kontroly problémů.
Tak kde jsou ty problém pravděpodobně zpracovány v těchto ...
Prohlášení mezipaměti tak odlišné Knihovny používají odlišné
konvence, ale v V tomto případě je pak druh
psovoda úspěch, vyrovnávací paměť je trochu rutina chyb
a protože jsme drcená Tento řetěz se jen držet za použití
dot zápis propojit Původní metoda vyvolání
ze čtení souborů a funkce Vzývání případné chyby řazení
bublina jejich způsob prostřednictvím řetězce
dokud se to skutečně zacházet který je tak čistší, než se snaží
se s ní vyrovnat každý sakra krok na cestě
tak, aby váš kód velmi se rychle stává neskutečné údaje.
V tomto případě jsme tvrdí, že se snažíme
zachytit to, co se nazývá syntaktická chyba, že je to v podstatě
podtřída obecnější chyby, a pokud se tak stane nárok
že je to neplatné json jinak pokud je to obecnější chyby
že jsme nečekali jen obecně říci nemohou
číst soubor.
Teď je to jen znamená, aby byly reprezentativní pro kód
ale pokud jste naprogramované v Skript Java syrové nebo v Javě
nebo jiné jazyky je to procedurální kód v podstatě,
Jedná se o tradice zkuste catch
a to je estetické a funkce, které slibuje
nebo se snaží, aby vám kdy si můžete myslet na to,
jen jako psaní vyzkoušet a pak chytit a pak chytit nemají
strach při každém jediný bod,
kde chyba může zvládnout ... se stalo,
můžete zvládnout všechny na končí v případě potřeby malého bloku
kódu, a můžete dokonce rozlišovat mezi chybami
jak můžete v tomto případě zde.
Takže nomenklatura, že budete viz v literatuře možná
jako Tim představuje některé na tohle moc je
že v ideálním případě chcete slibuje vyřešit
a řešení slib prostředky že konečně vrátit takříkajíc
ale ne v tradičním způsobem hodnoty, tak se buď úspěšně
pro selže v podstatě.
Dobře jakýchkoli otázek, pak, to neznamená, že bude dostačující
pro vystavení sliby ale jen duševní modelu
za kód, začne vidět.