>> Tak s tým bolo povedané,
len trochu jednoduchý úvod do prototypov
a objektový model JavaScript.
Nebudeme sa posunúť kolesá trochu hovoriť
o viac JavaScript na servera a regál knižnice
a pripojenie KNEX knižnice.
Takže môžete vlastne len -
ak hľadáte Bookshelf.js to by malo byť celkom jednoduché
nájsť, by mala byť prvá výsledok, a Bookshelf
ako David zmienil len dáva veľa štruktúry
okolo objektov JavaScriptu a pracovať s nimi relačne
v relačných databázach.
Takže, veľa podobné črty kto je vlastne silne inšpirovaný
podľa Laravel je ORM ako rovnako ako Backbone.js,
čo je predný koniec MVC knižnica, ktorá vám umožní
štruktúrovať svoj kód, podobné tomu, čo som ukazoval
s príkladmi prototypy, kde môžete -
namiesto toho len svojvoľne hádzanie triedy
Na vaše názory sem a tam.
To vám dáva modelov a zbierky týchto modelov
, Ktoré majú pôsobiť ako druh jediný bod pravdy
o dáta pre aplikácie.
A potom budete počúvať, čo ti modely zmeny, hovoríte, OK,
znovu robí túto šablónu tu a toto sem
a nie len pridať triedu sem, pridať triedu tam a trochu vybrať
na voličov a aby pavučiny z jQuery kódu.
To dáva väčšiu class-based štruktúra na jednotlivé kusy,
ale dôležitou zložkou že knižnica je modely
, Ktoré majú podobnú štruktúru na to, čo Knihovnička modely robiť.
Takže, ak ste oboznámení s Regál si pekná aj
docela oboznámení s Backbone.js modely,
a ja by som odporučiť pričom sa pozrieť na toto.
Takže niektoré z hlavných rysov
, Že to dáva ste práve možnosť nastaviť údaje o objekte
volať načítať, ktoré vráti individuálny záznam
z databázy, vytvoriť vzťahy ako obdobné
na to, čo riešiť v rámci v Laravel
kde si môžete povedať, Pacient nastaviť metódu záznamu
a hovoria, že toto vyhral záznam
kde objekt záznam Meno tabuľka zdravotné záznamy.
Poďme sa pozrieť.
Má mnoho - to patrí k -
len veci, ktoré ste dosť podobné -
docela oboznámení s už, ale v JavaScriptu.
A pod kapotou, pre regál,
používa staviteľ dotaz tzv Knex.js.
Tak, to je KNEX, knexjs.org.
Je to odkaz na hračke, pokiaľ kto kedy hral s tým.
Ale to vám umožní - v Podobným spôsobom sa jQuery,
stačí nejako vytvoriť reťazec rôznych metód
že voláte na vašom Databázy riadok, takže môžete -
ste začal tým, KNEX a názov tabuľky.
Tak, napríklad, používatelia KNEX, vyberte stĺpce, ktoré chcete,
kde, a majú odlišné, ak podmienkové a môžete mať
A kde, alebo kedy, kde v rokoch, kedy nie je,
teraz, na celej čiare.
Môžete určiť rôzne spoje medzi databázových tabuliek
ktoré Knihovnička používa interne nastaviť druh mágie
okolo Hason, HASMAN, Patrí, belongsToMany.
A tak kombinácia
z tých dvoch vám to pekne moc, čo by ste použiť
v rámci, ako Laravel, pokiaľ ide
funkčnosti prácu s databázami.
Takže, poďme do toho a vziať Pozrite sa na jednoduchý príklad
pre Express aplikácie, ktoré využíva týchto modelov
a zbierky Regál jazz [fonetický].
Takže som nastaviť len jednoduchá aplikácia tu.
Som vyzliekol niektoré z vecí , Ktorá bola pri inicializácii výslovnú
a navrhnúť, aby do init adresár, ktorý som vytvoril.
Jednou z pekných vecí o pracovať s Express, ako majú
na Laravel je, že je naozaj nie je moc vynútená
na vás conventionalized.
Takže si môžete vytvoriť adresáre -
to naozaj nie je vám oveľa pracovať preč.
Musíš len trochu niektoré základné nastavenie a potom -
ale to nie je jedno, kde ste ich uložili.
Nemusíte mať adresár regulátora.
Nemusíte mať modely adresár, adresár config.
Môžete nejako vytvoriť tie, ktoré sú vaše potreby projektu
a pripraviť veci na cestu že zmysel pre vás najdôležitejšie.
Takže namiesto toho, aby všetky Tento výslovný často používaný
v hlavných app.js som práve povedal, app rovná vyžadujú init / express.
A tak v init,
inicializácia zložka Práve som sa vyjadrí tu,
a to vyžaduje Express, volanie Funkcie nastavenia, volanie -
nastaví zobrazenie motora, JSON parser, všetko.
Takže teraz, poďme pokračovať dole.
Takže som vyžadujúce Kurz inštruktor stretnutia
a požiadavky modely.
Tak to je v zložke, ktorá Len som sa rozhodla názov modelu.
To nemusí byť, že spôsob, ale to dáva zmysel,
ale modely sú len dosť spoločné, takže by som ju odporučiť.
Ale - Tak poďme na kurze.
Myslím, že som pomocou - Jo a príklady
tu sú všetky založené okolo modelu kurzu.
Takže poďme sa len tak pozri sa na to.
Tak, teraz, len z Prvý riadok tohto modelu,
Už som vyžadujúce niečo iné.
Takže ak si všimnete v uzle mali by ste byť vyžadujúce
alebo sa chystáte skončiť vyžaduje veľa
z rôznych súborov ktoré sú umiestnené
v rôznych miestach vo vašej aplikácii.
A relatívne cesty , Nech ste kdekoľvek
v aktuálnej aplikácii,
ak je to na najvyššej úrovni už definovaná ako ho nainštalovať
s MPM, ako regál alebo KNEX alebo Express alebo tak niečo,
ktoré nie sú relatívne.
Áno? Priblížiť viac?
OK. OK. Takže, budete skončiť vyžaduje veľa
zo len rôzne súbory vo vašom kód, ktorý je dobré a zlé.
V dobrom slova zmysle viete, kde veci sú, a nie je to nejako
mágie, čo je deje pod kapotou,
ktoré môžu byť naozaj mätúce
ak máte veľmi ťažký Java -
alebo veľmi ťažká rámec ako Laravel, aký typ hovorí,
budeme starať to preto, že nemáte
požadovať, aby všetko ale máte
vedieť, ako všetko pracuje, aby sa ju používať.
V prípade, ako v tomto prípade, je to veľmi jednoduché, aby sa
kde je všetko, sú to len konce
up je trochu písania.
Rovnako ako v časti I like na použitie, tam je plugin
Ak používate slepý text,
kde môžete inštalovať uzol moduly pomocným a môžete začať
písať ako inštruktora a vytvára relatívnu cestu
kde ste na to Kód súboru, druh užitočné.
Takže, model samozrejme sa vyžaduje základňu tu
a potom základné intern vyžaduje init / policu
a potom regál, je vyžaduje najvyššiu úroveň Knihovnička
a potom inicializuje sa inicializácii KNEX inštancie,
ktorý nastaví názov klienta
a pripojenie nastavenie databázy.
Tak som len pomocou jednoduchého inštancie Sequel Pro, ktorý -
MySQL, mám prístup s Sequel Pre a to má len trochu
z podobného databázy nastaviť ako sme mali
v prvej ukážkovej aplikácie s katalógom kurzu.
Takže, môžem nastaviť pripojenie nastavenie tu,
a tie sú zdokumentované na projektovej stránke Knex.js
ako nastaviť Tieto spoje.
Tak, teraz mám svoj základný model.
A ako som sa zmienil sa zmena prototyp,
tak, že môže skutočne byť trochu veľa -
pridáva veľa často používaný do kódu tak konvencie
, Ktorý bol upravený podľa Backbone.js
a teraz Bookshelf.js je pridať k predĺženiu metódou
ako statická vlastnosť na Vaše objekty JavaScript,
čo mu dáva akúsi takmer class-based dedičstvo prírody
kde ak zavoláte rozšírenie môžete nastaviť akýkoľvek
metód prototypu že by ste tu chceli
a potom môžete - akýkoľvek ďalšie statické metódy
že budete chcieť, môžete stačí nastaviť im sami
tu, takže môžem predĺžiť s - takže ak napríklad
viac modelov potreby zobraziť mená a toto dostať meno.
Takže, tu, hovorím Zobrazovaný názov pre model
V predvolenom nastavení je bez ohľadu na jeho názov vlastnosť je inak návrat
no name.
A teraz na každom model, ktorý je -
ktorá rozširuje túto základný model, Aj Teraz máme spôsob zobrazenie mena
na prototype reťaz niekde.
A keď chcem prepísať Môžem len nastaviť - set čo -
getName tu bude.
A to vám umožní napodobniť klasické dedičstvo
v JavaScripte, ktoré môžu byť pekné, najmä pre veci
ktoré sú samy o sebe sú trieda vychádza ako objektové modely.
Takže poďme skočiť späť do kód aplikácie.
Tak som sa dostal trasu len lomka, len pre moje indexu
a potom lomka kurzy.
A to ako z nich sú volania Metóda renderCourses.
Takže znovu, funkcia prvej triedy a môžu byť odovzdané
ako argumenty metódy.
Takže v tomto app.get, Volám -
Ja som okolo renderCourses ako argument.
A robí - alebo funkcie možno nastaviť ako var -
ako som robil predtým var renderCourses rovná funkciu
alebo môžu byť len funkcie renderCourses.
To nedáva moc veľký rozdiel.
Môžete si skutočne to, čo sa nazývajú názov funkcie
výrazy, ktoré sú var renderCourses rovná
funkcie renderCourses.
A dôvod, prečo chcete mať meno funkcie, najmä
v uzle, je to, že vám čistejšie -
viac čitateľné trasovanie zásobníka.
Takže ak máte veľa
anonymných funkcií to bude hovoriť -
keď máte chybu v kóde Budeš -
nebudete vedieť, ktoré funkcie to volá by ste sa pozrieť
u kódového čísla a číslo riadku
a to je niekedy jednoduchšie len vizuálne analyzovať
keď v skutočnosti majú mená
pre funkcie sami na strane servera.
Takže to renderCourses, hovorme uzla aplikácie -
tak som počúval na Jadro 3000 [fonetický].
A tak to všetko robí správne Tu je len to, aby všetci
kurzy z databázy.
Nebudem to ani obmedzenia tak to robí obrovské množstvo
riadkov to vracia.
A aby to,
na tam modelu kurze je statická vlastnosť
volal kolekcia.
A tak som len hovorím - ja povedal, vytvoriť novú kolekciu
U tohto predmetu, a potom ju vyzdvihnúť,
a potom sa vrátiť kurzy Zbierka tu v zasľúbenie.
Takže interne, David in - posledný pol naučil trochu
o sľuby a sľuby sú používa veľmi ťažko ako KNEX
a Bookshelf, pretože požičiava -
to vám dáva možnosť mať veľa
z rôznych asynchrónnych volaní a nejako spojiť a potom spoločne
alebo priniesť niečo, a potom
s touto výzvou iným asynchrónne volanie databázy
a vráti túto hodnotu a potom prejsť na ďalší potom
a ďalšie potom a potom chytiť na samom konci triediť
mimických asynchrónne try catch správanie s asynchrónnym kódom,
preto, že ste ju videl teraz
ale to je ešte ťažšie, akonáhle začnete sa s ňou vyrovnať.
Asynchrónny kód je jednoducho všade
na strane servera JavaScriptu a naozaj oveľa väčšej miere
ako ste zvyknutí, ak čo ste urobil JavaScript
na strane klienta.
Takže to naozaj, ale naozaj vám pomohol von.
Ale len preto, aby vám ukázať, vyhlásenie debugger
že som hovoril v inšpektor nástrojov uzol,
Chystám sa ísť dopredu a hodiť ladiaci linku tu
vo funkcii renderCourses a uvidíme, kam ma to vedie
keď som - tak uzol Inšpektor môže byť inštalovaný
tým, že robí NPM Inštalovať s G vlajkou,
čo znamená, že Global Uzol Inspector.
A to Prinesiem ju NMP a nainštalujte ju na celom svete
pre vaše aplikácie takže si môžete len hovoriť
z príkazového riadku.
Som už nainštalovaný to tak budem pokračovať a -
v skutočnosti by to mohlo mať počkať, to si vezmem,
mať dve sekundy.
A čo uzol inšpektor zase umožňuje vám
urobiť, je mať tento bezhlavý verzia ladiaci konzolu
ktoré ste zvyknutí pri práci na strane klienta a musí byť schopný
zastaviť, stačí pridať špecifikovaný body v kóde.
Zastaviť realizáciu a vziať pozrite sa na to, čo sa deje,
, Ktorá by mala v skutočnosti príde vhod, ak je funkcia
ako že boli k dispozícii
Pri ladení PHP kód, ktorý som si istý.
Takže poďme sa len tak pozri sa na to.
Tak som si len zavolať uzol inšpektor
a poviem navštíviť túto adresu URL Port 5858 spustiť ladenie,
to je len východiskový ako to naštartuje.
Takže som sa dostal - je tu nič, čo sa tu deje
preto, že musím začať.
Takže uzol bezvýchodisková situácia [fonetický] debug vlajka a potom app.js.
Tak to hovorí debugger počúva na porte 5858,
Expresné servera počúvanie na 3000.
Takže sme v pohode ísť.
Dovoľte mi, aby som obnoviť to.
A teraz vidím app.js kód, ktorý som sa práve pozeral na
ale tu v konzole.
Takže teraz, keď sa snažím spustiť to, môžete vidieť, že sa zastaví.
Je to len čaká, pretože jeho Celá spustenie kódu je teraz
zastavil na tomto debugger riadok, ktorý som tam dal.
A môžem teraz servera -
[Nepočuteľný Poznámka]
Jo, jo. Čo je kľúčové slovo skratka pre zväčšenie obrazovky?
No tam je.
Mám to. OK.
[Pause]
Oh, to nevyzerá [Fonetický], že.
Takže, kurzy je naozaj veľký
pretože ja nerobím ustanovenia alebo niečo obmedziť,
je to len načítanie Celá databázy kurzov
ktoré sú veľa z nich.
A tak - čo je objekt
že v skutočnosti môže zlyhať poznámka inšpektor inštancie.
To je - OK.
Dovoľte mi, aby som to limit a potom môžeme sa pozrieť
ak to nie je načítanie stovky kurzov.
Takže zabiť servera a inšpektor
a ja urobím kurz Otázka kolekcia limit 20.
Takže, regál, na rozdiel od Laravel
kde môžete len zavolať obmedziť priamo alebo zavolať akékoľvek
z týchto metód SQL , Ktorý používate
priamo na inštanciu ORM.
Kedykoľvek sa, že používate iba Metóda SQL, ktorý je k dispozícii
v KNEX, musíte volajte na dotaz triediť
z kohútika do dotazu reťazca.
A to môže byť vyvolaný buď funkcia,
takže môžete povedať, funkcia tento limit 10 alebo si ju zavolať
určením, ktorý Metóda by ste chceli volať
na inštanciu KNEX a potom sa táto hodnota.
Takže ideme na to Limit je 20 a potom nastaviť.
My vlastne nie Potrebujete debugger tu
pretože môžeme len nastaviť zarážky
a že uľahčuje.
Dobrá.
Takže, poďme nastaviť zarážku tu a pokúsiť sa ju načítať.
Zlé vedenie.
Priamo tu.
[Pause]
OK. Takže je to opäť zastavil.
Takže teraz, kurzy je objekt o dĺžke 20
a môžeme vidieť všetky rôzne modely, že je to pritiahnuté za vlasy
z databázy tady tak som dostal model objektu
ktorá má vo vnútri atribúty nehnuteľnosti
na objekte sú všetky tie veci, že je to v databáze nájdený.
Všetky udalosti, ktoré majú zapísaná
takže sa môžete zaregistrovať rôzne akcie,
napríklad keď Model je odstránený
alebo keď je to byť pritiahnuté za vlasy,
môžete nastaviť rôzne vlastnosti alebo zmeniť veci.
Tam je veľa rôznych háčikov a tie sú zdokumentované
v Bookshelf.js dokumentáciu, ktorá vám umožní
robiť akúsi čokoľvek že naozaj chcete robiť
so svojimi modelmi a zbierok.
Môžete si - sú to znamenalo, byť naozaj prispôsobiteľné
a pre rýchle môžete ich upravovať
potrebám vášho aplikácie.
Ale len sa pozerá cez tú,
Vidím to, čo iný kurzy sú k dispozícii.
A v tomto prípade, som vlastne ani načítať
s akýmikoľvek inými dátami, ako len samotné kurzy.
Ale v podobným spôsobom Eloquent ORM môžete nastaviť
sa vzťahy, tak samozrejme Patrí k mnohým inštruktora.
Takže, keď som sa do toho pustite a ukončiť aplikáciu,
skočiť na to načítať hovor, môžete Môžete určiť rôzne možnosti
že by ste chceli odovzdať k nej.
A jedným z nich je schopnosť naložiť súvisiace kód
zadaním withRelated inštruktori potom kurzy.
Takže poďme späť a čerstvé to sem a zastaviť znova.
Takže teraz, kurzy objekt, rovnaký počet modelov,
ale teraz každý model má hash vzťahy
ktorá má inštruktormi že to súvisí.
Takže tento kurz napríklad
čo je samozrejme 082 má dva súvisiace inštruktora modely.
A môžete už vidieť, ako oveľa jednoduchšie, to je triediť
vizuálne pracovať, ako keď máte čo do činenia s vecami
že ste nejako zmeniť kód a potom to skúsiť znova v PHP.
Skutočnosť, že môžete len zastaviť popravu úplne
a vyhodnotiť, čo je tu a - V konzole, -
vzdialite, kurzy je, viete,
čo to miestnej pôsobnosti premenné sú k dispozícii
a to je v súčasnej dobe globálnej objekt, pretože, ako ste ho videli,
ak budete volať s špecifický kontext, že to nebude
mať niečo relevantného tu.
A potom - mi dovoľte, aby som ukázať niekoľko ďalších príkladov
vykonávanie sľuby.
Takže namiesto toho, ako to urobiť withRelated inštruktori tu Mam
ísť ďalej a presunúť tento načítať a potom kurzy,
Chystám sa vrátiť courses.load inštruktori.
A potom - potom budete volať potom.
[Pause]
Takže v tomto bode, kurzy by mali byť načítaný
s inštruktormi, ktoré je asynchrónny akcie.
Ale pretože sme ju vracať od sľubu, ďalšia hodnota
pretože potom je, čo to asynchrónne vráti volanie
ktorý v tomto prípade zaťaženia je metóda regál
že v skutočnosti sa vracia Zbierka sám.
Takže je to načítanie inštruktori tam
a potom môžete zadať - ak je to len jedna vlastnosť,
môžete špecifikovať ako reťazec, inak,
môžete robiť inštruktormi a požiadavky
ako metóda - Ospravedlňujem sa, ako pole.
A potom, ak chcete, aby sa naozaj fantázie a obmedziť akékoľvek
z nich vzhľadom stiahne, môžete môžete zadať ako hash
s inštruktormi a potom to, čo Chcete obmedziť dotaz na.
Takže by som chcel načítať všetky Inštruktori na kurzoch, kde -
takže QB pre Query Builder kde je aktívny stav.
A môžete získať naozaj fantázie s niektorou
zo súvisiacich otázok by ste chceli stavať.
Ale práve teraz, ideme držať sa niekoľkých inštruktormi
a vraciame túto hodnotu
takže potom ďalšie a potom by mal majú všetky kurzy vložený
správne.
A ak došlo k chybe v každom kroku v tomto reťazci,
to by skočiť dole na západku.
Tak poďme do toho a spustiť to.
Takže zakaždým, keď - na rozdiel od PHP, jedna nevýhoda je,
"Pretože uzol" je dlhý beh Proces, čo skutočne potrebujete
k zastaveniu procesu uzla ako si aktualizovať svoj kód,
pretože verzia, ktorá je beží v behu je,
verzia kód, ktorý je načítaný
pri spustení nie je čo máte druh
aktualizovaných kód sa od tej doby.
OK. Budeme nastaviť zarážku tu, tu a refresh.
[Pause]
No, ja vlastne nie obnovte túto stránku buď
tak to bolo na starom procesu.
Takže si aktualizovať ako to a uzol inšpektor.
Takže teraz vidíme kurzy.
Ak budeme len vziať vzorku z jedného z týchto modelov,
môžeme vidieť, že vzťahy Objekt je prázdny, ale teraz -
a dôvod, že budete potrebovať nastaviť zarážky je dobre,
Som sa zmienil, že môžete skok do trasovanie zásobníka
a uvidíte, viete, kde to sa deje v aplikácii.
Takže teraz vidím, čo je deje v metóde zaťažení,
ktoré som definovaná Na zbierok.
Tak nejako "Eager zaťaženie vzťahy na už ".
A môžete krokovať a uvidíte, riadok po riadku
kde toto je deje, čo je skvelé.
Ak máte niečo , Ktorý je rozdelený do kódu,
je to hádzanie nejaké chyby a si ako, naozaj chcem
vidieť, kam to smeruje.
Ale akonáhle sa dostanete do niečo asynchrónne, -
to ide na ďalšiu zaškrtnite slučky udalostí
a vy prídete o - stratíte miesto
v uzle inšpektora.
Takže je potrebné povedať, "OK, akonáhle som stratil to,
treba prestať v Znovu tejto línie. "
"Pretože keď som búšil dole, dole zásobníka,
to bude mať nakoniec len preč už som to nastaviť tento
riadok 22 modrej zlomu riadku.
Takže teraz, keď sa pozerám v kurzoch tu,
by mal na vzťah inštruktori
a potom inštruktori pripojte je.
Takže môžete vidieť, že som sa vrátil sľub od prvého sľubu
a potom môžete priebežne to, že na celej čiare.
Takže rôzne sľub, Sľubujem knižnice,
Použil som jeden s názvom Bluebird čo je naozaj užitočné.
To pridáva veľa pekné to pre zmenu asynchrónne -
meniace sa hovor späť základný kód do veci
že funguje dobre sľuby.
Ale - sorry [nepočuteľný], čo Chcel som, aby to tam povedať.
Poďme sa pozrieť aj keď na -
takže povedzme, že to tam bolo Problém pri načítaní niečo.
Takže mám tú druhú cestu nájsť s názvom kurzu ID.
Takže poďme urobiť kurz 2.
Môžem dostať - JSON kurz.
A to robí [počuť].
[Pause]
Cítim niečo zle tu.
Nie na 3000, bol som na Karta inšpektor Chrome.
OK. Tak poďme na Samozrejme - JSON ihrisko 1.
A to sa vráti len v JSON formát, samozrejme naložené
s niektorými inštruktormi.
Ale napríklad som chcel aby je, že,
Robím JSON kurzu ID.
A v vyniesť parametrov, Ja určenie vyžadujú pravda,
čo je možnosť, ktorá je dokumentované v Bookshelf
kde sa hovorí, že "Je-li, Snažím sa nájsť tento kurz
a to tam nie je, potom hodiť chybu. "
A že by mali byť podchytené catch blok sem.
Tak poďme do toho a skok späť do uzla inšpektora a skúste
a zlomiť to, a vidieť to, čo máme.
Takže poďme nastaviť pauzu tu na ihrisku JSON.
Dobrá.
Pôjdem do JSON kurzu a Ja by som len dať do niektorej z nich -
[Pause]
To môže byť trochu zložitejšie Niekedy, keď sa snažíte
pre správu, ktorý z nich bola aktualizovaná
a ktoré nie - uvidíme.
Takže to volá chybu prázdna odpoveď.
[Pause]
Poďme hodiť debugger tu.
Vzhľadom k tomu, ako uzla skutočne optimalizuje
za behu JavaScript sa tak rýchlo na serveri,
Niekedy uzol debugger má nejaké chyby, keď sa pokúsite
a nastaviť zarážky dynamicky a skutočne potrebujú
použiť debugger a nie riadok po riadku.
Tak uvidíme, či to nám dostane to, čo chceme.
Tak som nastaviť, app.get json samozrejme id,
a ja som nastaviť môj debugger tu
v príkaze catch v spodnej časti.
Fetch vyžadujú pravda, že by - v poriadku, tam ideme, zlomil.
Tak, teraz vidím, že sa zastavil
v tomto poslednom bloku catch pretože withRelated -
alebo preto, že vyžadujú pravda špecifikované a nie je samozrejme
s ID tejto veľkej číslo cez výnimku
ktorý je teraz Emessage.
A každá chyba v JavaScripte má zásobník nehnuteľnosti
ktorý je dodávaný spolu s ním.
Tak to je často užitočné Ak chcete napríklad,
konzoly odhlásiť e.stack.
A ja si skutočne vidieť keď som narazila chybu.
Tak som si chybu prázdny odpoveď, že je to správa
že bola odoslaná cez regál.
Ale teraz, môžem sa pozrieť u, v zásobníku volanie a vidieť
že v Bookshelf dialekty SQL modelu 83,
tento prázdny odpoveď bola vyvolaná chyba.
A to je miesto, kde som už bolo spomenuté, je to bodka anonymný
pretože je to anonymné funkcie.
Keby to bola funkcia názov budete mať lepšie nápady
, Na ktoré fungujú v skutočnosti cez bez toho aby museli ísť
do model.js kódu.
Aj keď to má byť celkom, celkom čitateľné,
tak vidím, že on-line.
Čo hovoria ma bolo linka 83.
Takže, ak je a options.require neexistovala odpoveď,
teraz sa vrhá nové prázdny reakcie na chybu.
Takže môžete vidieť pekne jednoduché, ako to funguje.
A interne regál,
tam sú len celok banda použitie sľubov.
Takže si môžete určiť, Promise.method
s Bluebird knižnicou ktorý udržuje správny kontext
z toho, keď sa vracal sľub.
A tak som sa - mám viazanie Hodnota, ktorú to podobné
k tomu, čo som spomenul predtým, ale s použitím sľubmi
a potom som si - je nový.
To môže byť asynchrónne alebo nie, ak chcem.
A potom som si niektoré ďalšie veci, ktoré môžu byť
alebo nemusí byť asynchrónne a potom druhy skokov dole to.
Takže Promise.all je pomocník, ktorý Mnoho populárnych knižníc majú
kde môžete mať rad potenciálne môže
alebo nemusí byť sľuby.
A akonáhle všetci tí sú dokončené, sa vrátite, že
a potom to skočí na ďalší riadok
a vidíte, ako to v skutočnosti splošťuje pyramídu
že dostanete, callback peklo ako jeho známy
ak robíte všetko s spätné volania riadok po riadku.
Existujú spôsoby, ako sa dostať okolo to, ale sľuby sú jedným
z najlepších spôsobov, ako podľa môjho názoru
naozaj udržať svoj kód čisté a ľahko čitateľné.
Takže to je len krátky Úvod do JavaScriptu
a na regál a KNEX všeobecne.
A ak tam je nejaké otázky, Viem, že to tony materiálu
sa trochu snažiť a kryt najmä preto, že jazyky,
na rozdiel od väčšiny, že ste zoznámiť sa tak len som chcel
aby sa to tak, že aspoň ak máte problémy
s kódom, môžete môže trochu skočiť -
to je to, čo som chcel urobiť, je druh skočiť do knižnice
že som pomocou a pozri ako veci sú štruktúrované.
Je tu ešte jedna, ktoré som sa zmienil predtým volal Backbone.js
a v skutočnosti je to [Nepočuteľné] na strane klienta
pomôcť, aby pohľad modelu Štruktúra regulátora
do svojho kódu.
Ale v skutočnosti má komentovaný zdrojový dokumentácie
ktorý vám umožní trochu vidieť.
Je to naozaj dobre zdokumentované, čo sa deje,
ako sa to rozširovať funkcie Ajax
alebo funkcie udalosť alebo modely a kolekcie druh
vysvetľovať, čo je sa deje v procese.
A ak mi rozumiete základy JavaScriptu
ako prototypal dedičstvo a ako sa používa funkcia
ako oba objekty a hodnoty a triedy a všetko.
To robí to oveľa jednoduchšie pochopiť, čo sa deje
na potenciálne knižnice, ktoré ste pomocou
a ladiaci kód a musí byť schopný nebyť búchanie hlavou
proti múru, pretože nechcete pochopiť, ako
rôzne kusy pracujú, tak.