>> Dobre, takže sme späť, niekoľko cieľov pre dnešok,
budeme tam, kde sme skončili minule,
Pripomínam, že sme boli aby bol tento sled
zo serverových aplikácií súvisiacich, veľmi jednoduchý, ale pomocou uzla JS
a tiež v poslednej dobe pomocou expresné dotyk AS
a to, čo bolo vyjadrené JS analóg v PHP svete.
Takže express je viac ... zavrieť,
takže express je v podstate MBC rámec, ktorý je dosť
populárne v uzle js svete,
Regál, ktorý uvidíme dnes cez Tim je analógový
z výrečný, ktorý je ORM na objekt relačnej mapper
, Že v skutočnosti uľahčuje aby nedošlo k nízkoúrovňové kód SQL
a vlastne vyjadriť vzťahy medzi rôznymi objektmi.
Takže jeden z najlepšie veci poctivo
o uzol js je to, ako Ľahko tak to požičiava seba
robiť v reálnom čase aplikácie, veci, ako chatovacie servery
alebo serverov pre zasielanie správ, niečo, čo vy teraz používať
ako Google ... G-chatu alebo Google putyka
alebo aktualizácie stavu Facebook alebo aj Twitter, ak ste
na svojej webovej stránke všetko je trochu v reálnom čase
alebo vám Ilúzia reálnom čase
a že to vlastne bolesť krk čo do činenia s niečím
ako je PHP a MySQL pravé, čo sme navrhnúť
v pondelok by byť prostriedkom
o ktoré by ste mohli realizovať ilúzie reálnom čase správanie
s servera chatu v PHP, to, čo budete musieť robiť?
Alice odošle správu, hity zadajte, kde to ide?
Jo.
>> [Časť nepočuteľný]
>> Do databázy a potom čo prehliadač Bob majú
k tomu, aby skutočne vidieť čo Alice povedal, jo?
>> [Časť nepočuteľný]
Majte >> dotazovanie databázy, Dobre, takže ajax požiadavka má
strieľať každú sekundu, každý pár sekúnd alebo sme sa rozprávali krátko
ale nepozrel sa na príklad niečo ako dlhé dopytovania,
niekto pripomenúť, ako
, Že mechanizmus ... na na vysokej úrovni funguje?
>> [Časť nepočuteľný]
>> Presne tak, jo, takže prehliadač stále robí ajax požiadavku
na serveri, na foo dot php ale foo bodka php len zdá,
zavesiť, je to v podstate sedí v cykle while pre toľko
30 sekúnd a obvykle iba raz bodka php súbor foo
si uvedomuje, oh je tu nový riadok
v databáze robí v skutočnosti reagovať
s http reagovať.
Takže si myslíte, že by to mohlo inak zavesiť na server
a to robí do istej miery
ale to znamená, že je oveľa menšie nároky
pretože nepotrebujete novú tcp spojenie, spojenie novej htp
skutočne požadovať dáta zo servera.
Ale uzla js prichádza s veľmi populárne knižnica s názvom zásuvka
dot io ktoré by mohli nikdy použitý, je postavený na vrchole
o technológiu s názvom webe zásuvka, ktorá je prítomná
vo väčšine moderných prehliadačov a čo sa zásuvka io robí, je, aby vám
vytvoriť v podstate trvalé pripojenie
medzi prehliadačom a serverom to je veľmi nízka réžia
takže to nemusí byť nutne majú rovnaké problémy škálovanie
že by ste mohli, ak ste neustále biť na serveri
vo svete a PHP môj SQL a podobne.
Dokonca aj pre staršie prehliadače
ktoré nepodporujú webové zásuvku táto knižnica zásuvka bodka io možné
klesnúť späť na blesky realizácia zásuviek
a zásuvky so sieťou vec z CS143 napríklad.
Alebo to môže dokonca klesnúť späť na dlho dotazovanie samo o sebe tak realizovať
že rovnaký druh práce
asi v skutočnosti zachovanie ilúzie tejto súvislosti.
Takže socket [nepočuteľný] io a to vo forme
z knižnice Java Script, v podstate, ak ho používate
vo forme uzla js aplikácie nielen inštalovať
to ako balíček pomocou niečo ako NPM, ktoré sme použili v pondelok
a alebo tiež zahrnúť strip značku vo v html súbore
ktorá hovorí, že použitie na strane klienta knižnice.
Takže tam sú dve polovice do to a to, čo sme tu urobili
vo štvrtej iterácii sekvencie pondelkovom
z príkladov je nasledujúci.
Takže táto štruktúra súboru je pripomínajúce veľmi spoločného súboru
pre vyjadrených js a našťastie je to spôsob jednoduchšie
než lervo [fonetickej] bolo, spomínam ak si nastaviť
up lervo máš obrovský škaredý výpis z veľa súborov,
predajcu adresára, lib a veľmi ťažká váha v porovnaní s to.
Teraz v spravodlivosti sme vyzliekli preč veci, ktoré je do značnej miery
rozptýlenie, ale všetky šťavnaté veci je naozaj
v uzle module.
Len aby vám chuť Ak sa pozrieme
na uzle modulu je tu dva moduly alebo knižnice
že Stiahol som si tento by bolo ekvivalentné
adresára dodávateľa, jeden sa nazýva Express, ktorý je
ako larevel ale v uzle
a zásuvka io jeden len som sa zmienil.
Takže tie existujú, takže môžeme vykonajte nasledujúce kroky, ak otvorím
až povedzme index dot html, Poďme sa pozrieť na prvé html,
to sa bude skladať tento orgán, má výborný,
Super jednoduchý chat servera.
Takže tam to vraj ul s jedinečným nápadom správ
a to je miesto, kde jeden Ak v čase,
všetky rýchlych správ sú chystá sa objaví medzi Alicou
a Bob a potom je tu jednoduchý formulár s textovým poľom
a tlačidlo pre odoslanie ktorú Alice
alebo Bob môže skutočne Správa sa navzájom.
Takže čistý vplyv, ak Ja spustenie tejto aplikácie
tým, že robí uzol priestor app bodku js, keď som vytiahnuť pár
okien prehliadača je, že Alice by mohla byť na pravej strane,
Bob by mohol byť na vľavo a len
aby bolo jasné, že to žiadna mágia tu mám jedno okno
v anonymnom takže nie je Zdieľanie súborov cookie alebo čokoľvek
ako je tento, sa jedná o dva rôzne užívateľa.
Mal by som byť schopný mať Alice pozdraviť Bob, kliknite na tlačidlo Odoslať
a teraz vidíte na ľavej strane že Alicin správa bola odoslaná
a takmer okamžite na pravej strane.
No dotazovanie zdanlivo zapojený, Bob dostal rovnakú správu.
Teraz Bob hovorí, že pozdraviť Alicu vidíte opačný účinok.
Takže to, čo sa naozaj deje, ako veľa kód potrebujeme napísať
na vykonanie tohto serveru IM
ktoré si teraz môžete extrapolovať mentálne, že každý
V tejto miestnosti, ak to neboli na mojom [nepočuteľné]
ale na foo dot com sme mohli všetci začať rozprávať okamžite
navzájom.
Takže to, čo je zapojený, a než som sa vymazať túto obrazovku je to
práve socket io bytia trochu hlučný, je to len tlač
z ladiacich informácií na obrazovku,
je tu naozaj nič inak tam deje.
Takže dovoľte mi otvoriť app dot js, tak ako predtým, že máme pár vecí
v hornej časti súboru.
Banda požiadaviek, tak to sú ako knižnice
alebo zaostrenie stopy alebo vyžadujú onces bez ohľadu na mentálny model, ktorý
Chcete mať a len zhrnúť FS sa používa
Pre aké funkcie?
Takže systém súborov, takže čítanie súborov potenciálne, a tak podobne
a ja používam to v jednom umiestniť, ako uvidíte,
expresné samozrejme je to rámec, ktorý budeme používať,
je prísne nie je potreby by sme mohli
rovnako ako v pondelok úplne vytvoriť naše vlastné http servera od nuly
tým vytvoriť server a všetky tohto druhu kód z pred
ale ako uvidíme to robí veci trochu jednoduchšie
pretože všetko, čo musíte urobiť, je na linke 3 tu inštanciu
a vyjadriť objekt, zavolám je aplikácia, trochu svojvoľne,
Budem potom povie aplikácii počúvať na ľubovoľne porte 1337,
ktoré by mohli byť 80 konvencií
a potom konečne mám nový vedenie, ktoré dnes hovorí
požadovať zásuvku IO knižnice a potom
tohto reťazca prístupu by Tento operátor bodka Som len
volanie lekciu počúvať, že je v podstate hovorí zásuvku
io knižnica tiež počúvať rovnakom serveri
alebo webové socket spojenie.
Takže čo teraz, takže to, čo je to robí, tieto štyri riadky
kódu tu, ktorá by mala pozrite sa pripomína larevel,
čo to predstavuje?
>> [Časť nepočuteľný]
>> To je ... cesta, len cesta tak v app dot JS,
aka servera dot js závislosti na to, čo ľudia chcú, aby ju volať
vo svojich aplikáciách Máte konvencie
robiť definovanie trás,
app bodka get znamená, keď máte požiadavku GET ísť
sa na doslova lomítko pokračovať a volať túto anonymný funkcie
a anonymné funkcie v V tomto prípade sa podľa požiadavky
alebo požiadavku a odpoveď, potenciálne niektoré ďalšie veci
ale minimálne tie dva.
Žiadosť poskytuje prístup k veciam, ako sú parametre http
a hlavičky a ďalšie šťavnaté veci
a potom sa reakcia je mechanizmus
ktorú môžete reagovať na užívateľovi.
Tak to je super jednoduché aj aj keď sme nevideli dosť
Rovnaký kód minule, som pomocou súborového systému modulov,
vytvoriť čítanie metódu prúdu ktorý v podstate robí,
vytvoriť čítanie prúd, ktorý znamená, že v podstate začať slurping
up bajtov z indexu bodkou html tak efektívne, ako je to možné
bez nevyhnutne čakania do svojho prečítať celý súbor
a ako robíte, že potrubie je doslova
v tom zmysle, zvislou čiarou ak ste pohodlne
s linuxovú príkazový riadok,
potrubia do reakcie objektu.
Tak boli tam dva príklady týkajúce sa tokov v pondelok,
sme sa len pozrel na jedného, ​​ale ste vítaní pozrieť sa späť
u potoka o a prúdu 1.
Stream 1 ... 0 áno niečo podobné k tomu,
prúd 1 urobil niečo takmer presne ako to,
je to len úhľadný jedna vložka hovoriť nejako
z usrkávať niečo sem a potom začať posielať ho tu
v rovnakú dobu, bez robí hmotu súhlasiť
a potom masívne právo,
Tento prístup je všeobecne účinnejšia.
Tak to je celkom staré veci aj keď to bolo nové v pondelok,
To je všetko, čo má realizovať chatu servera
s uzlom js a viac konkrétne socket dot io.
Tak, ako to funguje, dovoľte mi, aby som ho presunúť sa trochu,
tak io je len variabilné , Ktorý sa týka
k modulu sa požadovanej výšky,
dot zásuvka je len vlastnosť vnútri nej
že mi dáva zásuvka súvisiace funkcie
na je bežná metóda, ktorá súvisí s tým, čo všeobecný pojem?
Udalosť tak na aka počúvať niektoré knižnice to jednoducho znamená,
na vypočutie túto udalosť ktorý sa nazýva spojenie
a teraz to viete len z pri pohľade na dokumentáciu,
kto napísal knižnicu definované akciu s názvom
spojenie, ktoré nemá to, čo si bude myslieť,
keď Alice a Bob sa pripojí.
Nehanbite sa a zavolaj to anonymné funkcie take absolvovaní
v jednom argumente klient čo je zrejme nejaká
objektu, ktorý reprezentuje Alicin pripojenie
alebo Bobův pripojenie alebo Charlie, alebo niekto iný
a teraz robíme nasledujúce.
Potom, čo sme povedať klientovi on alebo ona je pripojený
načúvať konkrétne
pre správu, ktorá je úplne ľubovoľne nazvaný správu
hrubého klienta.
To je niečo, čo Tim a Prišiel som sa, mohlo by to byť foo
alebo baru, je to len niektoré Jedinečný reťazec, ktorý sme potrebovali
rozhodnúť, ako vývojári.
Kedykoľvek Alice alebo Bob počuje
že udalosť je tento anonymný funkcia by mala byť volaná
a dáta, Obsah Alice
alebo Bobův správa by mala byť odovzdaný do tejto rutiny udalosti
a teraz, čo by Klient si dobre môžete druh
ze si to celkom intuitívne Klient by mal vysielať,
inak známy ako vydávať Správa s názvom metóda servera
čím znamenať túto správu prichádza zo servera nie je
z prehliadača, a čo by táto správa byť
to je zrejme užitočné zaťaženie od čo prišlo od klientov
a my sme len tak ľubovoľne hovoria správa.
Takže veľa z toho je ľubovoľná
prostredníctvom primeranej pomenovanie dohovorov, Tim a ja som prišiel
s, väčšinou Tim a potom sme jednoducho sa vytvára v konečnom dôsledku
chatu servera, ktorý robí to, čo, Pri Alice odošle správu
a hity zadajte Aká udalosť zrejme dostane padáka,
len rekapitulovať.
Alice typy správ, hity zadanie, klient správa vystrelil,
Tento kód počuje, že aj teraz Server vysiela čo,
čo je konečný výsledok to naozaj?
Alice odošle správu teraz Server je rebroadcasts
účinne všetkým okrem pre Alicu, prečo všetci okrem
pre Alicu, keď sa len pozerať
na strane klienta dokumentácie dot dot vysielanie priznať,
doslova robí, vysiela správu
všetkým okrem Klient, ktorý vám poslal
že najnovšie správa.
Takže to je dôvod, prečo si len vidieť to raz na každej strane,
Nevidíte ako Alice a Bob dostať Alicin správu.
Tak to je ono, to je odovzdávanie prostriedok
ak sa to len s v správach
a bezdrôtovo ich von
a to je pozoruhodne škálovateľné Myslím dokonca
s veľmi jednoduchou servera a pár riadkov
kódu by ste mohli určite zvládnuť stovky ak nie tisíce
súbežných jednoduchých správ tam a späť, ako to
a len si predstavte, zložitosť Teraz, ako to urobiť v PHD
alebo Larevel alebo môj SQL a koľko kód, ktorý by mal
písať, aby sa skutočne dosiahnuť.
Teraz v spravodlivosť v tomto nie je perzistentná pravý
ak server spadne strácame celú históriu
takže to nie je úplne dokonalý preklad, ale je to
že priamo vpred.
Poďme sa pozrieť na skriptu Java Kód my preskočil skôr,
to je Alice a Bobův klienta,
webové stránky, ktoré používate teraz poďme sa pozrieť sem na chvíľu.
Je tu trochu viac kódu
ale je to do značnej miery práve jQuery tu tak Oznámenie
že na webovej stránke že som vytiahol
sa pred chvíľou sme jQuery knižnicu,
zásuvka io knižnice a ako stranou všimnete rozdielu
tu, lomítko lomítko na Začiatok cesty
ako to znamená, že to, čo presne,
kde je jQuery bodka js na ktorom serveri?
Jo.
>> [Časť nepočuteľný]
>> Je to na internete jo doslova volal kód bodka jQuery
dot com tak prečo lomítko, lomítko, prečo nie len jeden lomítko,
kde je http alebo hrubého čreva, Čo to znamená všeobecne
ak lomítko lomítko na začiatok url?
Je to vlastne užitočné.
Dobre, takže to, čo je zrejme Chýba http teraz, ak sme dôvod
cez to logicky, zvyčajne nepotrebujete
spomenúť servery mien právo
ako keď stačí použiť lomítko jQuery bodka js, čo sa predpokladá,
prehliadačom?
Že súbor je na rovnakej server, takže aj naďalej tohto druhu
logiky, ak nechcete povedať, to, čo protokol, čo je
prehliadač predpokladať, rovnaký protokol tak Ak ste niekedy navštívili webové stránky
že vám chybu spolu línia nezabezpečený obsah
Na tejto stránke je to preto, niekto má pevný kódované HTTP
dvojbodka lomítko lomítko URL pre obrázok alebo skript Java
alebo súbor CSS, niečo ako, že v zdrojovom kóde stránky
ale samotná stránka v prehliadača URL http s.
Takže je to len ozdobný malý spôsob,
povedať, neviem Čo je protokol
, Že tieto koncových užívateľov bude používať
ale len sa uistite, že zápasy, takže chróm
a ďalšie prehliadače nemusíte kričať na užívateľa.
Jediný úlovok je jQuery ľudia lepšie nastaviť
až https na svojom serveri.
Takže oni sú vlastne výpis z 443..
Dobre zatiaľ to jeden tu je to druh
zavádzajúce lomítkom zásuvka io navrhuje
že je adresár s názvom zásuvka dot io na mojom serveri
ale tam to nie je, ak sa hrabať
okolo je tu adresári uzlov modulu
ale tam je nič verejnosť o tom,
keď sme nakonfigurovaný zásuvky io počúvať na rovnakých portoch,
1337 v podstate, že knižnica že niekto iný napísal, je ísť
na druh vložiť nejaký kód do životného prostredia uzol JS
a len počúvať pre túto cestu.
Že knižnica má len nakonfigurovaný cestu pre to,
že to nie je skutočný adresár.
To by bolo v štandardné umiestnenie.
Dobre, takže teraz zaujímavé časť,
takže keď dokument je pripravený, ako je uvedené
týmto jQuery konštrukcii, Prvý Chystám sa ísť dopredu
a pripojiť do zásuvky,
čo socket len ​​tým, že ... aby to jednoduché Idem sa pripojiť
lomka, to je kde je používateľ,
Ja som držal príklad jednoduchej sme len tak pripojiť
na presne rovnakú adresu URL, ktorá užívateľ navštívil a potom idem
vykonať nasledujúce kroky, idem povedzte prehliadač Alice alebo Bob
počúvať správy zo servera.
Opäť to môže byť foo
alebo bar kedykoľvek budete počuť správu
z nej dát na serveri volanie a potom vykonajte tento kód jQuery
ktoré Hádam, že väčšina, ak nie každý je oboznámený
sa v týchto dňoch, ale v podstate pin na zoznam tovaru
na existujúce UL, ktoré bol nazývaný správy
ktorý doslova hovorí, bez ohľadu na náklad je
na chate správy nasleduje spojovník, nasleduje príjem,
nasledovaný medzerou a potom je čas aktualizácie a to je dôvod, prečo
aby bolo jasné, či sa vrátime
k tomu dostanete tie ďalšie guľky znovu a znovu
a opäť s dátumom časy.
Zatiaľ Ak sa pozrieme Tu sa budeme musieť
zvládnuť odoslaní formulára tak, aby bol prijímajúci
z rýchle správy, tu je odoslanie a to je niečo
z nesúvisí s uzla js, počúvať na formulároch predložiť udalosť.
Keď sa to stane sa zabránilo zlyhaniu, to jednoducho znamená, že nemusíte predkladať ju
na serveri v obvyklej Tak znovu načítať celú stránku,
Chceme, aby to všetko cez ajax.
Tu je len niekoľko kódy jQuery
skutočne získať vstup ktorých typ je správa,
ktorého meno je správa pokračovať
a dostať je hodnota potom budete pokračovať
a ak ste skutočne správy, ak je Alice a Bob
alebo Bob v skutočnosti typy niektoré žiadna 0 počet úderov vydávať
na zásuvke správa s názvom Klient správa s týmto užitočným zaťažením
a potom tu je to , Čo je to na rozdiel od zelenej
na červenú, jednoducho výstup zariadenie na strane [nepočuteľný].
Tak to je ono, ale všetky to je práve nastavený,
skutočné nové veci by som argumentovať len tieto tri
alebo päť riadkov kódu tu a že trochu rád na napájanie
uzlových JS a s ním tento konkrétny knižnice.
Takže poďme rýchlo pozrite sa na expresné dot js,
tak čo budem snažiť robiť v zostávajúcom pár
minút, je tu zriadený Niekoľko nápad, niekoľko techník
že potom bude trvať niekoľko minútová prestávka, bude Tim nastaviť
a potom sa budeme potápať hlbšie
na zaujímavejšie expresné aplikácie a tiež
na regál, knižnica Tim vlastne napísal
k open source komunite
že nám dáva veľavravná svetlo funkčnosť s mojím SQL
a transakcie a iné, ako funkcie a že bude tiež potápať
v trochu hlbšie do jazyk Java skript sám,
ako jej predmet alebo non-class model funguje inak vedieť
ako prototyp modelu, viac na to prísť.
Takže poďme sa pozrieť na posledné dve Žiadosti tu, server, päť
a server 6, ktoré sú všetky trochu podobné duchu,
tieto nie sú chatu servery ale oni používajú express.
Takže poďme sa pozrieť na čo to vlastne robí,
Chystám sa ísť dopredu a otvorené ... Chystám sa spustiť túto aplikáciu
sa uzol app JS, budem vrátiť do svojho prehliadača a znova
a to je zrejme všetko tento server robí,
je to super jednoduché servera to je zrejme hľadanie
motora, takže keď som zadať foo a predložiť žiadne výsledky vyhľadávania
pre foo, som nedostal okolo , Ktorým sa vykonáva sofistikované
back-end, všetko, čo sa deje
urobiť, je echo bez ohľadu na to, čo zadáte žiadne výsledky pre foo,
na bare žiadne výsledky tak, ako to robíme
pretože tam je pár kusov, jeden,
tam je jasne nejaký Vstupy sú poskytované
k serveru nie Larevel Samozrejme ale uzol js teraz
takže musíme nejako sa v tomto parametri Q,
sme jasne robia nejaký druh pohľadu tu,
sme vykreslenie zobrazenie tak, Možno, že je to príležitosť
šablóny alebo premenné interprelation [fonetický]
takže sa poďme pozrieť na nasledujúce.
V app js pre tento konkrétny Server je všetko, čo máme.
Raz budeme požadovať vyjadrenie sama o sebe, dve modul cesta
ktorý len robí niektoré užitočné veci
ako je spájanie reťazcov dohromady a tak ďalej pre mňa,
Aj načúvanie na porte 1337 a Teraz je to nový, takže sa ukáže,
z tohto výslovného ako Larevel podporuje rôzne zásuvné moduly
a technológií a iné veci, a jeden
z technológií, ktoré Môžete pripojiť je pohľad motora
čo znamená len to, čo šablón Motor chcete použiť,
Larevel mal to vlastné vec, ale môžete pripojiť
v rôznych veciach, rôzne broskyňa P rámce majú
rôzne spôsoby šablón, EJS je len obyčajný
a celkom jednoduchý motor že práve poďme si robiť veci
ako zložených zátvoriek, ktoré ste mali v syntaxi Larevels
pre striedanie premenných,
je to trochu inak syntakticky je všetko.
Takže teraz je tu tá vec s názvom strednej ware tak uvidíte
vo svojom vlastnom tíme uzla projektu bola middle ware je len druh kódu
alebo knižnice, ktoré podávate
do [nepočuteľný] odpoveď životný cyklus aplikácie,
inými slovami, tieto dva riadky hovoria express
urobiť nejakú prácu navyše medzi Tentoraz to dostane žiadosť
a medzi časom sa posiela že požiadavka na vlastné trase,
váš kód, ktorý ste napísali.
Tak predovšetkým táto linka tu použiť expresné bodku statické a všetky
tejto zložitosti to len znamená, že ak vidíte žiadosť
že príde na statické súboru ako foo dot JIF alebo foo dot css
alebo foo bodka js, takže nie je dynamicky generované trasy,
choďte do toho a predpokladám, že žije vo verejnom podadresáre,
to je všetko, čo robí.
Je to niečo ako mapovanie v Larevel, všetko na Váš web
alebo váš adresár skôr Larevel.
Tento ďalší riadok je len hovorí chcem použiť trasy,
Chcem používať veci ako aplikácia dot sa
ktorý sme videli pred chvíľou a uvidíme pár sekúnd teraz.
Takže app bodka získať prostriedky načúvať tejto trase,
lomka, keď vám to hovoriť to anonymné funkcie, ktorá zoberie
v žiadosti a A reakcie a teraz len
ako Larevel máte cestu založiť šablóny,
odpoveď dot činí, citovať koniec citátu index,
robí je šablóna tzv index,
že je to tak poďme pozastaviť, ktoré závit len ​​na chvíľu pohľad
na obsah adresár zobrazenie
a všimnite si, to taky je super jednoduché pre teraz,
tam je index dot EJS a vyhľadávanie bodových EJS,
Samozrejme chcem prvý
, Pretože to, čo som práve unavený na to a uvidíme
do indexových zobrazenie dot EJS väčšina vlastne úplne html
v súčasnej dobe, je tu vlastne nie šablón deje.
Tak som technicky nie ani potrebné hovoriť EJS,
Nepotrebujem, aby funkčnosť ale som si to uniforma,
tak to je ono, to je to, čo dáva mi to veľmi jednoduchý formulár.
Takže je tu len jedna ďalšia cesta, Ak sa pozrieme tu dole som povedal,
že toto je to, čo sa spracováva lomítko vyhľadávania skutočného nastavíte radenie
spoločnosti Google, ako handler pre odoslanie formulára, keď sa dostanete
že cesta volať toto anonymné funkcie
a vykreslenie šablóny volal hľadanie
a čo je druhý argument, pravdepodobne na mysli.
Vyzerá to, že JSON objektu druhy alebo Java objekt skript.
Aká je úloha, ktorá Druhý argument pravdepodobne?
>> [Časť nepočuteľný]
>> Skutočný dotaz, ktorý užívateľ zadal zrejme žije
na žiadosť dot dotazu, dotaz s odkazom na všetko
po otáznika bodkou q, ktorá je ľubovoľný názov
že som dal rovnako ako Google
a medzitým q hrubého čreva je práve hovorí prechádzajú do šablóny,
Hľadanie dot EJS, kľúč Q a hodnota
akéhokoľvek q je aktuálny hodnota bola.
Tak, že opustí len jeden súbor zaujímať názorov,
Hľadanie dot EJS Aj uchovávané to super jednoduché príliš,
Je to väčšinou len html, s výnimkou pre jeden trochu pozoruhodnú riadku
ktoré je táto syntaxe tu ktorý vyzerá ako banda
rôznych šablón motory to jednoducho znamená, že konektor
hodnoty q a aby bolo odvážne.
Takže neexistuje žiadny skutočný vyhľadávania funkcie, ale to robí trochu
o navrhnúť, ako by ste štruktúru kostru
žiadosti takto.
Zatiaľ ... vlastne som môže ukázať jednu vec,
Všimnite si, že musím niektoré html sa tu css súbormi
a Java skript súbory, nič v týchto súboroch
v súčasnej dobe, ale všimnite si, že tam je verejný adresár
ako som už povedal skôr pre statické súbory, takže keď idem
tam je tu môj css adresár,
keď idem tam Je tu štýly dot css
a tam je žiadne Obsah tam
ale to, ako by ste sú verejné prístupné súbory.
Dobre poďme sa pozrieť u jednej ďalšie varianty tu
a potom budeme zavádzať jeden nápad a prestávka.
Tak toto je server 6 posledná, tak To je takmer totožné, s výnimkou
na spodných dvoch riadkoch ktoré vyzerajú takto.
Takže vlastne je tu Tretia linka, ktorá je odlišná
ale ja som skrytý ... tak nech mi späť mierne nahor tak to niekto bude chcieť
navrhnúť, čo sa deje tu v Laicky povedané
alebo technické podmienky, čo sa líši o tejto verzii
vzhľadom k tým, čiary v hornej uzly.
Čo vám pravdepodobne tu a prečo to urobil?
Jo, Sharon.
>> [Časť nepočuteľný]
>> Jo, vyzerá to, že som presťahoval index a hľadanie
takže oddelené priame alebo tak niečo, Som zapracované von
a to tak, že podobne ako v Larevel by ste mohli dať všetky
Vašej logiky regulátora vnútri trasy dot php
s anonymnými funkciami Znova a znova a znova
ale tento súbor je samozrejme je dosť masívny
tak na trasách dot php čo najviac
z vás robili je, že ste zadaný názov
triedy regulátora alebo aj názov metódy
že by sa tzv
takže rovnaký nápad tu ešte ale syntax je trochu
iný, takže tu upozornenia
že mám zrejme realizovaný svoje vlastné uzla js
modul a modul je len Súbor Java skript, ktorý sa drží
v podstate jeden konvencie že uvidíme za chvíľu.
Takže predpokladajme, že všetky moje Funkcie pre index
a pre vyhľadávanie sú zrejme bol uvedený v tomto adresári
a teraz volám, že celý modul alebo balík alebo knižnice,
čo chcete myslieť na to, ako,
as trasy premenná s názvom trasy.
Takže zrejme sa tam trasy dot index je metóda zvaná
Obsah a zrejme tam je iná metóda volaná hľadanie
v tejto trasy modulov alebo knižnice
a ja som len smerovaním len preto, že nemám dať všetky
môjho anonymného kódu vnútri mojej app súboru.
Tak poďme do trasy všimnete tam je len index dot js
a keď sa pozriem na tú to je Dohovor Myslel som skôr
tak to je celkom ľubovoľná ale je to konvencie uzol.
Kedykoľvek sa rozhodnete vlastný uzol js knižnica,
aka modulu, ktorý v podstate môže napísať ľubovoľný kód Java script vás
Chcem v tomto súbore, bude sú zabalené veľmi čisto piesok
tak, že všetky vy premenné vyberte nekolidoval
s knižnicou niekoho iného, premenné alebo metódy alebo niečo
rovnako ako to, ale nič Ak chcete vystaviť
k vonkajšiemu svetu ala Verejná metóda v Java skriptu
alebo php alebo iné jazyky musíte PLOP vnútri
globálny objekt, ktorý autor uzla pomenovanom vývozu.
Takže tým, že robí vývozu dot index som odhalil užívateľom
tohto modulu volaná metóda index, ktorý mapuje na túto funkciu
takže je to anonymný na pravá strana
ale ja som v skutočnosti, že mu meno na ľavej strane
a export do sveta
takže môžete volať dot index alebo bodka hľadanie.
Takže aby bolo jasno, keby som mal tiež niečo ako funkcia foo
sem, že urobil niečo
že funkcie by absolútne byť funkčné,
to by sa dalo nazvať v tento súbor, ale nikto
vo vonkajšom svete studený niekedy zavolať foo
pretože to nebol vyvezený pomocou tohto bodového zápisu.
Tak to je všetko, čo sa deje,
všetko je pekne meno rozmiestnené pre vás.
Takže konečný výsledok, ak mám uzol z app a obnovte stránku je
že keď som teraz hľadať
pre bar ... funkčne Tieto aplikácie sú rovnaké
ale je to len trochu krok smerom k čistejšej prevedení,
iste, keď začnete písať viac a viac kódu
a že to všetko sú.
Samozrejme, že nie zvlášť zložité alebo komplexné
ale v podstate východiskom
za to, čo bude vaša Prvý uzol js app.
Čo budeme robiť pravdepodobne neskôr tento týždeň tento víkend
ako ste sa finišuje na php aplikácie budeme nasledovať
s veľmi jednoduchá Žiadosť o tím sa potápať
do podobnej ducha zahrievacie cvičenia pre PHP
ktorý na základe stredná semester prieskum,
ľudia sa hodiť prechádza cvičenie
robiť niečo celkom jednoduchého
ale celkom vedená pred vami vlastne riešiť niečo viac
na vlastnú päsť, takže budeme nadviazať s tým
a v podstate bude vďaka za týždeň a pol
od teraz mierne prekrývajú s php zámerne.
Akékoľvek otázky potom na vyjadriť, na zásuvky io
alebo zmätenosť zostávajúce od pondelka možná.
Dobre, takže dúfajme, že jeden z take-a-spôsoby, potiaľ je
že je pre niektoré z nich veci určite veľa menej
nad hlavou, ako si mohol boli použité.
Takže dovoľte mi predstaviť jedna posledná myšlienka,
takže veľmi časté programovanie paradigma
Java skriptu, ktorý je skutočne prítomný v jQuery
v posledných verziách tak môže mať vlastne videli túto techniku
predtým, ale je to tiež celkom obyčajný v uzle js svete,
je to bežné v Tim je vlastné Knihovnička knižnica
takže budeme znovu to v konkrétnejší príklad
v okamihu, keď je riešenie na kód, ako je toto,
To je reprezentatívna kódu sme videli v pondelok, takže si prečítajte súbor
V tejto súvislosti nie je reálne Metóda je podobná v duchu
na fs dot čítať súbor, ale predpokladáme, že je to len niektorí z nich sa
up metóda, ktorá robí niečo veľmi podobného.
Tak sme narazili na niekoľko problémy v pondelok všeobecne
takže to, čo je trochu ... prečo Je to klzký svah,
Tento zavolať paradigma z programovacieho jazyka Java skriptu
a zavolať späť paradigma Len som na mysli túto techniku
kde sa nevracia Hodnoty ihneď
pretože sila blok servera
v tom niečo iné, čo je užitočné, namiesto toho zavolať späť
ako bzučiaky na Shake Shack, keď ste pripravení
odovzdať späť odpoveď ako argument.
To je klzký svah
kde sa veľmi rýchlo sa stáva nepríjemné, prečo?
Jo.
>> [Časť nepočuteľný]
>> Jo, minimálne sa stáva druh nečitateľný právo
Ak máte všetky tieto výzvy chrbát a ak ste prilepené
k dobrému štýlu, je to čím ďalej celkom masívne členité
v priebehu času a prípad, že by som zdôrazniť to Napríklad, ak ste trochu kĺzať
cez to sa proste chcel otvorte súbor JSON a vytlačiť ho,
takto to je, a napriek tomu sme majú asi 8 alebo 10 riadkov tu
ktoré sú už trochu z nepríjemne členité,
máme skúsiť úlovok, ktorý je
ak ste oboznámení sa spracovanie chýb technika
, Ktorý vám umožní vyskúšať niečo
a ak to zlyhá, môžete chytiť snáď
bez celého programu ukončenie, ale je tu
toľko zložitosť ako tie druhy ze si to premyslieť
a nedaj bože, čo robíme pár ďalšie asynchrónne volanie metódy,
vec je už bude tu,
by ste si mohli myslieť je to druh hlúpe estetické, ale to
pretože spätné volanie Paradigma je tak bežné, aspoň
v natívnom kóde uzla tento veľmi rýchlo sa stal nudný,
ťažko ladiť, odsadenie začne záležať, takže môžete zotrieďiť
Chase veci dole, je to jednoducho nie je veľmi šťastný spôsob,
z programovania.
Takže to, čo ľudia robili
v rôznych kontextového uzla medzi je sa snažiť zjednodušiť to,
os Napríklad sľuby je ďalší spôsob myslenia
o písaní asynchrónny kód že vizuálne zmení niečo
ako verzia 1 do Táto verzia 2.
Tvrdím, a to je opäť len trochu zmiešané
medzi skutočnou kódu a pseudo kód, je to reprezentatívna
o tom, ako by ste znovu zaviesť že presne to isté,
otvorte súbor json, analyzovať a vytlačiť
s použitím čo tzv sľuby
a kľúč syntaktické detaily je
že je reťazenie tu deje.
Všimnite si, že iba bodkočiarku
v celom ... vlastne dobre poďme ... nechcem klamať.
Toto nie je nevyhnutne nutné ale poďme byť v súlade,
Všimnite si, že bodkočiarku , Ktorý odkazuje na otvorenie
celého tohto vyhlásenia je celú cestu sem.
Takže, keď som formátovaný to ... trochu hľadať
ako tri príkazy, tri príkazy, ktoré môžete vidieť
v jazyku Java alebo iných jazykoch ktoré majú vyskúšať a chytiť
a spracovanie výnimiek všeobecnejšie.
Všimnite si, že som reťaz Návratová hodnota každého
z týchto metód dohromady.
Takže to, čo sa deje, prečítajte si súbor ak je to metóda, ktorá existuje,
zrejme sa snaží čítať tento súbor,
dot potom áno, potom je veľmi spoločný názov vo svete
zo sľubov spôsob, ktorý by mal vykonať
v prípade, že predchádzajúce vec podarilo.
Takže je to niečo ako úspech handler, takže potom json bodka analýze,
dobre json bodka parse je len metóda
do globálnej databázy json a to zrejme riadi
v tomto prípade sľub modelu
takže hovoríme, že sa dá len Predpokladajme, že hovor Táto chlapa
a ak uspeje potom zavolajte toho chlapa a potom
v prípade, že to vlastne Vykoná jednoducho utešiť log dáta
v otázke.
Tak kde je chyba manipulácia, všimnite si, som trochu
veľmi slepo vstúpil z tohto rímse
a práve volal toto Spôsob a potom táto metóda
bez toho, aby sa kontroly problémov.
Tak kde sú tie problém pravdepodobne spracované v týchto ...
Vyhlásenie medzipamäte tak odlišné Knižnice používajú odlišné
konvencie, ale v V tomto prípade je potom druh
psovoda úspech, vyrovnávacia pamäť je trochu rutina chýb
a pretože sme drvená Táto reťaz sa len držať za použitia
dot zápisnica prepojiť Pôvodná metóda vyvolanie
z čítania súborov a funkcie Vzývanie prípadné chyby radenia
bublina ich spôsob prostredníctvom reťazca
kým sa to skutočne zaobchádzať ktorý je tak čistejšie, než sa snaží
sa s ňou vyrovnať každý sakra krok na ceste
tak, aby váš kód veľmi sa rýchlo stáva neskutočné údaje.
V tomto prípade sme tvrdí, že sa snažíme
zachytiť to, čo sa nazýva syntaktická chyba, že je to v podstate
podtrieda všeobecnejší chyby, a ak sa tak stane nárok
že je to neplatné json inak ak je to všeobecnejší chyby
že sme nečakali len všeobecne povedať nemôžu
čítať súbor.
Teraz je to len znamená, aby boli reprezentatívne pre kód
ale ak ste naprogramované v Skript Java surové alebo v Jave
alebo iné jazyky je to procedurálne kód v podstate,
Jedná sa o tradície skúste catch
a to je estetické a funkcie, ktoré sľubuje
alebo sa snaží, aby vám kedy si môžete myslieť na to,
len ako písanie vyskúšať a potom chytiť a potom chytiť nemajú
strach pri každom jediný bod,
kde chyba môže zvládnuť ... sa stalo,
môžete zvládnuť všetky na končí v prípade potreby malého bloku
kódu, a môžete dokonca rozlišovať medzi chybami
ako môžete v tomto prípade tu.
Takže nomenklatúra, že budete pozri v literatúre možno
ako Tim predstavuje niektoré na tohle moc je
že v ideálnom prípade chcete sľubuje vyriešiť
a riešenie sľub prostriedky že konečne vrátiť takpovediac
ale nie v tradičným spôsobom hodnoty, tak sa buď úspešne
pre zlyhá v podstate.
Dobre akýchkoľvek otázok, potom, to neznamená, že bude postačovať
pre vystavenie sľuby ale len duševné modelu
za kód, začne vidieť.