>> Дакле, са тим што је рекао,
некако једноставан увод у прототипова
и објектни модел ЈаваСцрипт.
Нећемо да се пребаци геарс мало за разговор
о више ЈаваСкрипт на сервер и Бооксхелф Библиотека
и веза Кнек библиотека.
Дакле, можете заправо само -
ако тражите Бооксхелф.јс то би требало да буде прилично лако
да пронађе, треба прво да буде резултат, и Бооксхелф
Давид помиње само даје много структуре
око објеката и ЈаваСцрипт рад са њима релатионалли
у релационим базама података.
Дакле, доста сличних карактеристика ко је заправо тешко надахнута
по Ларавел је ОРМ као као и Бацкбоне.јс,
који је предњи крај МВЦ библиотека која вам омогућава
структурирати свој код, слично ономе што сам показивао
са примерима прототипови где можете -
уместо само произвољно бацање наставу
на ваше погледе овде и тамо.
То вам даје моделе и збирке тих модела
који би требало да делују као врста једна тачка истине
о подацима за Ваша пријава.
И онда ви слушате, као и оне модели промене, кажете, у реду,
поново рендер овог шаблона овде и овај овде
и не само додати класу овде, додати класу постоји и нека врста пицк
на селектора и да паукове од јКуери кода.
То даје више класе на бази структура на појединачне комаде,
али важна компонента да је библиотека модели
који имају сличну структуру на шта Бооксхелф модела уради.
Дакле, ако сте упознати са Бооксхелф сте прилично такође
прилично упознат са Модели Бацкбоне.јс,
и ја бих препоручио узимајући поглед на ово.
Дакле, неки од главних карактеристика
да то вам даје само способност да поставите податке о објекту
да позовете донесе, који враћа појединачни рекорд
из базе података, створити односи као слични
на шта сте се бавили у у Ларавел
где можете рећи Пацијент сет метод рекорд
и кажу да је освојио рекорд
где запис објекат је име сто здравствени картони.
Хајде да видимо.
Има много - то припада -
само ствари које сте прилично слични -
прилично упознат са већ, али у ЈаваСцрипт.
А испод хаубе, за Бооксхелф,
она користи градитељ упита зове Кнек.јс.
Дакле, то је Кнек, кнекјс.орг.
То је референца на играчку, ако ико икада играо са овим.
Али то вам омогућава да - у сличан начин, на јКуери,
само некако створити ланац различитих метода
да зовеш на ваше ред база података тако да можете -
ти почео рекавши Кнек и име табеле.
Тако, на пример, Кнек корисника, изаберите колоне које желите,
где, и имају различите ВХЕРЕ цондитионалс и можете имати
И где, где ИЛИ, где се између, где не,
ви сада, низ линију.
Можете одредити различите придружује између табелама базе података
који Бооксхелф користи интерно да подесите врсту магије
око хасОне, хасМани, белонгсТо, белонгсТоМани.
И тако комбинација
од два нека ти лепа много шта би се користити
да у оквиру као Ларавел у смислу
функционалности рад са базама података.
Дакле, идемо напред и да поглед на једноставан пример
за Екпресс апликацију која користи ових модела
и збирке Бооксхелф џез [фонетски].
Дакле, ја сам поставити само једноставна апликација овде.
Ја извлачити неке ствари да је иницијализација екпресс
и крећу да у једном инит именик који сам створио.
Једна од лепих ствари о ради са Екпресс као требало
да Ларавел је да постоји стварно није много спроводе
о теби цонвентионализед.
Дакле, можете да креирате директоријуме -
то заиста не ти много да раде ван места.
Имаш само врста неке основна подешавања, а затим -
али то не занима где сте их ставили.
Не морате да имате именик управљача.
Не морате да имају моделе директоријум, директоријум цонфиг.
Можете да некако створи они као ваше потребе пројекта
и поставити ствари на начин да већина смисла за вас.
Дакле, уместо да све ово експрес Предложени
у главним апп.јс сам управо рекао апп једнаки захтевају инит / екпресс.
И тако у инит,
иницијализација фасцикла Управо сам овде Екпресс,
и ово захтева Екпресс, позиве функција за подешавање, позива -
поставља приказа мотор, ЈСОН парсер, све то.
Па сад, хајде да наставимо доле.
Тако сам захтева Наравно инструктор састанак
и захтеви модела.
Дакле, то су у фолдеру који Управо сам одлучио да имена модела.
То не мора да буде начин ипак има смисла,
али је само модела прилично заједнички и зато бих то препоручио.
Али - Идемо за курс.
Мислим да ја користим - иеах, и примери
овде доле се све заснива око модела курса.
Дакле, хајде да погледајте то.
Дакле, сада, само од прва линија овог модела,
Већ сам захтева нешто друго.
Дакле, ако ћете приметити у чвор Ви треба да се захтева
или ћеш завршити захтева гомилу
од различитих фајлова који се налазе
на различитим местима у својој апликацији.
И релативна путања да где год да сте
у тренутној апликацији,
осим ако је то највиши ниво већ дефинисано као у ви га инсталирате
са МПМ као полицу за књиге или Кнек или Екпресс или нешто,
оне нису релативне.
Да? Зоом ин више?
У реду. У реду. Дакле, ти ћеш завршити захтева гомилу
од само различити фајлови у вашем код, који је добро и лоше.
На добар начин да знате где ствари и то није врста
магије као да оно што је дешава испод хаубе,
који може заиста бити збуњујуће
када имате веома тешки Јава -
или веома тешке оквир као Ларавел, која врста, каже,
ћемо да се брине ово тако да не морате
да захтева све али ви имате
да знам како се све ради да би га користили.
Где као у овом случају, то је врло једноставно као да
где је све, они су само крајеви
се као мало више куцање.
Баш као у страни волим да користите, постоји плугин
ако користите слепог текст
где можете инсталирати чвор модули помагач и можете да почнете
да куцате као инструктор и она ствара релативну путању
где си ти да то код фајл, некако корисно.
Дакле, модел курс се захтева базу овде
а затим база приправник захтева инит / полице
а затим Бооксхелф, она захтева највишем нивоу бооксхелф
а затим га иницијализује са иницијализован Кнек пример,
који поставља име клијента
и веза подешавања за базу података.
Па ја само помоћу једноставног инстанца Наставак Про који -
МиСКЛ, ја му приступа са Наставак Про и има само врста
сличне базе података подешавање као што смо имали
у прве апликације узорка са каталогом курса.
Дакле, ја поставити моју везу подешавања која су овде,
и ови су забележени на страници пројекта Кнек.јс
како да се подешавање ове везе.
Дакле, ја сад имам своју базу модела.
И као што сам поменуо са промена прототип,
тако да заправо бити нека врста много да -
додаје доста општенаменским на свом коду тако конвенција
који је адаптиран по Бацкбоне.јс
а сада је Бооксхелф.јс да додам ово продужи метод
као статична имовине на Ваш ЈаваСцрипт објекти,
који јој даје неку врсту готово класа-базиран наслеђе природа
где ако зовете проширити можете да подесите било који
од метода прототип да желите овде
и онда можете - било ектра статичке методе
да би ти желиш, ти могу само да их поставите сами
овде да могу да га продужи са - па ако, на пример,
више модела потребно приказати име и ово добили име.
Дакле, овде, ја кажем Име за приказ за модел
по дефаулту је без обзира на његов назив имовина је иначе повратак
но наме.
И сада на сваки модел који је -
који проширује ову базу модела, ја сада имамо метод име дисплеј
На прототипу ланац негде.
А ако желим да га замените Ја само могу да га сет - сет шта -
гетНаме бити овде.
И то вам омогућава да имитирају класична наслеђе
у ЈаваСцрипт, који могу бити лепо посебно за ствари
који се позајмљује бити сами класа заснована као објектних модела.
Па хајде да скочи назад у апликација код.
Тако сам добио пут за само сласх, само за мог индекса
а онда сласх курсеве.
И оба ова позивају метод рендерЦоурсес.
Па опет, функције су Прва класа и могу бити донет
као аргументе методама.
Дакле, у овом апп.гет, Зовем -
Ја пролази рендерЦоурсес као аргумент.
И рендер - или функције се може поставити као вар -
као што сам радила раније вар рендерЦоурсес једнако функцију
или могу бити само фунцтион рендерЦоурсес.
То не би превише много разлике.
Можете заправо имати шта се зове име функције
изрази, који су вар рендерЦоурсес једнаки
фунцтион рендерЦоурсес.
А, разлог да желе да имају име функције посебно
у чвор је да он даје вам за чишћење -
више читљив стека.
Дакле, ако имате гомилу
анонимних функција то ће рећи -
када имате грешку у вашој код Бићеш -
нећете знати која функција она зове бисте морали да погледате
на кодним бројем и број линија
и то понекад је лакше само да визуелно рашчланити
када сте заправо имају имена
за функције сами на страни сервера.
Дакле, ово рендерЦоурсес, назовимо чворова апликације -
па ја слушам о Цоре 3000 [фонетски].
И тако се све то ради у праву овде је само постаје све
курсеви из базе података.
Ја чак и не ограничавајући па то ради велики број
редова то враћа.
И како да се то уради,
на моделу курса тамо је статички имовина
зове колекција.
И тако сам то назвао - сам рекао креирате нову колекцију
за овај курс, а затим га донесе,
а затим се вратите курсеве колекција овде у обећању.
Дакле интерно, Дејвид у - Последњих пола учио мало
о обећањима и обећањима су користи веома тешко иу Кнек
и зато Бооксхелф она даје -
то вам даје тхе способност да имају гомилу
од различитих асинхрони позиви и некако се придружи онда заједно
или донесе нешто, а онда
са тим позивом другом асинхрони позив база података
и врати ту вредност и онда скок на следећи онда
и поред тада и тада имају ухватити на самом крају да сортирате
од имитирају асинхрони покушај улов понашање са асинхроним кодом,
јер ви то видите сада
али то је још теже једном почнете да се баве са тим.
Асинхрони код је само свуда
у страни сервера и ЈаваСцрипт заиста у много већој мери
него што сте навикли да ако сте урадили ЈаваСцрипт
на страни клијента.
Тако да стварно, стварно Помогао си тамо.
Али само да ти покажем Изјава дебагер
да сам говорио о у Чвор инспектор алати,
Ја ћу ићи напред и баци дебуггер линију овде
у функцији рендерЦоурсес и види где да ме води
када сам - тако чвор инспектор може да се инсталира
радећи НПМ инсталацију са Г заставом,
што значи Глобал Чвор инспектор.
И то ћу га донети за НМП и инсталирати га на глобалном нивоу
за ваше апликације тако да само могу да га зову
из командне линије.
Ја сам већ инсталиран тако да ћу ићи напред и -
заправо може имати да сачека само ћу узети,
узети две секунде.
А шта чвор инспектор опет вам омогућава
да урадите је да имају овај без главе верзија дебуггер конзоле
да сте навикли да када се ради на страни клијента и моћи
да се заустави, само додајте прецизирао истиче у вашем коду.
Стоп извршење и узети погледајте шта се дешава,
који би заиста морао добро доћи ако функција
као да су били на располагању
када отклањањем грешака ПХП код Сигуран сам.
Дакле, хајде да погледајте то.
Тако могу само да позовем чвор инспектор
и то ће рећи да посетите овај УРЛ порт 5858 да започне отклањање грешака,
то је само подразумевана колико то покреће.
Дакле, ја сам сада имам - ту је ништа не дешава овде
јер ми треба да почне.
Дакле, чвор ћорсокак [фонетски] дебуг застава и онда апп.јс.
Тако се каже за отклањање грешака слушање на порту 5858,
Експрес сервера слушање на 3000.
Дакле, ми смо да кренемо.
Дозволите ми да освежите ово.
И сад ја могу да видим апп.јс код које сам гледао
али овде у конзоли.
Па сад, ако покушам да покренете ово, можете да видите, она престаје.
То је само зато што чека његово Цео извршење код је сада
зауставио на овом дебуггер линија које сам ставио у ту.
И ја сада могу сервер -
[Нечујно Напомена]
О, да. Шта је кључна реч пречица за увећање екрана?
О постоји.
Имам га. У реду.
[Пауза]
Ох, не гледа [Фонетски] то.
Дакле, курсеви је заиста велики
јер ја не радим ограничити клаузулу или ништа,
то је само привлачан Цела база курсева
који су много од њих.
И тако - што је предмет
да заправо може срушити белешка инспектор инстанца.
То је - у реду.
Пусти ме да радим границу и онда можемо да погледамо
када то није привлачан стотине курсева.
Дакле, убијају сервер и инспектор
и ја ћу, наравно ограничење упита колекција 20.
Дакле, у Бооксхелф, за разлику од Ларавел
где можете само позвати ограничити директно или позовите било
од ових метода СКЛ да користите
директно на ОРМ пример.
Било када да користите само СКЛ метод који је обезбеђен
у Кнек, морате да позовите упит за сортирање
од славине у ланцу упита.
И ово се може позвати са или функција,
тако да могу да кажем, функција ово ограничење 10 или ви зовете
навођењем који метод желите да позовете
на пример Кнек а затим које вредност.
Тако ћемо да радимо ограничити 20 и онда подесите.
Ми заправо не треба дебуггер овде
јер можемо да сет тачака прекида
и да олакшава.
У реду.
Дакле, хајде да поставите тачку прекида овде и покушати да га учита.
Погрешна линија.
Управо овде.
[Пауза]
У реду. Тако је поново заустављен.
Дакле, сада, курсеви се Објекат са дужином од 20
и можемо видети све другачије модели То је то од реалности
из базе овде па ја имам модел објекат
који има, у атрибути имовину
на објекту су све ствари да се то налази у бази података.
Догађаја који имају регистрован
тако да можете да се региструјете различитих догађаја,
на пример када Модел се брише
или када то буде преузета,
можете да подесите различите својства или модификовати ствари.
Постоји много различитих куке и ови су забележени
у Бооксхелф.јс документација која вам омогућавају
да урадите врсту ништа да ли заиста желите да урадите
са својим моделима и колекције.
Можете да - они значило да буде стварно прилагодљив
и стварно лак за да их прилагоде
потребама Ваше апликација.
Али само гледа кроз овде,
Ја могу да видим шта другачије курсеви су доступни.
И у овом случају, ја заправо нису донети
са било којим другим подацима осим само сами курсеви.
Али у сличан начин речитим ОРМ можете подесити
се односи, па наравно припада многим инструктора.
Дакле, ако ја одем напред и зауставите апликацију,
скок на ово донесе позив, можете Можете одредити различите опције
да желите да прође поред њега.
А један од њих је способност да се учита одговарајући код
навођењем витхРелатед инструктори затим курсеви.
Дакле, хајде да се вратимо и свеже ово овде и зауставити поново.
Тако сада, курсеви објекат, исти број модела,
али сада сваки модел има хасх односима
који има инструкторе да је у вези са.
Дакле, овај курс за пример
који је курс 082 има два релатед инструктор модела.
А ви већ можете видети како много лакше то је да се сортирање
од визуелно ради него са када имате посла са стварима
да ли некако променили шифру а затим га поново покушати у ПХП.
Чињеница да можете само зауставимо извршавање потпуности
и проценити шта је овде и - у конзоли, -
умањите, курсеви је, знате,
шта да локална обим променљиве су доступни
и то је тренутно глобална објекат јер као што сте видели,
осим ако зовете са специфичан контекст, то не иде
да има нешто релевантно овде.
И онда, - дозволите ми показати још неколико примера
спровођење обећања.
Дакле, уместо да ради ово витхРелатед инструктори овде сам
ићи напред и преместите ово затим курсеви, да донесе и
Идем да се вратим цоурсес.лоад инструктори.
А онда - онда сте онда позвати.
[Пауза]
Па онда у овом тренутку, курсеви треба да се учита
са инструкторима, који је асинхрони акција.
Али пошто смо га врате од обећања, следећа вредност
за тада је год то асинхрони враћа позива
који у овом случају оптерећења је метод у Бооксхелф
да заправо враћа Сама колекција.
Дакле, то је лоадинг инструктора на ту
и онда можете да одредите - ако је само једна имовина,
можете да одредите ово као стринг, иначе,
можете да урадите инструкторе и захтеви
као метод - извините, као низ.
А онда, ако желите да добијете стварно фенси и ограничавају било
од њих даје нађе, ви да га наведете као хашиш
са инструкторима и шта онда желите да ограничите на упит.
Дакле, ја бих да се учита све инструктори на курсевима где -
па КБ за упит градитељ где је активан статус.
А можете добити заиста фенси са било
од повезаних упита желите да се изгради.
Али, само за сада, идемо да се држе само инструкторе
и ми враћа ту вредност
па онда следећи онда треба имају сви курсеви лоадед
исправно.
А ако је било грешке на сваком кораку у том ланцу,
било би скочити до улова.
Зато идемо напред и покрените да.
Дакле, сваки пут - за разлику од ПХП, једна мана је
"Јер чвор" је дугачак трчање процес, ви у ствари треба
да се заустави процес чвор као што ажурирате свој код,
јер верзија да је ради у време извршавања је,
верзија код који је био напуњен
када је почела не шта имате врста
од ажурирали свој код са од тада.
У реду. Ми ћемо поставити тачку прекида овде, овде и освежи.
[Пауза]
О, ја заправо нисам освежите страну или
тако да је на старом процесу.
Дакле, освежите оба ова и инспектор чвор.
Тако сада видимо курсеве.
Ако узмемо узорак једне од ових модела,
можемо видети да су односи објекат је празан, али сада -
и разлог да вам је потребна да подесите тачки прекида је, добро,
Поменуо сам да можете скок у стека
и видим да знате, где да ће у оквиру апликације.
Тако да сада могу да видим шта је то дешава у поступку оптерећења,
који сам дефинисао на колекцијама.
То некако "Жељни оптерећења односи на већ ".
И можете да прођете кроз и видети линију по линију
где ова ствар је иде што је одлично.
Ако имате нешто који је сломљен у вашем коду,
то је бацање неку грешку и ти си као, ја стварно желим
да видим где ово води.
Али, чим наиђете на нешто асинхрони, -
иде на следећи тицк од догађаја петље
и ви ћете изгубити - изгубите место
у инспектора чвора.
Тако да је потребно да се каже, "У реду, кад изгубим ово,
потребно је да сада заустави на овој линији поново. "
Јер ако сам задржао ударање доле, доле стека,
то би на крају имати само нестала је ја не поставили ово
Лине 22 плаву линију брејк.
Па сад, ако гледам на курсевима овде,
то треба на однос инструктори
а онда имају инструктори их приложите.
Дакле, можете видети да сам се вратио обећање од првог обећања
а онда ти можеш стално урадио низ линију.
Дакле, различити обећање, Обећавам библиотеке,
Користио сам један звао Блуебирд који је заиста корисно.
Он додаје много лепо ово за промену асинхрони -
мења позив назад база код у ствари
да ради добро са обећањима.
Али - ми [неразумљиво] шта Хтео сам да кажем тамо.
Хајде да погледамо мада на -
па рецимо да је било Проблем при преузимању нешто.
Па ја имам ову другу пут наћи под називом курса ИД.
Дакле, хајде да урадимо курс 2.
Могу ли добити - ЈСОН курс.
И то не [неразумљиво].
[Пауза]
Осећам нешто лоше овде.
Није на 3000, био сам на Цхроме инспектор картица.
У реду. Дакле, идемо на Наравно - ЈСОН курс 1.
И ово враћа само у ЈСОН формату, наравно напуњен
до неких инструктора.
Али сам хтео пример да дају овде је да,
Ја радим ЈСОН курса ИД.
И у Фетцх параметрима, Ја наводећи потребна истина,
која је опција која је документовано у Бооксхелф
где се каже да је, "Ако, Покушавам наћи и овај курс
и то није тамо, онда баци грешку. "
И то би требало да буде ухваћен од стране улов блокира овде доле.
Зато идемо напред и назад скок у инспектора чвора и покушајте
и разбити овај и видимо шта имамо.
Дакле, хајде да подесите паузу овде на ЈСОН курсу.
У реду.
Идем на курс и ЈСОН Ја бих само ставио у неким -
[Пауза]
То може бити мало незгодно понекад када покушавате
за управљање који је један је освежен
а који нису - да видимо.
Дакле, то је зове грешку празан одговор.
[Пауза]
Хајде да направимо програм за отклањање грешака у овде.
Због колико чвор заправо оптимизује
за ЈаваСцрипт издржљивост да се тако брзо на серверу,
понекад дебагер чвор има неке грешке када покушате
и сет тачака прекида динамички и ви стварно ми треба
да користи за отклањање грешака и Не линија-по-линија.
Дакле, хајде да видимо да ли ово добија нам оно што желимо.
Тако сам сет, апп.гет ЈСОН Наравно ид,
и ја сам поставио мој дебуггер тамо
у изјави цатцх на дну.
Фетцх захтевају тачно, што би требало - У реду, ево нас, сломио.
Дакле, сада видим да је престао
у овој финалној цатцх блоку јер витхРелатед -
или због тога што захтева прави наведено и нема курс
са ИД на овај велики број путем изузетка
који је сада Емессаге.
И свака грешка у ЈаваСцрипт има стека имовину
који долази уз то.
Дакле, то је често корисно за За пример,
теши се одјавите е.стацк.
И ја заиста могу да видим када сам ударио грешку.
Зато сам се грешка празна одговор, то је порука
који је послат преко Бооксхелф.
Али сада, ја могу да погледам на, на позив стека и видети
да у Бооксхелф дијалекти СКЛ модел 83,
овај празан одговор грешка је бачена.
И ово је место где сам поменуто, то је тачка анонимно
јер је анониман функција.
Ако би то било име функције ти би боље идеје
на који функционишу ствари кроз без потребе да се иде
у модел.јс код.
Иако је требало да буде прилично, прилично читљив,
тако да могу да видим да је онлине.
Шта су реци ми је била линија 83.
Дакле, ако и оптионс.рекуире одговор није постојао,
сада баца ново празан грешка одговор.
Дакле, можете видети прилично једноставан како се то ради.
И интерно у Бооксхелф,
тамо пуког гомила коришћења обећања.
Дакле, можете да наведете Промисе.метход
са Блуебирд библиотека који чува исправан контекст
ово док се враћао обећање.
И тако сам ја - ја везивање вредност овог слично
да оно што сам поменуо раније, али користећи обећања
и онда ја могу - није нов.
То може бити асинхрони или не, ако желим.
И онда ја радим неке друге ствари које могу
или не може бити асинхрони и затим врсте скаце ово.
Дакле Промисе.алл је помагач који много популарних библиотека има
где можете имати низ потенцијално може
или не може бити обећања.
А када сви они су завршен, ви се вратите да
и онда скоковима у следећи ред
и можете видети како је то заиста поравнава се пирамиде
да сте добили, повратни пакао као његов познати
ако радите све са цаллбацкс линију по линију.
Постоје начини да се око да, али обећања су један
од најбољих начина у мом мишљењу
да стварно би ваш код чист и једноставан за читање.
Дакле, то је само кратка увод у ЈаваСцрипт
и да бооксхелф и Кнек уопште.
И, ако постоји било каква питања, Знам да је тона материјала
на неки начин покушати и поклопац нарочито од језика,
за разлику од већине који сте упознати са тако да сам само хтео
да се направи тако да барем ако имате проблема
са кодом, ви могу некако скок у -
то је оно што волим да радим, јесте некако скок у библиотекама
да ја користим и видети како су ствари структуриран.
Има један који сам поменуо раније звао Бацкбоне.јс
а заправо то је [Неразумљиво] на страни клијента
да помогне дати модел поглед контролер структура
на вашем коду.
Али заправо има анотирана извор документација
који вам омогућава да некако видим.
То је стварно добро документована, шта се дешава,
како се повећавајући Ајакс функционалност
или функционалност догађај или модели и колекције врста
од објашњавања шта је дешава у процесу.
А ако сте разумели основе ЈаваСцрипт
као прототипал наследства и колико се користе функције
као оба објекта и вредности и класе и све.
То га чини много лакше да разумеју шта се дешава
на потенцијално у библиотеке да користите
и отклањање грешака код и моћи да не буде лупа главу
против зид јер Ви не разумете како
различитих комада раде, тако.