>> Tehát, azzal, hogy azt mondta,
csak egyfajta egyszerű Bevezetés a prototípusok
és a JavaScript objektum modell.
Nem fogunk váltani fogaskerekek egy kicsit beszélgetni
több, JavaScript a szerver és a könyvespolc könyvtár
és a kapcsolat Knex Könyvtár.
Szóval, akkor valójában csak -
ha keressük Bookshelf.js meg kell nagyon könnyű
megtalálni, legyen az első eredmény, és Könyvespolc
David előbb említett ad egy csomó struktúra
körül JavaScript objektumok és velük dolgozni relációs
relációs adatbázisokban.
Szóval, egy csomó hasonló funkciók aki tényleg erősen ihletett
a Laravel a ORM, mint valamint a Backbone.js,
amely egy front-end MVC könyvtár, amely lehetővé teszi,
a szerkezet a kódot, hasonlóan ahhoz, amit én mutatja
A példa a prototípusok, ahol lehet -
ahelyett, hogy csak önkényesen dobás osztályok
a nézeteit itt-ott.
Ez ad neked modellek gyűjtemény az említett modellek
amelyek állítólag jár a fajta egy ponton az igazság
az adatok az alkalmazás.
És akkor hallgatni, mint modellek változások, azt mondod, OK,
újra-render sablon itt, és ez itt
és nem csak a hozzá osztályban van, hozzá osztályban van, és egyfajta válasszon
A választók és a pókháló jQuery kódot.
Ez ad még egy osztály alapú szerkezete az egyes darabok,
hanem egy fontos eleme a hogy a könyvtár a modellek
amelyek hasonló szerkezetű hogy mit Könyvespolc modellek nem.
Tehát, ha ismeri a Könyvespolc te nagyon is
nagyon ismerős Backbone.js modellek,
, és azt ajánlom vesz egy pillantást.
Így, néhány főbb jellemzői
hogy ad csak a képességét, hogy az adatokat egy objektum
hívni letölteni, ami vissza az egyéni rekord
Az adatbázis létrehozása kapcsolatok, mint a hasonló
hogy mit tárgyalt belül a Laravel
ahol mondjuk egy beteg rekordot állítottunk fel módszer
és azt mondják, ez a nyert rekordot
ahol a rekord objektum táblanév egészségügyi dokumentációba.
Lássuk csak.
Sok - tartozik -
csak a dolog, hogy te nagyon hasonló -
nagyon ismerős már, de a JavaScript.
És a motorháztető alatt, a könyvespolc,
használja a query builder úgynevezett Knex.js.
Szóval, ez Knex, knexjs.org.
Ez egy utalás, hogy a játék, ha bárki valaha is játszottam ezt.
De ez lehetővé teszi, hogy - a Hasonló módon, a jQuery,
csak egyfajta hozzon létre egy lánc különböző módszerek
hogy hívod a adatbázis sort így lehet -
kezdted el azzal, Knex és a tábla neve.
Így például, Knex felhasználók számára, válassza ki kívánt oszlopokat,
hol és különböző, ahol feltételes, és akkor már
És hol, vagy ha ahol a között, ahol nem,
most, le a pályáról.
Megadhat különböző csatlakozik között, az adatbázis táblák
amely Könyvespolc használ belső hogy hozzanak létre egyfajta varázslat
körül hasOne, hasMany, Tartozik, belongsToMany.
És így a kombináció
A két segítségével csinálni elég sok, amit azt kell használni
hogy a keretében, mint a Laravel szempontjából
funkcionalitás dolgozó adatbázisok.
Nos, menjünk előre, és hogy nézd meg egy egyszerű példát
egy Express alkalmazás, amely él az ilyen modellek
és gyűjtemények Könyvespolc jazz [fonetikus].
Így hát, létre csak egy egyszerű alkalmazás itt.
Én megfosztott ki néhány dolgot amit inicializálás Express
és mozgassa, hogy egy init könyvtárat hoztam létre.
Az egyik szép dolog dolgozó Express feltételezett
a Laravel, hogy van tényleg nem sok érvényesíteni
rád konvencionális.
Így létre könyvtárakat -
nem igazán kapsz egy csomó munkát le.
Van most valami bizonyos az alapvető beállításokat, majd -
de nem érdekli ahol őket.
Nem kell, hogy legyen vezérlő könyvtárba.
Önnek nem kell, hogy a modell könyvtár, a config könyvtárat.
Ön a fajta létre ezeket, mint a projekt igényeinek
és a dolgok az utat hogy van értelme a legtöbb az Ön számára.
Tehát ahelyett, hogy az összes kifejezetten erre a boilerplate
a fő app.js én csak mondtam app egyenlő szükség init / expressz.
És így az init,
Az inicializálás mappa Csak még kifejezni itt,
és ez megköveteli Express, a hívások A beállítás funkció meghívja a -
beállítja a nézetet motor JSON parser, minden.
Tehát most, folytassuk le.
Szóval igénylő instruktor találkozó
és követelmények modellek.
Tehát ezek a mappába, Én csak úgy döntött, hogy nevet modellek.
Nem kell, hogy módon, de van értelme,
de a modellek csak szép közös, így azt ajánlom.
De - Akkor menjünk a tanfolyam.
Azt hiszem, a - Ja, és a példák
itt mind alapuló körül a tanfolyam modellt.
Szóval csak úgy egy pillantást.
Szóval, most, csak a első sora ezt a modellt,
Én már elvárják, valami mást.
Tehát, ha észre fogod venni, a csomópont ha kell szükség
vagy te leszel a végén igénylő csomó
A különböző fájlok hogy található
különböző helyeken az alkalmazásban.
És a relatív útvonalak hogy bárhol is van
az aktuális alkalmazás,
kivéve, ha a legfelső szinten már meghatározása szerint telepíti azt
A MPM mint a könyvespolc vagy Knex vagy Express, vagy valami,
azok nem relatív.
Igen? Nagyítás több?
OK. OK. Szóval, fogsz végén igénylő csomó
csak a különböző fájlokat a kódot, ami jó és rossz.
Egy jó módja annak, tudja, hol a dolgok, és ez nem a fajta
a mágia, hogy mi folyik a motorháztető alatt,
ami valóban zavaró lehet
ha van egy nagyon nehéz Java -
vagy nagyon nehéz keretet, mint a Laravel, milyen fajta szerint,
fogunk vigyázni Ennek így nem kell
igényel minden de van
tudni, hogy mindent dolgozik annak érdekében, hogy használja azt.
Ahol, mint ebben az esetben, ez nagyon egyszerű, hogy
ahol minden van, ők csak a végén
fel, hogy egy kicsit több gépelést.
Csakúgy, mint az oldalsó szeretem használni, van egy plugin
ha egy vak szöveg
ahol felszerel a csomópontot modulok helper és elkezdhetjük
a típus, mint oktató és megteremti a relatív útvonal
hogy hol van az, hogy kód fájlt, milyen hasznos.
Tehát, a tanfolyam modell az igénylő alap itt
majd bázis gyakornok igényel init / könyvespolc
majd a könyvespolc, a előírja, hogy a felső szintű Könyvespolc
majd inicializálja azt Az inicializált Knex például
amely meghatározza az ügyfél nevét
és a kapcsolat beállításait az adatbázist.
Szóval, én csak egy egyszerű Például folytatásának Pro, amely -
A MySQL, én elérése azt Folytatást Pro és ez csak egyfajta
egy hasonló adatbázist beállítás ahogy kellett
Az első minta-alkalmazás A kurzus katalógusban.
Szóval, én meg a kapcsolat beállításokat itt,
és ezek mind dokumentált A Knex.js projekt honlapján
, hogy hogyan állítsd ezek a kapcsolatok.
Szóval, most már az alapmodell.
És ahogy már említettem a A prototípus változás,
úgy, hogy ténylegesen hogy milyen sokat -
hozzáteszi, sok boilerplate a kódot, így egyezmény
hogy már alkalmazkodott by Backbone.js
és most Bookshelf.js is adni ezt kiterjeszteni a módszer
statikus ingatlan A JavaScript objektumok,
ami azt a fajta szinte osztály-alapú örökséget természet
ahol, ha hívás kiterjesztése is beállíthat bármilyen
a prototípus módszerek , hogy szeretne itt
És akkor - bármilyen extra statikus módszerek
, hogy érdemes, akkor csak meg őket magatokat
itt így tudok kiterjesztése az - így ha például
többféle modell szükséges megjelenítendő nevet, ez kap nevet.
Szóval, itt, azt mondom, a megjelenítési név modell
alapértelmezésben bármi a neve ingatlan egyébként visszatérés
nincs neve.
És most minden modell, amely egy -
hogy kiterjeszti ezt alapmodell, én Most már van egy megjelenítési nevet módszer
A prototípus lánc valahol.
És ha azt akarom, hogy felülírja azt Én csak meg, hogy - set mi -
getName lenne itt.
És ez lehetővé teszi, hogy utánozza klasszikus örökség
JavaScript, ami lehet szép különösen a dolgokat
amely alkalmas arra, hogy osztály alapú, mint objektum modellek.
Akkor ugorjunk vissza az alkalmazás kódját.
Szóval van egy út csak slash, csak az én index
majd perjel tanfolyamok.
És mindkét hív A renderCourses módszer.
Tehát még egyszer, funkciók első osztályú és átadhatók
argumentumként módszerek.
Szóval, ebben a app.get, Hívom -
Én elhaladó renderCourses az érvelés.
És teszi - vagy funkciók lehet állítani, mint a var -
ahogy csináltam korábban var renderCourses egyenlő funkció
vagy lehet csak funkció renderCourses.
Ez nem teszi túl sok a különbség.
Akkor valójában mit nevezik név funkció
kifejezések, amelyek var renderCourses egyenlő
funkció renderCourses.
És az ok, hogy szeretné, hogy név Funkciók különösen
A csomópont az, hogy ad egy tisztább -
olvashatóbb verem.
Tehát, ha van egy csomó
anonim függvényekkel azt fogja mondani, -
ha van egy hiba a kód Nem fogod -
akkor nem tudja, hogy melyik funkció ez hív azt kell nézni
A kódszám és a sor számát
és ez néha könnyebb csak azért, hogy vizuálisan elemezni
ha valóban van neve
A funkciók magukat a szerver oldalon.
Szóval ez renderCourses, nevezzük node apps -
úgyhogy figyel Core 3000 [fonetikus].
És mindez csinálsz itt csak arra, hogy a
tanfolyamok az adatbázisból.
Én nem is korlátozza azt így csinál egy nagy szám
A sorok ez visszatér.
És annak érdekében, hogy ezt,
a pályán modellben egy statikus tulajdonság
nevű gyűjtemény.
És így én csak ez - I szerint hozzon létre egy új gyűjtemény
a kurzus, majd hozd el,
, majd vissza a tanfolyamok gyűjtemény itt az ígéret.
Tehát belsőleg, Dávid - a utolsó fél tanított egy kicsit
a ígéretek és ígéretek igen sűrűn használják mind Knex
és Könyvespolc mivel kölcsönöz a -
ez adja az képesség, hogy egy csomó
A különböző aszinkron hívások és egyfajta csatlakozik, akkor együtt
vagy letölteni valamit, majd a
azzal a hívás egy másik aszinkron adatbázis hívás
és vissza, hogy az érték és akkor ugorjon a következő, majd
és a következő, majd, majd egy elkapni a legvégén rendezni
A mimikai aszinkron try catch viselkedés aszinkron kódot,
mert látunk most
de ez még nehezebb, ha elkezd foglalkozni vele.
Aszinkron kód csak mindenütt
A szerver oldali JavaScript és Tényleg sokkal nagyobb mértékben
mint van szokva, ha tettél JavaScript
a kliens oldalon.
Szóval ez nagyon, nagyon segített odakint.
De csak azért, hogy mutassa meg, A debugger adatok
, hogy én beszélek a a csomópont ellenőr eszközök,
Én megyek előre, és dobj egy debugger vonal itt
A renderCourses funkció és hol vezet engem
amikor - olyan csomópont ellenőr telepíthető
ezzel NPM telepítése a G zászló,
ami azt jelenti, Global Node felügyelő.
És akkor hozd azt NMP és telepítse globálisan
az alkalmazások így csak nevezni
a parancssorból.
Én már telepítve úgy megyek előre, és -
valójában lehet, hogy kell várni, hogy majd csak úgy,
hogy két másodpercig.
És mi node ellenőr újra lehetővé teszi, hogy
kell tennie, hogy ezt a fejetlen változata a hibakereső konzol
hogy van szokva, hogy ha dolgozik A kliens oldalon, és képes
hogy hagyja abba, csak add meg rámutat a kódban.
Állítsa végrehajtását, és hogy a nézd meg, mi folyik itt,
ami tényleg jól jöhet, ha a szolgáltatás
így álltak
ha hibakeresését PHP kódot Biztos vagyok benne.
Szóval csak úgy egy pillantást.
Szóval csak hívni node ellenőr
és azt mondom, látogasson el a következő címet port 5858 kezdeni hibakeresés,
ez csak az alapértelmezett hogyan elindul.
Szóval, már most van - van semmi nem történik itt
mert kell kezdeni.
Tehát node zsákutcából [fonetikus] a hibakereső zászlót, majd app.js.
Tehát azt mondja, debugger porton 5858,
Express server hallgatás a 3000.
Tehát még jól jöhet.
Hadd csak frissíteni ezt.
És most látom a app.js kódot, hogy én csak néztem
de itt a konzol.
Tehát most, ha megpróbálom futtatni ezt, látod, megáll.
Ez csak arra vár, mert a egész kódfuttatást most
megállt ezen a debugger sort, hogy már fel oda.
És én most server -
[Hallható Megjegyzés]
Ó, igen. Mi az a kulcsszó parancsikon zoom képernyőn?
Ó van.
Megvan. OK.
[Szünet]
Ó, ez nem néz [Fonetikus] ezt.
Tehát, tanfolyamok nagyon nagy
mert én nem csinálom a korlátozza záradék vagy ilyesmi,
ez csak elragadó a teljes adatbázist tanfolyamok
amelyek sok közülük.
És így - ami objektum
hogy valóban esetleg összeomlik A jegyzet ellenőr például.
Ez - OK.
Hadd tegyek egy határt, és akkor vessen egy pillantást
ha ez nem vonzó több száz tanfolyamok.
Tehát, öld meg a szerver és ellenőr
és én megteszem természetesen gyűjtemény lekérdezési limit 20.
Tehát, a könyvespolc, ellentétben Laravel
ahol csak hívja korlátozza közvetlenül vagy hívása
Ezeknek SQL módszerek hogy használja
hogy közvetlenül a ORM példány.
Bármikor, hogy az Ön által használt csak SQL-módszer, amely biztosítja
A Knex, meg kell hívja a lekérdezés rendezni
A bekapcsolódjanak a lekérdezés lánc.
És ez lehet hivatkozni akár egy funkciót,
így mondhatjuk, funkció ez a határ 10 vagy hívják
megadásával, amely módszert szeretne hívni
A Knex esetben majd amelynek értéke.
Így fogunk tenni korlátozza 20 és állítsa be.
Igazából nem kell debugger itt
mert csak töréspont
és amely megkönnyíti.
Rendben van.
Nos, nézzük meg egy töréspontot itt és próbálja betölteni azt.
Rossz sorban.
Itt van.
[Szünet]
OK. Így ismét megállt.
Tehát most, tanfolyamok egy tárgy, hossza 20
és láthatjuk a különböző modelleket, hogy ez túlzás
az adatbázisból itt így kaptam egy modellt tárgy
amely, belül a attribútumok ingatlan
A tárgy a dolgok hogy ez található az adatbázisban.
Minden olyan események, amelyek regisztrált
így lehet regisztrálni különböző események,
például amikor az modell törlődnek
vagy ha ez is túlzás,
akkor különböző tulajdonságok vagy módosítani a dolgokat.
Van egy csomó más horgok és ezek mind dokumentált
A Bookshelf.js dokumentációt, amely lehetővé teszi,
tenni a fajta semmit amit igazán akarok
a modellek és gyűjtemények.
Lehet - ők azt jelentette, hogy igazán testreszabható
és nagyon könnyű hogy igazodjanak
hogy az igényeinek alkalmazás.
De csak néz át itt,
Látom, mi a különböző tanfolyamok állnak rendelkezésre.
És ebben az esetben, azt valójában nem hozza
bármilyen más adat más, mint csak a tanfolyamok magukat.
De hasonló módon az ékesszóló ORM beállíthatja
a kapcsolataikat, így a kurzus tartozik számos oktató.
Tehát, ha úgy megy előre, és megáll az alkalmazást,
ugrás erre letölteni hívást, adhat meg különböző lehetőségeket
hogy szeretne végigvezet hozzá.
Az egyik ezek közül a képes betölteni kapcsolódó kód
megadásával withRelated oktatók majd kurzusokat.
Szóval menjünk vissza, és a friss ez itt, és ne újra.
Tehát most, a tanfolyamok tárgy, azonos számú modell,
de most minden egyes modell egy kapcsolat hash
amely az oktatók hogy ez kapcsolatos.
Szóval ez a kurzus, például
ami természetesen 082 két kapcsolatos oktató modellek.
És akkor már látni, hogyan sokkal könnyebb ezt rendezni
vizuálisan dolgozni, mint ha van dolgunk, a cucc
hogy a fajta változás kód majd próbálja újra a PHP.
Az a tény, hogy ha csak megáll végrehajtás teljes
és értékelni, mi van itt, és az - a konzol, a -
kicsinyítés, tanfolyamok, tudod,
mi, hogy a helyi kör változó áll rendelkezésre
és ez a jelenleg a globális objektumot, mert ahogy látta,
hacsak nem hívja a adott összefüggésben, ez nem fog
hogy valami fontos itt.
És akkor, a - hadd mutatnak néhány példát
végrehajtási ígér.
Tehát ahelyett, hogy ezt a withRelated oktatók itt vagyok
megyek előre, és mozgatni ezt hogy hozza majd a tanfolyamok,
Megyek vissza courses.load oktatók.
És aztán -, akkor hívja majd.
[Szünet]
Tehát akkor ezen a ponton, a tanfolyamokat kell betölteni
az oktatók, amely aszinkron művelet.
De mivel mi vissza is egy ígéret, a következő érték
mert akkor az, amit ez a aszinkron hívás visszatér
ami ebben az esetben terhelés egy olyan módszer, a könyvespolc
hogy valóban visszatér a gyűjtemény is.
Szóval ez betölti a oktatók ott
és akkor megadhatja - ha csak egy tulajdonság,
megadhatja ezt string, egyébként
meg tudod csinálni oktatók és követelmények
mint módszer - sajnálom, tömbként.
És aztán, ha azt szeretnénk, ha nagyon divatos és korlátozzák bármely
Ezeknek adott a letöltések, akkor adható meg, mint egy hash
az oktatók és akkor mi szeretné, hogy korlátozza a lekérdezést.
Így szeretnék betölteni az összes oktatók a tanfolyamok, ahol -
így QB a query builder ahol az állapot aktív.
És akkor igazán képzelet minden
A kapcsolódó lekérdezések szeretne építeni.
De csak most, megyünk ragaszkodni, hogy csak oktatók
és mi vissza, hogy az értéket
így aztán a következő, akkor kell az összes kurzus betöltött
fel rendesen.
És ha nem volt hiba minden lépés a lánc,
akkor ugrik le a fogás.
Szóval menjünk előre, és fuss, hogy.
Így minden alkalommal - ellentétben PHP, egyetlen hátránya a
"Mert a csomópont" egy hosszú futás folyamat, hogy tényleg szükség van
megállítani a csomópont folyamat ahogy frissítse a kódot,
mivel ezzel a verzióval, hogy ez fut a futási idő,
a változat a kód volt betöltött
indításkor nem mit sort
frissített a kódot az azóta.
OK. Majd meg egy töréspontot itt, itt és a frissítés.
[Szünet]
Ó, én tényleg nem frissíteni ezt az oldalt sem
így volt a régi folyamat.
Szóval frissíteni mind ezt a és a csomópont ellenőr.
Tehát most látunk tanfolyamok.
Ha csak vesz mintát Az egyik ilyen modell,
láthatjuk, hogy a kapcsolatok objektum üres, de most -
és az ok, hogy szükség van beállítani töréspontok, nos,
Már említettem, hogy akkor ugorj be a stack trace
és látni tudod, hol ez lesz a kb.
Így most már látom, mi van történik a terhelés módszer,
amit már definiált A gyűjtemények.
Ez a fajta "Buzgó rakományról kapcsolatok-ra már ".
És akkor menj végig és nézd meg soronként
ahol ez a cucc lesz, ami nagyszerű.
Ha van valami hogy eltört a kódot,
ez dobott néhány hibát, és te, mint én nagyon szeretnék
hogy hol ez megy.
De amint befut valami aszinkron, a -
megy a következő jelölje be az esemény hurok
és akkor elveszíti a - Ön elveszíti a helyét
a csomópont ellenőr.
Tehát meg kell mondani, "OK, ha egyszer elveszítem ezt,
szükséges, hogy ne most ezen a vonalon újra. "
Mert ha én ütöttem le, le a verem,
Ez lett végül csak elment volt, én nem beállítani ezt
22. sor kék törés vonalon.
Tehát most, ha jól néz ki A tanfolyamok itt,
kellene a kapcsolat oktatók
, és ezt követően a oktatók csatolni.
Szóval, akkor láthatjuk, hogy visszatértem ígéretet az első ígéret
és akkor is folyamatosan Ehhez le a pályáról.
Így a különböző ígéret, Megígérem könyvtárak,
Én egy úgynevezett Bluebird ami igazán hasznos.
Hozzáteszi, sok szép ez A változó aszinkron -
változó visszahívás alap kódot a cucc
hogy jól működik ígéretekkel.
De - sajnálom [nem hallható] milyen Azt akartam mondani, hogy ott.
Vessünk egy pillantást bár a -
Tehát mondjuk, hogy volt egy probléma, ha valami elragadó.
Szóval van ez a másik út találni az úgynevezett kurzus azonosító.
Tehát lássuk kurzus 2..
Kaphatok - JSON természetesen.
És ez nem [hallható].
[Szünet]
Érzek valami baj van.
Nem a 3000, én voltam A Chrome ellenőr fülre.
OK. Szóval menjünk a Természetesen - JSON kurzus 1..
És ez vissza csak JSON formátumban, a tanfolyam betöltött
fel néhány oktatók.
De a példa, amit akartam hogy itt az, hogy
Csinálok JSON persze ID.
És a fetch paraméterek, Én megadása szükséges igaz,
amely egy olyan lehetőség, ami dokumentált Könyvespolc
ahol ez azt mondja, hogy: "Ha, Én megpróbálja megtalálni a kurzus
és nem ott, majd dobja a hibát. "
És hogy kell fogott A catch blokk idelent.
Szóval menjünk előre, és ugorj vissza a csomópont ellenőr, és próbálja
és megtöri ezt, és mi kaptunk.
Tehát nézzük meg egy kis szünetet itt a JSON kurzus.
Rendben van.
Elmegyek JSON tanfolyamot, és Én csak fel néhány -
[Szünet]
Ez lehet egy kicsit trükkös néha, amikor akarsz
kezelni melyik már felfrissült
és amelyek nem - lássuk.
Szóval ez hív hiba üres választ.
[Szünet]
Dobjuk a debugger itt.
Mert milyen csomópont valójában optimalizálja
A JavaScript futásidejű hogy olyan gyorsan a szerveren,
Előfordul, hogy a csomópont debugger van néhány hiba, amikor megpróbálja
és állítsa töréspontok dinamikusan és hogy tényleg szükséged van
hogy egy nyomkövető és nem line-by-line.
Szóval ha ez a lesz számunkra, amit akarunk.
Így hát elindult, app.get JSON természetesen id,
és én megadom a debugger ott
a fogási adatok az alján.
Fetch szükség igaz, ahogy kellene - Rendben, ott vagyunk, tört.
Szóval, most látom hogy megállt
ebben az utolsó catch blokk mert a withRelated -
vagy azért, mert a valódi igényelnek megadva és nincs természetesen
azonosító ebben a nagy szám a kivétel
amely most Emessage.
És minden egyes hiba a JavaScript van egy halom ingatlan
hogy jön vele.
Tehát ez gyakran hasznos, Ahhoz, hogy például a
konzol log out e.stack.
És én valóban látni amikor elütöttem egy hiba.
Szóval kapok üres válasz, hogy ez az üzenet
amit küldött könyvespolc.
De most, vessen egy pillantást a, a hívás verem, és látni
hogy Könyvespolc dialektusok SQL modell 83,
az üres válasz hiba dobták.
És ez az, ahol én említettük, ez pont névtelen
mert ez egy névtelen funkciót.
Ha ez a név funkció akkor jobb ötletek
, amely működik valójában keresztül, anélkül, hogy menjen
a model.js kódot.
Bár ez azt jelentette, hogy meglehetősen, eléggé olvasható,
így látom, hogy az online.
Mit mondtak volt számomra sor 83..
Tehát, ha options.require és A válasz nem létezik,
most dob ​​egy új üres választ hiba.
Tehát látható, elég egyértelmű, hogy hogyan működik.
És belsőleg könyvespolc,
ott is csak egy egész csomó használata ígéretek.
Így megadhatja Promise.method
A Bluebird könyvtár amely megtartja a megfelelő kontextusban
e mellett visszatérő ígéret.
És így én - én kötelező ennek az értéke hasonló
hogy mit fogok említettem korábban, de a ígéretek
, és akkor én is - új.
Ez lehet aszinkron , vagy nem, ha akarok.
Aztán némi más dolog, amely lehet
vagy nem lehet, és aszinkron akkor fajta ugrik le ezt.
Tehát Promise.all egy segítőt, hogy sok népszerű könyvtárak
ahol van egy array potenciálisan lehet
vagy nem ígér.
És ha minden ezek befejeződött, visszatér, hogy
és akkor ugrik a következő sorra
, és láthatod, hogy tényleg ellaposodik a piramis
hogy kapsz, a callback pokol az ismert
ha csinálsz mindent A visszahívások soronként.
Több lehetőség is van, hogy körül azt, hanem ígéretek egy
A legjobb módja a véleményem
hogy valóban tartani a kódot tiszta és könnyen olvasható.
Tehát ez csak egy rövid Bevezetés a JavaScript
és könyvespolc és Knex általában.
És, ha van bármilyen kérdése van, Tudom, hogy egy csomó anyag
az a fajta megpróbálja fedél különösen azért, mert a nyelv,
Ellentétben a legtöbb, amit a ismeri, így én csak azt akartam
annak érdekében, hogy úgy, hogy legalább ha problémái
a kódot, Valahogy ugrani -
ez az, amit szeretek csinálni, az egyfajta ugorj be a könyvtárak
, hogy én vagyok használ, és látni a dolgok épülnek.
Van egy, amit már említettem korábban az úgynevezett Backbone.js
és valóban ez [Érthetetlen] a kliens oldalon
segíteni hogy a modell nézet szabályozási struktúra
a kódot.
De ez valójában annotált dokumentáció forrását
, amely lehetővé teszi, hogy a fajta látni.
Ez igazán jól dokumentált, mi folyik itt,
hogyan is bővítésére Az Ajax funkciókat
vagy az esemény funkciók vagy A modellek és gyűjtemények sort
elmagyarázza, mi a folyik a folyamatban.
És ha érti az alapokat a JavaScript
mint a prototypal örökség és milyen funkciókat használnak
mind tárgyak és értékek és osztályok minden.
Azt teszi, hogy sokkal könnyebb hogy megértsük, mi folyik
a potenciálisan a könyvtárakat, hogy a 'használ
és hibakereső kódot, és képes hogy nem dörömböl a fejét
a falnak, mert nem érti, hogy a
különböző darabokat dolgozik, így van.