>> Dus, met dat gezegd zijnde,
gewoon soort van een eenvoudige kennismaking met prototypes
en de JavaScript-object model.
We gaan niet te verschuiven versnellingen een beetje te praten
over meer JavaScript op de server en de Bookshelf Bibliotheek
en de verbinding Knex Bibliotheek.
Dus, kun je eigenlijk alleen maar -
als je zoekt naar Bookshelf.js het moet vrij gemakkelijk
te vinden, moet eerst worden resultaat, en Bookshelf
als David genoemd net geeft veel structuur
rond JavaScript-objecten en werken met hen relationeel
in relationele databases.
Dus veel soortgelijke functies wie is eigenlijk zwaar geïnspireerd
door Laravel's ORM als evenals de Backbone.js,
dat is een front-end MVC bibliotheek die u toelaat
om uw code te structureren, vergelijkbaar met wat ik liet zien
de voorbeelden van de prototypes waar u -
plaats van willekeurig gooien klassen
op uw standpunten hier en daar.
Het geeft je modellen en collecties van deze modellen
die worden geacht op te treden als soort van een enkel punt van de waarheid
de gegevens uw toepassing.
En dan moet je luisteren naar, als die modellen verandert, zeg je, OK,
opnieuw maken deze sjabloon hier en deze hier
en niet alleen klasse toe te voegen hier, voeg klasse er en soort van pick
op selectors en maken de spinnenweb van jQuery code.
Het geeft meer een class-based structuur individuele stukken,
maar een belangrijk onderdeel van die bibliotheek is de modellen
die een soortgelijke structuur wat Bookshelf modellen doen.
Dus, als je bekend bent met het bent Boekenplank je behoorlijk ook
redelijk bekend is met Backbone.js modellen
en ik zou aanraden het nemen van een kijkje op deze.
Dus, enkele van de belangrijkste functies
dat het geeft je gewoon de mogelijkheid om gegevens die op een object
bellen halen, die retourneert een individuele fiche
uit de database te creëren betrekkingen gelijkaardige
om wat je behandeld binnen in Laravel
waar je kunt zeggen een patiënt een record methode
en zeggen dat dit verslag gewonnen
waar het record object tabelnaam medische dossiers.
Laten we eens kijken.
Heeft vele - het behoort tot -
gewoon dingen die je bent redelijk vergelijkbaar -
redelijk bekend is met al, maar in JavaScript.
En onder de motorkap, voor Bookshelf,
het maakt gebruik van een query builder riep Knex.js.
Dus, dat is Knex, knexjs.org.
Het is een verwijzing naar het speelgoed als iemand ooit gespeeld met dit.
Maar het laat je - in een vergelijkbare manier, jQuery,
je gewoon soort van creëren een keten van verschillende methoden
die u belt op uw databank rij, zodat u kunt -
je uit door te zeggen begonnen Knex en de naam van de tabel.
Dus, bijvoorbeeld, Knex gebruikers, selecteren welke kolommen u wilt,
waar, en hebben verschillende waar conditionele en je kunt hebben
En waar of wanneer, waartussen indien niet,
u nu, langs de lijn.
U kunt verschillende joins opgeven tussen uw database tabellen
die Bookshelf Intern gebruikt het opzetten van een soort van magie
rond de hasOne, hasMany, Hoort, belongsToMany.
En dus is de combinatie
van de twee laten doen vrij veel wat je zou worden gebruikt
in kader zoals Laravel in termen
functionaliteit werken met databases.
Dus, laten we gaan je gang en neem een blik op een eenvoudig voorbeeld
voor een Express app die maakt gebruik van deze modellen
en collecties van Boekenplank jazz [fonetisch].
Dus, heb ik het opzetten van slechts een eenvoudige toepassing hier.
Ik ontdaan uit een aantal van de dingen dat was het initialiseren uitdrukkelijke
en zet die in een init directory die ik heb gemaakt.
Een van de leuke dingen over werken met Express zoals het hoort
om Laravel is dat er echt niet veel afgedwongen
op je conventionalized.
Zo kunt u mappen maken -
het niet echt je geeft heel veel te werken off van.
Je hebt net een soort van sommige kreeg basisinstellingen en vervolgens -
maar het maakt niet uit waar je ze.
Je hoeft niet te hebben directory controller.
U hoeft niet naar een modellen directory, een config.
U kunt soort creëren die als uw project behoeften
en zet dingen op de weg die het meest zinvol voor u.
Dus in plaats van alle deze uitdrukkelijke standaardtekst
in de belangrijkste app.js ik net zei app gelijken vereisen init / express.
En zo in de init,
het initialiseren map Ik heb net hier Express,
en dit vereist Express, gesprekken de setup-functie, noemt de -
zet het uitzicht motor, JSON parser, dat allemaal.
Dus nu, laten we verder naar beneden.
Dus ik ben die de cursus instructeur vergadering
en eisen modellen.
Zodat deze zijn in een map die Ik heb net besloten om de naam van modellen.
Het hoeft niet zo te zijn dat manier kan het echter wenselijk,
maar modellen is alleen maar mooi gemeenschappelijke dus zou ik het aanraden.
Maar - Dus laten we gaan voor de cursus.
Ik denk dat ik met behulp van - ja, en de voorbeelden
hier beneden zijn allemaal gebaseerd rond de cursus model.
Dus laten we gewoon een kijken.
Zo, nu, net van de eerste regel van dit model,
Ik ben al die iets anders.
Dus als je bericht in knooppunt je moet die
of je gaat eindigen die een hele hoop
verschillende bestanden die zich
op verschillende plaatsen in uw toepassing.
En de relatieve paden om waar je ook bent
in de actieve toepassing,
tenzij het is een top level al gedefinieerd als in je het installeert
met MPM zoals Bookshelf of Knex of Express of iets,
die zijn niet relatief.
Ja? Zoom in meer?
OK. OK. Dus, je gaat uiteindelijk die een hele hoop
van slechts verschillende bestanden in uw code, die is goed en slecht.
Op een goede manier je weet waar dingen zijn en het is niet een soort
van magie over wat er gaande onder de motorkap,
die echt verwarrend kan zijn
wanneer u een zeer zware Java -
of zeer zware kader zoals Laravel, welke soort van zegt,
we gaan zorgen dit dus hoef je niet
aan alles eisen maar je hebt
om te weten hoe alles werkt om het te gebruiken.
Waar zoals in dit geval, het is zeer eenvoudig om
waar alles is, ze zijn gewoon uiteinden
up een beetje meer te typen.
Net als in de zijkant ik graag te gebruiken, is er een plugin
als je een blinde tekst te gebruiken
waar u het knooppunt kunt installeren modules helper en u kunt beginnen
te typen als instructeur en creëert het relatieve pad
naar de plaats waar je bent om dat codebestand, vorm van nuttige.
Dus, de cursus model eist basis hier
en dan base stagiair vraagt ​​init / boekenplank
en vervolgens de Boekenkast, het vereist het hoogste niveau Bookshelf
en initialiseert het dan met de geïnitialiseerd Knex bijvoorbeeld
die de naam cliënt verwijst
en de verbinding instellingen voor de database.
Dus ik ben alleen met behulp van een eenvoudige exemplaar van Sequel Pro die -
van MySQL, ik ben het met de toegang tot Sequel Pro en het heeft gewoon soort
soortgelijke databank opstelling als we hadden
in het eerste voorbeeld applicatie met de studiegids.
Dus, stel ik mijn verbinding hier,
en deze zijn allemaal gedocumenteerd op de projectpagina Knex.js
over hoe te installeren deze verbindingen.
Dus, ik heb nu mijn basismodel.
En als ik met genoemde het prototype verandering,
dus dat kan eigenlijk zijn soort veel te -
voegt veel standaardtekst uw code, zodat conventie
die aangepast door Backbone.js
en nu Bookshelf.js is toe te voegen dit uit te breiden methode
als een statische eigenschap op uw JavaScript-objecten,
waardoor het een soort van bijna geeft -klasse gebaseerde overerving natuur
waar als je belt heten u kunt maximaal een
het prototype methoden dat je hier wilt
en dan kun je - elke extra statische methoden
die je zou willen, je kunt gewoon zet ze zelf
hier dus kan ik het verlengen met - dus als bijvoorbeeld
meerdere modellen nodig tonen naam en dit te krijgen naam.
Dus, hier, ik zeg het weergavenaam voor model
standaard is, ongeacht zijn naam eigendom is anders terugkeer
geen naam.
En nu op elke model dat een -
dat breidt dit basismodel, ik hebben nu een naam weergavemethode
het prototype keten ergens.
En als ik wil om het te overschrijven Ik kan het gewoon instellen - stellen wat -
getName hier zou zijn.
En het laat je om na te bootsen klassieke erfenis
in JavaScript die kan worden mooi vooral voor dingen
die zich lenen zijnde klasse gebaseerd achtig object modellen.
Dus laten we springen weer in de applicatie code.
Dus ik heb een route voor net slash, alleen voor mijn index
en dan slash cursussen.
En beide belt de renderCourses methode.
Dus nogmaals, functies eerste klasse en kunnen worden doorgegeven
als argumenten methoden.
Dus, in dit app.get, Ik bel -
Ik passeren renderCourses als het argument.
En maken - of functies kan worden ingesteld als var -
zoals ik deed eerder var renderCourses gelijk functie
of ze kunnen gewoon functie renderCourses.
Het niet te maken veel van een verschil.
Je kunt eigenlijk hebben wat zijn naam functie genaamd
uitdrukkingen, die var renderCourses gelijken
functie renderCourses.
En, de reden om te willen hebben Naam Functies bijzonder
in knoop is dat het geeft u een schonere -
leesbaarder stack trace.
Dus als je een hele hoop
van anonieme functies zal het zeggen -
als je een fout in je code u zult -
weet u niet welke functie het roept je zou moeten kijken
bij het codenummer en het regelnummer
en het is soms makkelijker gewoon om visueel te ontleden
wanneer je daadwerkelijk hebben namen
voor de functies zich op de server.
Dus dit renderCourses, laten we noemen knooppunt apps -
dus ik luister op Core 3000 [fonetisch].
En dus dit alles is goed doen hier is net alle
vakken uit de database.
Ik ben niet eens te beperken dus het doet een groot aantal
rijen het is terug te keren.
En om dit te doen,
op de cursus model is er is een statische eigenschap
een collectie genoemd.
En dus ik noem het - I zei een nieuwe collectie
voor deze cursus, en haal het dan,
en dan terug de cursussen collectie hier in de belofte.
Dus intern, David in - de laatste helft leerde een beetje
over beloften en beloften zeer intensief wordt gebruikt in zowel Knex
en Bookshelf omdat leent de -
het u het geeft mogelijkheid om een ​​bos hebben
van verschillende asynchrone oproepen en soort join dan samen
of halen iets, en vervolgens
met dat gesprek een andere asynchrone databank oproep
en terug te keren die waarde en spring dan naar de volgende dan
en volgende dan en dan een vangen aan het einde te sorteren
van mimische asynchrone try catch gedrag met asynchrone code,
omdat je nu ziet het
maar het is nog moeilijker keer je begint om te gaan.
Asynchrone code is gewoon overal
in server-side JavaScript en echt een veel grotere mate
dan je gewend bent als je hebt Javascript gedaan
op de client zijde.
Dus dat echt, echt je geholpen daar.
Maar gewoon om te laten zien de debugger verklaring
dat ik het over had in het knooppunt inspecteur gereedschappen,
Ik ga om te gaan en gooi een debugger lijn hier
in de renderCourses functie en zie waar dat brengt me
als ik - dus knooppunt inspecteur kan worden geïnstalleerd
door het doen van NPM Install met een G vlag,
die Global betekent Node Inspector.
En het zal het halen voor NMP en installeer het wereldwijd
voor uw toepassingen dus je kunt gewoon noemen
vanaf de opdrachtregel.
Ik heb al geïnstalleerd dus ik zal doorgaan en -
eigenlijk zou kunnen hebben wachten het duurt maar,
neem twee seconden.
En wat knooppunt inspecteur weer kunt u
te doen is hebben dit zonder hoofd versie van de debugger console
dat u gewend bent bij het werken op de client en in staat
om te stoppen, voeg gespecificeerd punten in de code.
Stop uitvoering en neem een kijken naar wat er gaande is,
die werkelijk zou hebben van pas komen als de functie
zoals die beschikbaar waren
bij het oplossen van uw PHP code die ik ben er zeker van.
Dus laten we gewoon een kijken.
Dus ik kan gewoon bellen knooppunt inspecteur
en het zal zeggen: bezoek deze URL poort 5858 te debuggen beginnen,
dat is gewoon de standaard voor hoe het begint.
Dus, heb ik nu heb - er is niets aan de hand hier
want ik moet beginnen.
Dus knooppunt impasse [fonetisch] de debug flag en vervolgens app.js.
Dus het debugger zegt luisteren op poort 5858,
Express server luisteren op 3000.
Dus we zijn goed om te gaan.
Laat me dit gewoon vernieuwen.
En nu kan ik de app.js zien code die ik was op zoek naar
maar hier in de console.
Dus nu, als ik probeer om dit uitvoeren, je kunt het zien, het stopt.
Het is gewoon wachten omdat de volledige uitvoering van code is nu
gestopt op deze debugger lijn die ik daar heb gezet.
En ik kan nu server -
[Onhoorbaar Opmerking]
Oh, ja. Wat is het sleutelwoord snelkoppeling naar het scherm te vergroten?
Oh er is.
Hebbes. OK.
[Pauze]
Oh, het is niet op zoek [Fonetisch] dat.
Dus, cursussen is echt groot
want ik ben niet een doe beperken clausule of iets,
het is gewoon het ophalen van de gehele database van cursussen
die zijn veel van hen.
En dus - en dat is voorwerp
die daadwerkelijk kan crashen de notitie inspecteur instantie.
Het is - OK.
Laat mij een grens en dan kunnen we een kijkje nemen
wanneer het niet ophalen honderden cursussen.
Dus, de dood van de server en inspecteur
en ik zal natuurlijk doen collectie querylimiet 20.
Dus, in Bookshelf, in tegenstelling tot in Laravel
waar je gewoon kunt bellen beperken direct of bellen ieder
deze methoden SQL die u gebruikt
direct op de instantie ORM.
Anytime dat je met slechts SQL methode die is voorzien
in Knex, moet je roepen de query te sorteren
van boren in de query keten.
En dit kan worden ingeroepen met ofwel een functie,
dus je kunt, functie zeggen deze limiet 10 of je het ook noemt
door te geven welke methode die u wilt bellen
op de instantie Knex en dan die waarde.
Dus we gaan doen beperken 20 en stel.
We eigenlijk niet debugger nodig hier
want we kunnen gewoon set breakpoints
en dat maakt het makkelijker.
Oke.
Dus, laten we stellen een breekpunt hier en proberen om het te laden.
Verkeerde lijn.
Hier.
[Pauze]
OK. Dus opnieuw gestopt.
Dus nu, cursussen is een object met een lengte van 20
en we zien alle verschillende modellen dat het opgehaald
uit de database hier dus ik heb een object model kreeg
die heeft binnen de attributen woning
op het object zijn alle dingen dat het in de database gevonden.
Alle gebeurtenissen die hebben geregistreerd
zodat u kunt registreren verschillende gebeurtenissen,
bijvoorbeeld wanneer de model wordt verwijderd
of wanneer het wordt opgehaald,
je anders kunt instellen eigenschappen of dingen wijzigen.
Er is een heleboel verschillende haken en deze zijn allemaal gedocumenteerd
in de Bookshelf.js documentatie die u in staat
om een ​​soort van iets te doen dat je echt wilt doen
met uw modellen en collecties.
U kunt - ze zijn bedoeld echt klantgericht te zijn
en erg gemakkelijk voor je aan te passen
aan de behoeften van de toepassing.
Maar gewoon kijken door hier,
Ik kan zien wat de verschillende cursussen zijn beschikbaar.
En in dit geval, I eigenlijk niet te halen
met andere, andere dan gegevensverwerking alleen de opleidingen zelf.
Maar soortgelijke wijze de Eloquent ORM u kunt instellen
betrekkingen, zodat de cursus behoort tot vele instructeur.
Dus, als ik ga je gang en stoppen met de toepassing,
springen om deze te halen oproep, u kunnen verschillende opties opgeven
dat u wilt doorgeven aan het.
En een van hen is de mogelijkheid om gerelateerde code te laden
onder vermelding withRelated instructeurs dan cursussen.
Dus laten we terug en fris gaan Ook dit hier en stop.
Dus nu, de cursussen object, hetzelfde aantal modellen,
maar nu elk model heeft een relatie hash
die de instructeurs heeft dat het in verband met.
Dus deze cursus bijvoorbeeld
dat is natuurlijk 082 heeft twee gerelateerde instructeur modellen.
En je kunt nu al zien hoe veel gemakkelijker is te sorteren
van visueel mee te werken dan wanneer je te maken met spullen
dat je een soort van de code te wijzigen en probeer het vervolgens opnieuw in PHP.
Het feit dat je kunt gewoon helemaal stoppen uitvoering
en te evalueren wat er hier en de - in de console, de -
uitzoomen, cursussen is, weet je,
wat dat de lokale scope variabelen zijn beschikbaar
en dit momenteel wereldwijd object, want als u het zag,
tenzij u bellen met een specifieke context, gaat het niet
hier iets relevant is.
En dan, de - laat me tonen een paar voorbeelden
uitvoering van beloften.
Dus in plaats van dit te doen withRelated instructeurs hier ben ik
gaan om verder te gaan en verplaats deze te halen en vervolgens de cursussen,
Ik ga terug courses.load instructeurs.
En dan - dan bel je dan.
[Pauze]
Dus dan op dit punt, de cursussen moeten worden geladen
met de instructeurs, die is asynchrone actie.
Maar omdat we het terug te van een belofte, de volgende waarde
want dan is alles wat deze asynchrone oproep rendement
die in dit geval belasting is een werkwijze Bookshelf
daadwerkelijk retourneert de collectie zelf.
Dus het is het laden van de instructeurs op daar
en dan kun je opgeven - als het is gewoon een eigenschap,
U kunt dit opgeven als koord, anders,
je kunt instructeurs doen en vereisten
als methode - sorry, als een matrix.
En dan als je wilt krijgen echt zin en beperken eventuele
van deze gegeven haalde af, je kan dit opgeven als een hash
met instructeurs en dan wat u graag de query op te beperken.
Dus, zou ik graag alle laden instructeurs op cursussen waar -
dus QB voor query builder waar de status actief is.
En kun je echt verbeelden met enige
van de verwante zoekopdrachten u wilt bouwen.
Maar, alleen voor nu, we gaan te houden aan slechts instructeurs
en we zijn terug die waarde
dus dan is de volgende dan moet hebben alle cursussen geladen
juist uitgelijnd zijn.
En als er een fout bij elke schakel in die keten,
zou het naar beneden springen naar de vangst.
Dus laten we verder gaan en lopen dat.
Dus elke keer - in tegenstelling tot in PHP, een nadeel is de
"Omdat knooppunt" is een lang lopende proces, je eigenlijk nodig hebt
met het knooppunt te stoppen als u uw code bij te werken,
omdat de versie dat het lopen in de looptijd is,
de versie van de code die was geladen
toen niet gestart wat je hebt soort
van bijgewerkte uw code met sindsdien.
OK. We zullen een breekpunt hier, hier en vernieuwen.
[Pauze]
Oh, ik heb eigenlijk niet Vernieuw deze pagina ofwel
dus het was op het oude proces.
Dus u vernieuwen zowel dit en het knooppunt inspecteur.
Dus nu zien we cursussen.
Als we gewoon monster nemen een van deze modellen,
kunnen we zien dat de relaties object is leeg, maar nu -
en de reden dat je nodig hebt om breekpunten is, nou ja,
Ik dat je kan genoemd springen in de stack trace
en zie je weet wel, waar het gaat in de app.
Dus nu kan ik zien wat er gebeurt in de methode load,
die ik heb gedefinieerd op de collecties.
Het soort van "Eager lasten relaties op een reeds ".
En je kunt doorlopen en zie regel voor regel
waar dit spul is gaan wat geweldig is.
Als je iets hebt dat is gebroken in de code,
het is het gooien van een fout en je bent zoals, ik wil echt
om te zien waar dit naartoe gaat.
Maar zodra je in de iets asynchroon, de -
Het gaat om de volgende kruisen van de gebeurtenissenlus
en je verliest je - je verliest je plaats
in het knooppunt inspecteur.
Dus je moet zeggen, "OK, zodra ik deze verliezen,
het moet nu stoppen op deze lijn weer. "
Want als ik bleef slaan beneden, beneden de stapel,
het uiteindelijk zou moeten gewoon weggegaan had ik dit niet instellen
lijn 22 blauwe breuklijn.
Dus nu, als ik kijk bij cursussen hier,
het moet op relatie instructeurs
en dan hebben de instructeurs bevestig ze.
Dus, kun je zien dat ik terug een belofte van de eerste belofte
en dan kan je voortdurend dat doen langs de lijn.
Dus de verschillende belofte, beloven bibliotheken,
Ik gebruikte een zogenaamde Bluebird dat is echt nuttig.
Het voegt een heleboel leuke van deze voor het veranderen asynchrone -
veranderende terugbellen basiscode in stuff
dat werkt goed met beloften.
Maar - sorry [onverstaanbaar] wat Ik was van plan om daar te zeggen.
Laten we eens een kijkje nemen hoewel bij de -
dus laten we zeggen dat er een probleem bij het ophalen van iets.
Dus ik heb deze andere route te heet natuurlijk ID vinden.
Dus laten we natuurlijk 2 doen.
Kan ik - JSON natuurlijk.
En dit doet [onverstaanbaar].
[Pauze]
Ik iets verkeerds ruik hier.
Niet op 3000, ik was op het tabblad Chrome inspecteur.
OK. Dus laten we naar Natuurlijk - JSON cursus 1.
En dit geeft gewoon in JSON formaat, de cursus geladen
met een aantal instructeurs.
Maar het voorbeeld dat ik wilde hier geven is dat,
Ik doe JSON cursus ID.
En in de fetch parameters, Ik specificeren hebben echte,
dat is een optie die gedocumenteerd in Bookshelf
waar het zegt dat: "Als, Ik probeer en vind deze cursus
en het is er niet, gooi dan een fout. "
En dat moet worden opgevangen door de vangst blokkeren hier beneden.
Dus laten we verder gaan en spring terug in het knooppunt inspecteur en probeer
en breken deze en kijken wat we hebben.
Daarom hier even een pauze hier op de JSON cursus.
Oke.
Ik ga naar JSON cursus en Ik zou gewoon in sommige -
[Pauze]
Het kan een beetje lastig soms als je probeert
beheren welke is vernieuwd
en die niet - laten we eens kijken.
Dus het roept fout lege reactie.
[Pauze]
Werp een debugger in hier.
Vanwege de manier waarop knooppunt eigenlijk optimaliseert
voor de JavaScript-runtime om zo snel zijn op de server,
soms het knooppunt debugger heeft een aantal fouten wanneer u probeert
en stel breekpunten dynamisch en je eigenlijk wel nodig
een debugger en niet de lijn per lijn.
Dus laten we kijken of deze brengt ons wat we willen.
Dus ik, app.get json cursus id,
en ik heb mijn debugger daar te zetten
in de catch-statement onderaan.
Fetch nodig waar, het hoort - oke, daar gaan we, brak.
Zo, nu kan ik zien dat het gestopt
bij deze laatste catch-blok omdat de withRelated -
of omdat de eisen waar gespecificeerd en er is geen natuurlijk
met ID van deze grote nummer door middel van een uitzondering
die nu Emessage.
En elke fout in JavaScript heeft een stapel woning
die wordt geleverd samen met het.
Dus het is vaak handig Om bijvoorbeeld,
troosten uitloggen e.stack.
En ik kan echt zien wanneer ik een fout hit.
Dus ik krijg error leeg reactie, dat is de boodschap
dat werd verstuurd via Bookshelf.
Maar nu, kan ik een kijkje nemen op de, bij call stack en zien
dat in Bookshelf dialecten SQL model 83,
deze lege reactie fout werd gegooid.
En dit is waar ik genoemd, is het punt anoniem
omdat het een anonieme functie.
Als dat een naam functie waren u betere ideeën zou hebben
waaraan ook functioneren door zonder te gaan
in de model.js code.
Hoewel het bedoeld is vrij, vrij leesbaar,
dus ik kan dat online zien.
Wat hebben ze te vertellen mij was lijn 83.
Dus, als options.require en de respons niet bestond,
gooit nu een nieuwe lege Foutmelding.
Dus je kunt vrij zien ongecompliceerd hoe dat werkt.
Als intern in Bookshelf,
er zijn gewoon een hele stelletje gebruik van beloften.
Dus u kunt opgeven Promise.method
met de Bluebird bibliotheek die de juiste context blijft
dit terwijl de terugkeer een belofte.
En dus heb ik - ik ben bindend de waarde van deze vergelijkbare
naar wat ik had gezegd eerder, maar met beloften
en dan kan ik - is nieuw.
Het kan asynchroon of niet als ik wil.
En dan wat moet ik andere dingen die kunnen
of niet asynchroon zijn en vervolgens allerlei sprongen naar beneden dit.
Dus Promise.all is een helper dat veel populaire bibliotheken
waar u een kunt hebben reeks potentieel kan
dan niet beloften.
En als al die zijn voltooid, keert u terug dat
en dan springt naar de volgende regel
en je kunt hoe het echt zien vlakt de piramide
die je krijgt, de callback hel als de bekende
als je alles doet met callbacks regel voor regel.
Er zijn manieren om rond dat maar beloften zijn een
van de beste manieren om in mijn mening
om echt uw code te houden schoon en gemakkelijk te lezen.
Dus dat is slechts een korte kennismaking met JavaScript
en boekenplank en Knex in het algemeen.
En, als er nog vragen, Ik weet dat het een ton van materiaal
om een ​​soort van proberen en deksel vooral sinds de talen,
tegenstelling tot de meeste dat je bent vertrouwd met dus ik wilde alleen
te maken zodat tenminste als je problemen hebt
met uw code, u kan soort van springen -
dat is wat ik graag doe, is soort van springen in de bibliotheken
die ik gebruik en zien hoe de dingen zijn gestructureerd.
Er is een die ik had genoemd eerder genoemd Backbone.js
en eigenlijk is het [Onverstaanbaar] op de client
te helpen geven model view regelaarstructuur
aan uw code.
Maar het heeft eigenlijk geannoteerde documentatie bron
waarmee je een soort van zien.
Het is echt goed gedocumenteerd, wat er gaande is,
hoe het verhogen van de Ajax-functionaliteit
of het evenement functionaliteit of de modellen en collecties sorteren
uit te leggen wat er gaande in het proces.
En als je begrijpt de basisprincipes van JavaScript
zoals de prototypische erfenis en hoe functies worden gebruikt
als beide objecten en waarden en klassen en alles.
Het maakt het een stuk makkelijker om te begrijpen wat er gaande
over potentieel in de bibliotheken die u gebruikt
en debugger code en in staat om niet je hoofd bonken
tegen de muur, omdat je niet begrijpt hoe de
verschillende stukken werken, dus.