>> So, met wat gesê word,
net soort van 'n eenvoudige inleiding tot prototipes
en die JavaScript voorwerp model.
Ons gaan nie om te skuif ratte 'n bietjie om te praat
oor meer JavaScript op die bediener en die boekrak Library
en die verband Knex Biblioteek.
So, kan jy eintlik net -
As jy soek vir Bookshelf.js dit behoort te wees redelik maklik
te vind, moet die eerste wees gevolg, en Bookshelf
Dawid net genoem gee 'n baie struktuur
rondom JavaScript voorwerpe en werk saam met hulle verhoudings
in relasionele databasisse.
So, 'n baie soortgelyke eienskappe wat is eintlik baie geïnspireerde
deur Laravel se ORM as sowel as die Backbone.js,
wat is 'n front-end MVC biblioteek wat toelaat dat jy
jou kode te orden, soortgelyk aan wat ek was om te wys
met die voorbeelde van die prototipes waar jy kan -
in plaas van net arbitrêr gooi klasse
op jou mening hier en daar.
Dit gee jou modelle en versamelings van die modelle
wat veronderstel is om op te tree soort van 'n enkele punt van die waarheid
oor die data vir jou aansoek.
En dan moet jy luister, as diegene modelle veranderinge, sê jy, OK,
weer maak hierdie sjabloon hier en hierdie een hier
en nie net voeg die klas hier, voeg klas is daar en soort haal
op die keurders en maak die spinneweb van jQuery kode.
Dit gee meer van 'n klas-gebaseerde struktuur individuele stukke,
maar 'n belangrike komponent van daardie biblioteek is die modelle
wat 'n soortgelyke struktuur na wat Boekrak modelle doen.
Dus, as jy vertroud is met die Boekrak jy mooi ook
redelik vertroud met Backbone.js modelle,
en ek sou aanbeveel neem van 'n blik op hierdie.
So, 'n paar van die belangrikste eienskappe
dat dit gee jou net die vermoë om data in te stel op 'n voorwerp
te noem gaan haal, wat gee 'n individuele rekord
uit die databasis, skep verhoudings as soortgelyke
na wat jy behandel binne in Laravel
waar jy kan sê 'n pasiënt 'n rekord opgestel metode
en sê dit het gewen rekord
waar die rekord voorwerp tabel naam gesondheid rekords.
Kom ons kyk.
Het baie - dit behoort aan -
net dinge wat jy redelik soortgelyk -
redelik vertroud met reeds, maar in JavaScript.
En onder die enjinkap, vir Bookshelf,
dit maak gebruik van 'n navraag bouer genoem Knex.js.
So, dit is Knex, knexjs.org.
Dit is 'n verwysing na die speelding as iemand ooit gespeel het met hierdie.
Maar dit kan jy - in 'n soortgelyke wyse te jQuery,
jy het net soort van 'n ketting van verskillende metodes
dat jy 'n beroep op jou databasis ry, sodat jy kan -
jy begin deur te sê Knex en die tafel naam.
So, byvoorbeeld, Knex gebruikers, kies watter kolomme jy wil,
waar, en het verskillende waar conditionals en jy kan
En waar is, of waar, waar tussen waar nie,
jy nou, in die ry.
Jy kan spesifiseer verskillende aansluit tussen jou databasis tabelle
wat Boekrak gebruik intern om 'n soort van magie
rondom die hasOne, hasMany, belongsTo, belongsToMany.
En so het die kombinasie
van die twee laat jy nie mooi veel wat jy wil gebruik word
om in raamwerk soos Laravel in terme
van die funksies werk met databasisse.
So, laat ons gaan voort en neem 'n blik op 'n eenvoudige voorbeeld
vir 'n Express inligting wat gebruik maak van hierdie modelle
en versamelings Boekrak jazz [fonetiese].
So, het ek die opstel van net 'n eenvoudige toepassing hier.
Ek gestroop uit 'n paar van die dinge wat wat initializing uitdruklike
en beweeg wat in 'n init Gids wat ek geskep het.
Een van die mooi dinge oor werk met Express as veronderstel
te Laravel is dat daar regtig nie veel afgedwing
op jou conventionele.
So kan jy dopgehou te skep -
dit maak nie regtig gee jou 'n hele klomp af te werk.
Jy het net soort van 'n paar het basiese instellings en dan -
maar dit gee nie om waar jy sit hulle.
Jy hoef nie te hê kontroleerder se gids.
Jy hoef nie 'n modelle te hê gids, 'n config gids.
Jy kan soort van skep diegene as jou projek behoeftes
en stel dinge op die pad wat sin maak die meeste vir jou.
So in plaas van om die hele hierdie uitdruklike boiler
in die hoof app.js Ek het net gesê artikels gelykes vereis init / Express.
En so in die init,
die inisialisering gids Ek het net nog Druk hier,
en dit vereis Express, oproepe die opstel van funksie, noem die -
stel die oog enjin, Into ontleder, alles wat.
So nou, laat ons voortgaan af.
So ek wat die Natuurlik instrukteur vergadering
en vereistes modelle.
So dit is in 'n gids wat Ek het net besluit om die naam modelle.
Dit hoef nie te wees dat manier egter maak dit sin,
maar modelle is net mooi gemeenskaplike so ek sal dit aanbeveel.
Maar - So laat ons gaan vir die kursus.
Ek dink ek is met behulp van - Ja, en die voorbeelde
hier is almal gebaseer rondom die kursus model.
So laat ons net neem 'n blik op dit.
So, nou, net van die eerste reël van hierdie model,
Ek is al wat iets anders.
So as jy in node sal sien jy moet vereis word
of jy gaan aan die einde wat 'n hele klomp
van verskillende lêers wat geleë
op verskillende plekke in jou aansoek.
En die relatiewe paaie na waar jy is
in jou huidige aansoek,
tensy dit is 'n top-vlak reeds gedefinieer as in jy dit installeer
met MPM soos Bookshelf of Knex of Express of iets,
dit is nie relatief.
Ja? Zoom in meer?
OK. OK. So, gaan jy beland wat 'n hele klomp
net verskillende lêers in jou kode, wat is goeie en slegte.
In 'n goeie manier wat jy weet waar dinge is en dit is nie soort
magic as na wat gaan op onder die enjinkap,
wat regtig verwarrend kan wees
wanneer jy 'n baie swaar Java -
of baie swaar raamwerk soos Laravel, wat soort van sê,
ons gaan om te sorg van hierdie so jy hoef nie
alles te vereis maar jy moet
om te weet hoe om alles werk om dit te gebruik.
Waar soos in hierdie geval, is dit baie eenvoudig as om te
waar alles is, hulle is net eindig
'n 'n bietjie meer te tik.
Net soos in die kant ek wil te gebruik, is daar 'n prop
As jy 'n blinde teks gebruik
waar jy kan die knoop installeer modules Helper en jy kan begin
om te tik soos Instrukteur en dit skep die relatiewe pad
na die plek waar jy op daardie kode lêer, soort nuttig.
So, die kursus model word vereis basis hier
en dan basis intern vereis init / boekrak
en dan die boekrak, is dit vereis dat die boonste vlak Bookshelf
en dan initialisatie dit met die geïnisialiseer Knex byvoorbeeld
waarin die kliënt se naam
en die verband instellings vir die databasis.
So ek is net 'n eenvoudige geval van Sequel Pro wat -
MySQL, ek toegang tot dit met Opvolger Pro en dit het net soort
van 'n soortgelyke databasis opstel as wat ons gehad het
in die eerste monster aansoek met die kursus katalogus.
So, ek het my konneksie instellings hier,
en dit is al gedokumenteer op die Knex.js projek bladsy
hoe om te installeer hierdie verbindings.
So, ek het nou my base model.
En soos ek genoem het met die prototipe verandering,
so wat kan eintlik soort van 'n baie om te -
voeg 'n baie boiler om jou kode so konvensie
wat aangepas is deur Backbone.js
En nou is Bookshelf.js om by te voeg hierdie brei metode
as 'n statiese eiendom jou JavaScript voorwerpe,
wat gee dit 'n soort van byna klas-gebaseerde erfenis aard
waar as jy bel verleng kan jy die opstel van 'n
van die prototipe metodes dat jy hier wil
En dan kan jy - enige ekstra statiese metodes
wat jy dalk wil jy kan net aan hulle self
hier sodat ek dit kan uitbrei met - so as byvoorbeeld
verskeie modelle nodig vertoning naam en die naam kry.
So, hier, ek sê die vertoning naam vir model
by verstek is net sy naam eiendom andersins terugkeer
geen naam.
En nou op elke model wat 'n -
wat strek van hierdie basis-model, het ek nou 'n vertoning naam metode
op die prototipe ketting iewers.
En as ek wil om dit te vervang Ek kan net sit dit - soos wat -
kryNaam sal hier wees.
En dit kan jy na te boots klassieke erfenis
in JavaScript, wat kan wees nice veral vir dinge
wat leen om klas-gebaseerde agtige voorwerp modelle.
So laat ons spring terug in die program kode.
So ek het 'n roete vir net streep, net vir my indeks
en dan streep kursusse.
En beide van hierdie beroep die renderCourses metode.
So weer, funksies eerste klas en geslaag kan word
as argumente metodes.
So, in hierdie app.get, Ek noem -
Ek is verby renderCourses as die argument.
En lewer - of funksies kan opstel soos var -
as ek besig was om vroeër var renderCourses gelyk funksie
of hulle kan net funksie renderCourses.
Dit lyk nie te maak veel van 'n verskil maak.
Jy kan eintlik wat is die naam funksie genoem
uitdrukkings, wat var renderCourses gelykes
funksie renderCourses.
En die rede om te wil hê funksies noem veral
in node, is dat dit gee jou 'n skoonmaker -
meer leesbaar stapel spoor.
So as jy 'n hele klomp
anonieme funksies dit sal sê -
wanneer jy 'n fout in jou kode you'll -
sal jy nie weet watter funksie dit is 'n beroep wat jy wil hê om te kyk
by die kode nommer en die lyn nommer
en dit is soms makliker net visueel ontleed nie
wanneer jy eintlik name het
vir die werksaamhede hulself op die bediener kant.
So hierdie renderCourses, Kom ons noem knoop programme -
so ek luister op Core 3000 [fonetiese].
En so alles reg doen hier is net om al die
kursusse van die databasis.
Ek is nie eens die beperking van dit so dit is besig met 'n groot aantal
rye dit terugkeer.
En om dit te doen,
op die kursus model daar is 'n statiese eiendom
genoem Versameling.
En so het ek noem dit net - ek sê 'n nuwe versameling
vir hierdie kursus, en dan gaan haal het,
en dan terug te keer die kursusse Versameling hier in die belofte.
So intern, David in - die laaste helfte geleer om 'n bietjie
oor beloftes en beloftes gebruik baie swaar in beide Knex
en Boekrak omdat dit leen die -
dit gee jou die vermoë om 'n klomp te hê
van verskillende asynchrone oproepe en soort van sluit dan saam
of haal iets, en dan
met die oproep 'n ander asynchrone databasis oproep
en terug te keer dat die waarde en dan spring na die volgende dan
en die volgende toe en dan 'n vang aan die einde te sorteer
van naboots asynchrone probeer vang gedrag met asynchrone kode,
want jy sien dit nou
maar dit is nog moeiliker wanneer jy begin om dit te hanteer.
Asynchronous kode is net oral
in bediener kant JavaScript en werklik tot 'n veel groter mate
as jy gebruik om as jy JavaScript gedoen het
op die kliënt kant.
So wat regtig, regtig gehelp het om daar uit.
Maar net om jou te wys die debugger verklaring
dat ek kon praat in die knoop inspekteur gereedskap,
Ek gaan om voort te gaan en gooi 'n debugger lyn hier
in die renderCourses funksie en sien dat my lei
toe ek - so knoop Inspekteur geïnstalleer kan word
deur te doen NPM installeer met 'n G vlag
wat beteken Global Knoop Inspekteur.
En dit sal vir NMP haal en installeer dit wêreldwyd
vir jou programme sodat jy kan net noem dit
uit die opdrag lyn.
Ek het reeds geïnstalleer dit so ek sal voort te gaan en -
eintlik is dit dalk ' wag dit sal net neem,
neem twee sekondes.
En wat node inspekteur kan jy weer
te doen, is hierdie onthoofde weergawe van die debugger konsole
wat jy gebruik om by die werk op die kliënt se kant en in staat wees om
om te stop, voeg net gespesifiseerde punte in jou kode.
Stop uitvoering en neem 'n kyk na wat aangaan,
wat regtig wil hê handig te pas kom indien die funksie
soos wat beskikbaar was
wanneer die opsporing van jou PHP-kode is ek seker.
So laat ons net neem 'n blik op dit.
So ek kan net noem knoop inspekteur
en dit sal sê na hierdie URL Port 5858 debugging te begin,
dit is net die standaard hoe dit begin het.
So, ek het nou '- daar is niks hier aan die gang
omdat ek nodig het om te begin.
So knoop dooiepunt [fonetiese] die debug vlag en dan app.js.
So sê debugger luister op poort 5858,
Express bediener luister op 3000.
So ons is goed om te gaan.
Laat my net te verfris hierdie.
En nou kan ek sien die app.js kode wat ek was net op soek na
maar hier in die konsole.
So nou, as ek probeer om dit te bestuur, jy kan dit sien, is dit tot stilstand kom.
Dit is net wag, want sy uitvoering hele kode is nou
gestop op hierdie debugger lyn wat ek sit daar in.
En ek kan nou bediener -
[Onhoorbaar Nota]
O, ja. Wat is die navraag kortpad skerm te vergroot?
O daar is.
Het dit. OK.
[Pouse]
O ja, dit is nie op soek na [Fonetiese] dat.
So, kursusse is werklik 'n groot
omdat ek nie besig met 'n beperk klousule of enigiets nie,
dit is net die afhaal hele databasis van kursusse
wat is 'n baie van hulle.
En so - wat is voorwerp
wat eintlik kan crash die nota inspekteur geval.
It's - OK.
Laat my nie 'n limiet en dan kan ons 'n blik
wanneer dit nie haal honderde kursusse.
So, die dood van die bediener en inspekteur
en ek sal natuurlik doen versameling navraag limiet 20.
So, in boekrak Anders as in Laravel
waar jy kan net noem beperk direk of skakel enige
van hierdie SQL metodes wat jy gebruik
direk op die ORM geval.
Enige tyd wat jy gebruik net SQL metode wat voorsien word
in Knex, jy het om te noem die navraag te sorteer
van toegang tot die navraag ketting.
En dit aangewend kan word met óf 'n funksie,
sodat jy kan sê, funksie hierdie limiet 10 of jy dit noem
deur die spesifiseer wat metode wat jy wil om te bel
op die Knex byvoorbeeld en dan watter waarde.
So ons gaan doen beperk 20 en dan stel.
Ons het eintlik nie nodig debugger hier
want ons kan net stel inspeksiepunte
en dit maak dit makliker.
Alle regte.
So, laat ons stel 'n breekpunt hier en probeer om dit te laai.
Verkeerde lyn.
Net hier.
[Pouse]
OK. So dit weer gestop.
So nou, kursusse is 'n beswaar met 'n lengte van 20
en ons kan sien al die verskillende modelle wat dit is vergesog
uit die databasis reg hier so ek het 'n model voorwerp
wat, binne die eienskappe eiendom
op die voorwerp is al die dinge wat dat dit in die databasis.
Enige gebeure wat geregistreer
sodat jy kan registreer verskillende gebeure,
byvoorbeeld wanneer die model word geskrap
of wanneer dit gehaal,
jy kan stel verskillende eienskappe of verander dinge.
Daar is 'n baie verskillende hoeke en dit is al gedokumenteer
in die Bookshelf.js dokumentasie wat u toelaat om
soort van om iets te doen dat jy regtig wil doen
met jou modelle en versamelings.
Jy kan nie - hulle is bedoel om te wees regtig aanpas
en baie maklik vir jy hulle aan te pas
aan die behoeftes van jou aansoek.
Maar net op soek deur hier,
Ek kan sien wat die verskillende kursusse is beskikbaar.
En in hierdie geval, het ek eintlik nie haal
met enige ander data anders as net die kursusse self.
Maar op soortgelyke wyse te die welsprekende ORM jy kan stel
up verhoudings, so die kursus behoort aan baie instrukteur.
So, as ek gaan voort en stop die aansoek,
spring na die oproep gaan haal, het jy kan verskillende opsies
wat jy wil slaag langs om dit te.
En een van hulle is die vermoë om verwante kode te laai
deur die spesifiseer withRelated instrukteurs dan kursusse.
So laat se rug en vars te gaan weer hier en stop.
So nou, die kursusse beswaar, dieselfde aantal modelle,
maar nou elke model het 'n verhouding hash
wat die instrukteurs dat dit verwant aan.
So hierdie kursus byvoorbeeld
wat is natuurlik 082 het twee verwante instrukteur modelle.
En jy kan reeds sien hoe baie makliker is dit om te sorteer
visueel werk as wanneer jy met dinge
dat jy soort van verandering van die kode en dan probeer om dit weer in PHP.
Die feit dat jy net kan stop uitvoering geheel
en te evalueer wat is hier en die - in die konsole, die -
zoom uit, kursusse is, jy weet,
wat dat die plaaslike omvang veranderlikes is beskikbaar
en dit is tans die globale voorwerp, want as jy dit gesien het,
tensy jy bel met 'n spesifieke konteks, dit gaan nie
iets relevant hier te hê.
En dan, die - laat my wys 'n paar voorbeelde
implementering van beloftes.
So in plaas van om dit te doen withRelated instrukteurs hier Ek is
gaan om voort te gaan en beweeg hierdie te gaan haal en dan die kursusse,
Ek gaan om terug te keer courses.load instrukteurs.
En dan - dan is jy dan bel.
[Pouse]
So dan op hierdie punt, die kursusse moet gelaai word
met die instrukteurs, wat is asynchrone aksie.
Maar omdat ons dit terug van 'n belofte, die volgende waarde
want dan is alles wat hierdie asynchrone oproep opbrengste
wat in hierdie geval vrag is 'n metode in Bookshelf
wat eintlik terug die versameling self.
So dit is die laai van die instrukteurs op daar
en dan kan jy spesifiseer - al is dit net een eiendom,
jy kan spesifiseer hierdie as string, anders,
jy instrukteurs kan doen en vereistes
as 'n metode - jammer, as 'n skikking.
En dan as jy wil te kry regtig fancy en dwing enige
van hierdie gegewe kry daarvan, het jy kan dit spesifiseer as 'n gemors
met instrukteurs en dan wat jy wil die navraag op te beperk.
So, wil ek graag almal om te laai instrukteurs op kursusse waar -
so QB vir navraag bouer waar status aktief is.
En jy kan regtig fancy met enige
van die verwante navrae jy wil bou.
Maar, net vir nou, ons gaan om vas te hou om net instrukteurs
en ons is terug wat waarde
so dan is die volgende, dan moet het al die kursusse gelaai
behoorlik.
En as daar 'n fout enige stap in die ketting,
dit sou spring tot by die vangs.
So laat ons gaan voort en hardloop nie.
So elke keer - anders as in PHP, een nadeel is die
"Omdat node" is 'n lang loop proses, wat jy eintlik nodig het
die knoop te stop as jy jou kode te werk,
omdat die weergawe dat dit loop in die aanloop tyd is,
Die weergawe van die kode wat gelaai was
wanneer begin nie wat jy het soort
van opgedateer jou kode met sedertdien.
OK. Ons sal 'n breekpunt stel hier, hier en verfris.
[Pouse]
O, ek het eintlik nie Verfris hierdie bladsy óf
so dit was op die ou proses.
So jy verfris beide hierdie en die knoop inspekteur.
So nou sien ons kursusse.
As ons net 'n monster van een van hierdie modelle,
Ons kan sien dat die verhouding voorwerp is leeg, maar nou -
en die rede wat jy nodig het inbreekpunte te stel is goed,
Ek het genoem dat jy kan spring in die stapel spoor
en sien jy weet, waar dit gaan in die jeug.
So nou kan ek sien wat gebeur in die vrag metode,
wat ek gedefinieer op die versamelings.
Dit soort van "Eager vragte verhoudings op 'n reeds ".
En jy kan stap vir stap deur en sien reël vir reël
waar hierdie dinge is gaan wat is groot.
As jy iets wat se gebroke in jou kode,
dit gooi 'n paar foute en jy wil, ek wil regtig
om te sien waar dit gaan.
Maar so gou as jy loop in iets asynchrone, die -
dit gaan om die volgende merk van die gebeurtenis lus
en jy sal jou verloor - verloor jy jou plek
in die knoop inspekteur.
Sodat jy nodig het om te sê, "OK, as ek dit verloor,
dit moet nou stop op hierdie lyn weer. "
Want as ek aangehou slaan af, af die stapel,
dit sou uiteindelik net gegaan het ek nie soos hierdie
reël 22 blou break lyn.
So nou, as ek kyk op kursusse hier,
dit op verband behoort instrukteurs
en dan het die instrukteurs heg hulle.
So, kan jy sien dat ek terug 'n belofte van die eerste belofte
En dan kan jy voortdurend doen in die ry.
So het die verskillende belofte, biblioteke belowe,
Ek gebruik een wat geroep is Bluebird wat is werklik nuttig.
Dit voeg 'n baie mooi van hierdie vir die verandering van asynchrone -
veranderende oproep terug basis kode in dinge
wat werk goed met beloftes.
Maar - sorry [onhoorbaar] wat Ek is van plan om dit daar te sê.
Kom ons neem 'n blik al by die -
so kom ons sê dat daar 'n probleem wanneer iets gaan haal.
So ek het hierdie ander roete genoem natuurlik ID te vind.
So kom ons doen kursus 2.
Kan ek - into kursus.
En dit doen [onhoorbaar].
[Pouse]
Ek ruik iets verkeerd hier.
Nie op 3000, ek was op die Chrome inspekteur blad.
OK. So laat ons gaan Natuurlik - into kursus 1.
En dit terug net in into formaat, die kursus gelaai
met 'n paar instrukteurs.
Maar die voorbeeld wat ek wou hier gee, is dat,
Ek doen into natuurlik ID.
En in die haal parameters, Ek spesifiseer vereis ware,
wat is 'n opsie wat gedokumenteer in Bookshelf
waar dit sê dat, "As Ek probeer vind hierdie kursus
en dit is nie daar nie, dan gooi 'n fout. "
En dit moet deur gevang word die vangs blok hier af.
So laat ons gaan voort en spring terug in die knoop inspekteur en probeer
en breek dit en sien wat ons gekry het.
So laat ons stel 'n breek hier op die into kursus.
Alle regte.
Ek sal gaan na into kursus en Ek sou net sit in 'n paar -
[Pouse]
Dit kan 'n bietjie lastig Soms wanneer jy probeer
te bestuur wat een verkwik
en wat nie - laat ons sien.
So dit is 'n beroep fout leë reaksie.
[Pouse]
Kom ons gooi 'n debugger in hier.
As gevolg van hoe knoop eintlik optimaliseer
vir die JavaScript runtime om so vinnig op die bediener,
soms die knoop debugger het 'n paar foute wanneer jy probeer
en stel inspeksiepunte dinamiese en jy eintlik nie nodig
'n debugger te gebruik en nie die lyn-vir-lyn.
So kom ons kyk of hierdie kry ons wat ons wil.
So ek stel, app.get into natuurlik id,
en ek het my debugger sy daar
in die vangs verklaring aan die onderkant.
Haal vereis waar, dit moet - Alle reg, daar gaan ons, gebreek het.
So, nou kan ek sien dat dit gestop
in hierdie finale vangs blok omdat die withRelated -
of omdat die ware vereis gespesifiseerde en daar is geen kursus
met ID van hierdie groot getal deur middel van 'n uitsondering
wat nou Emessage.
En elke fout in JavaScript het 'n stapel eiendom
wat kom saam met dit.
So is dit dikwels nuttig Om vir byvoorbeeld
troos teken uit e.stack.
En ek kan eintlik sien toe ek 'n fout.
So ek kry fout leë reaksie, dit is die boodskap
wat via Boekrak gestuur.
Maar nou, kan ek 'n blik by die, by oproep stapel en sien
wat in Bookshelf dialekte SQL model 83,
hierdie leë reaksie fout gegooi is.
En dit is waar ek genoem, is dit dot anoniem
want dit is 'n anonieme funksie.
As dit was 'n naam funksie jy beter idees sal hê
te wat eintlik funksioneer deur sonder om te gaan
in die model.js kode.
Alhoewel dit bedoel is om te wees regverdig, redelik leesbare,
sodat ek kan sien dat aanlyn.
Wat het hulle vertel my was line 83.
Dus, as options.require en die reaksie nie bestaan ​​het nie,
Nou gooi 'n nuwe leë reaksie fout.
So kan jy mooi sien eenvoudig hoe dit werk.
En intern in boekrak
daar is net 'n hele n klomp van die gebruik van beloftes.
So jy kan spesifiseer Promise.method
met die Bluebird biblioteek wat hou die korrekte konteks
dit terwyl die terugkeer 'n belofte.
En so het ek - ek is bindend die waarde van hierdie soortgelyke
na wat ek genoem vroeër, maar met behulp van beloftes
en dan het ek kan - is 'n nuwe.
Dit kan asynchrone wees of nie, as ek wil.
En dan doen ek 'n paar ander dinge wat kan
of mag nie asynchrone wees en dan allerlei spronge af nie.
So Promise.all is 'n hulp wat 'n baie gewilde biblioteke
waar jy kan 'n verskeidenheid van potensieel kan
of dalk nie beloftes.
En as al die is voltooi, moet jy terugkeer wat
en dan is dit spring na die volgende lyn
en jy kan sien hoe dit regtig plat uit die piramide
dat jy die terugbel hel as sy bekende
as jy doen alles met verifikasie reël vir reël.
Daar is maniere om rond te kry dit nie, maar beloftes is een
van die beste maniere in my opinie
om werklik die kode hou skoon en maklik om te lees.
So dit is net 'n kort inleiding tot JavaScript
en boekrak en Knex in die algemeen.
En as daar enige vrae, Ek weet dit is 'n ton van die materiaal
om soort van probeer en dekking veral omdat die tale,
Anders as die meeste wat jy vertroud is met so ek wou net
dit so te maak dat ten minste As jy probleme
met jou kode, kan jy kan soort van spring in -
dit is wat ek wil doen, is soort van spring in die biblioteke
wat ek gebruik en sien hoe dinge gestruktureer.
Daar is een wat ek het genoem vroeër genoem Backbone.js
en eintlik is dit [Onhoorbaar] op die kliënt se kant
om te help gee model oog kontroleerder struktuur
om jou kode.
Maar dit het eintlik ' geannoteerde dokumentasie bron
wat kan jy soort van sien.
Dit is baie goed gedokumenteer, wat gaan aan,
hoe dit die aanvulling die Ajax funksionaliteit
of die gebeurtenis funksies of die modelle en versamelings soort
verduidelik wat is gaan op in die proses.
En as jy verstaan die basiese beginsels van JavaScript
soos die prototypal erfenis en hoe funksies gebruik
as beide voorwerpe en waardes en klasse en alles.
Dit maak dit 'n baie makliker om te verstaan ​​wat aangaan
op potensieel in die biblioteke wat jy gebruik
en debugger kode en in staat wees om om nie gestamp word jou kop
teen die muur, want jy nie verstaan ​​hoe die
verskillende stukke werk, so.