[Powered by Google Translate] [Семинар] [Javascript, рамки: Защо и как]
[Kevin Schmid] [Harvard University]
[Това е CS50.] [CS50.TV]
>> Здравейте, всички. Добре дошли на JavaScript рамки семинар.
Моето име е Кевин, а днес аз отивам да се говори за рамки JavaScript,
и целта на този семинар е да не можете да се, да речем, овладеят определена рамка по себе си
но за да ви дам широк въведение в няколко рамки
и да се покаже защо ние никога няма да искате да използвате рамка.
>> Преди да направи това, ще осигури малко фон в JavaScript,
и след това ще го взема от там.
Ще започна с изпълнение на списък със задачи.
Ето нашия списък със задачи за днес.
Това е нещо смешно. Трябва да се приложи списък със задачи в JavaScript.
Това е, което тя ще изглежда така, така че това е първата ни цел.
Ние няма да се използват рамка да се направи това.
Ще JavaScript код и да получите списък със задачи за работа.
След това ние ще се подобри дизайна, без да използвате рамка.
Ние ще обсъдим различни неща, които можем да направим само с JavaScript сам
да направим нашия списък със задачи малко по-добре организиран.
След това отиваме да се хвърлят в някои JQuery,
и след това отиваме да гледат едно и също да направя списък,
просто изпълнява в различни рамки, и ние ще обсъдим
плюсовете и минусите по пътя.
>> Да започнем прилагането на този списък със задачи.
Да кажем, че си е дал този HTML.
Отивам, за да има малко по-малък.
Както можете да видите, имам малко глава, която казва Todo
и малка кутия, където да въведете описание на Todo
и след това нов бутон позиция, така че нека се опитаме да въведете нова Todo към този списък.
Дайте JavaScript рамки семинар,
и аз съм за да удари нов елемент.
Имам това предупреждение JavaScript, който казва ми изпълнение.
Трябва да го приложи.
Да се ​​провери на код за това, както на HTML и JavaScript.
Тук е нашата HTML.
Както можете да видите тук, тук е нашата малка глава Todos.
Това беше смела, че нещо в горната част,
и след това имаме полето за въвеждане на контейнера,
и след това има определен атрибут на този бутон, който нарича тази функция addTodo.
Някой иска ли да познае какво е това на клик се показваше?
[Student недоловим отговор]
Добрият, на клик е нещо като събитие,
като кликване на мишката е просто едно събитие, и това, което правим
е ние сме обвързване случай на натискане на този бутон, за да изпълнява тази функция.
AddTodo е това събитие манипулатор за кликване на бутона.
>> Както можете да видите, когато щракнете върху бутона Нов елемент
в случай на клик ще бъде уволнен, и тази функция получава т.нар.
Нека да разгледаме функцията.
Както виждате, тук е моят JavaScript код досега.
Какво имам в горната част е глобална структура на данните за моя списък със задачи.
Тя изглежда като масив. Това е просто празен масив.
И след това имам addTodo функция, която видяхме по-рано,
и единственият ред код там е този сигнал.
Той предупреждава ме изпълни, а след това имам две задачи в ръка.
Трябва да се добави, че със задачи за глобална структура на данните,
и след това искам да извадя на списък със задачи.
Нищо прекалено фантазия, просто все още, но JavaScript може да сте запознати с,
така че аз ще карам бавно и преглед на основите на JavaScript по този начин.
>> Нека дадем този шанс.
Да речем, че потребителят въведе нещо в това поле.
Просто написали нещо тук, текст.
Как да сортирам на достъпа този текст чрез JavaScript?
Не забравяйте, че JavaScript, една от основните му характеристики е, че тя ни дава
този програмен достъп до DOM.
Тя ни позволява да получите достъп до елементи и техните имоти от действителното HTML.
Начинът, по който направи това с голи кости JavaScript
е, че ние всъщност може да се използва функция в JavaScript нарича getElementByID.
Искам да съхранява текста, който е написал там в някои променлива,
така че аз ще кажа нова променлива наречена new_todo,
и аз отивам да получите този елемент.
Това е функция,. GetElementByID.
И сега аз съм се елемент от ID, така че имам нужда от ID на това текстово поле,
така съм го даде на ID new_todo_description.
Ето как аз ще се елемент.
Това е аргументът ми за тази функция, за да се определи кои ID, за да получите.
И така, това е един елемент в HTML, и има свойства.
Вие сте виждали тези. Те са атрибути.
Тази характеристика на текста елемент, който съхранява вход на потребителя, се нарича стойност.
Спасих стойността на това текстово поле, сега в тази променлива наречена new_todo.
Сега имам програмен достъп до тази променлива, която е нещо страхотно
защото сега това, което мога да направя е, че може да го добавите към моя списък със задачи.
>> Начинът, по който ние ще направим това в JavaScript-и не се притеснявайте, ако не сте запознати с това,
но просто става чрез е todos.push
защото това е името на глобалната си структура от данни тук,
и аз отивам да прокара new_todo.
Това е страхотно, защото сега съм го добавя към моя JavaScript
представяне на този списък със задачи.
Но сега как мога да го върна към HTML?
Трябва да се намери начин да се справи с това избутване.
С други думи, някак трябва да се направи това.
Това, което ние ще направим е, че ще се направи списък със задачи.
Трябва ли да актуализирам друга HTML на тази страница,
и както можете да видите, че съм излязъл от този малък контейнер тук,
този делител на страницата, чието ID е Todos,
и аз отивам да се постави списък със задачи там.
Първо аз ще го разчисти, защото, да речем, е имало стар, за да направите списък там.
Аз съм се, че елемент от ID отново,
и аз съм достъп до вътрешната HTML на този елемент,
и аз отивам да изчисти това.
Ако оставим този код, е, че ще видите празен нищо,
и сега искам да се започне оказване новата ми да направя списък.
Аз основно ще унищожи моя списък със задачи.
>> Сега вътрешната HTML вътрешността че Todos дивизия е напълно ясен,
и сега трябва да започнете да добавяте в списъка ми.
Първото нещо, което искате да добавите отново е неподреден списък етикет,
което по същество означава, че това е началото на неподреден списък.
Сега за всеки елемент в моята Todos масив искам да го разпечатате вътре, че HTML.
Искам да го добавите към дъното на този списък.
Точно като в C, мога да използвам за линия, и аз отивам да започне в началото на моя списък
на елемент 0, и аз ще отидем по целия път към дължината на списъка.
Ние може да се получи в действителност дължината на масив в JavaScript използват дължината имот.
По принцип аз ще направя нещо подобно вътре от тук
да разпечатате този елемент.
Мога отново достъп до Todos Div, вътрешната HTML собственост на това,
и аз отивам да се добави на този нов елемент от списъка, и че ще бъде заобиколен от
този етикет Ли, и аз отивам да се свързвам с + оператор,
и това е Ith елемент от моята Todos масив,
и след това отивам да затворите този етикет.
Сега за всеки елемент ще се добави нов запис в списъка.
И тогава всички ние наистина трябва да направите, е да затворим този етикет.
Просто трябва да се прекратят, че неподреден списък етикет.
>> Обичате ли да почувствате как работи?
Това отваря целия списък.
Към това се добавя отделни елементи от Todos списъка към списъка,
и след това се затваря целия списък, а това е моята addTodo функция.
По принцип съм се започне с получаване на Todo от текстовото поле.
Да добавя, че на Todos масив, а след това отново да направи списък със задачи.
Сега мога да се добавят точки към моя списък.
Това е нещо вълнуващо, защото само с няколко реда код
ние сме основно се представи списък със задачи, където можем да добавите елементи.
Great.
Това е нещо като въведение в основите на JavaScript.
Не се притеснявайте твърде много за синтаксиса за сега,
но мисля за това концептуално.
Имахме някои HTML.
Имахме текстовото поле на страница, която основно се позволява на потребителите да въведете да направя елемент за добавяне.
И след това се използва JavaScript за да донесе, че Todo от това текстово поле.
Ние се съхранява, че във вътрешността на масива JavaScript, който е основно като
нашата програмна представителство на списък със задачи,
и след това да го отпечата.
Това е todos.js.
>> Това е нещо страхотно, но как можем да вземем това допълнително?
Е, както виждате, това не е като пълен списък със задачи.
Например, не мога марки някой от тези елементи като непълна,
искал, ако исках да reprioritize елементите или изтриване на елементи.
Това е добре, но можем да вземем това допълнително.
Аз няма да говоря твърде много за добавяне на допълнителни функции,
но можем да вземем, че по-нататък.
Да поговорим за добавяне на още една особеност на този списък със задачи,
която ще бъде в състояние да се провери индивидуално да направя т.
и са го да бъде зачеркнат, така че основно да кажа, че съм го правила.
Нека да разгледаме някои код, който може да постигне това.
Забележете, което съм направил в горната част е добавил съм
нов глобален масив наречен пълна.
Аз съм основно използват това, за да съхранявате дали елементите на списък със задачи
са пълни или не.
Това е един от начините да се направи това.
Ако погледнем в изпълнението на този, на дисплея,
основно, ако въведете Todo и натиснете този бутон превключвате
го задрасква, така че всеки елемент от този списък има или пълен
или незавършен вид, и аз съм с друг масив да представлява това.
>> По принцип за всеки Todo в тази Todos масив
има един елемент в пълна гама, която основно се показва
дали е пълна или не.
Аз съм имал да pretty минимални промени в този кодекс,
така че тук е нашата addTodo функция.
Забележете, че тук съм я натиснете върху масив,
и тогава аз съм бутане 0 до тази пълна масив,
основно успоредно с тази нов тласък Todo да се каже
Аз съм добавяне на тази позиция, и е свързан с тази стойност,
което означава, че тя е непълна.
И тогава аз съм прекрояване на списък със задачи.
Сега, забележете Аз сте добавили този drawTodoList функция.
Това отнема много на кода имахме преди,
основно се разчисти полето и след това обръща новия списък със задачи.
Но забележете, че вътре в този за линия правим малко повече сега.
Ние основно проверка дали позицията, съответстваща на Ith Todo тук
е пълна, и ние сме различно поведение в тези две обстоятелства.
Ако е пълна, ние добавяме този етикет дел,
която е в основата на начина, по който може да се получи, че стачка през ефект
зачеркване на списък със задачи, ако е пълен,
и ако не е, няма да го включи.
И така, този вид ще се погрижи за това,
>> и това е един от начините да се постигне това.
И след това забележите, когато потребителят кликне една от тези
ние превключвате приключване статут на фирма.
Когато потребителят кликне, ще се обърне, дали това е било завършено или не,
и след това ще я прехвърлите.
Този вид дела.
Ние имаме тези функции, които изпълняват своите собствени задачи,
и това е добре.
Има ли нещо, което можем да направим по-добре за това, все пак?
Забележете, ние имаме тези две глобални масиви.
Ако това е C, и имахме две масиви, вид, представени
данни, че е нещо, свързани по някакъв начин
какво ще използвате в C да се съчетаят тези две полета
в нещо, което капсулира двете парчета от информация?
Някой иска ли да направя едно предложение?
[Student недоловим отговор]
>> Точно така, за да можем да използват някакъв вид структура,
и ако смятате, обратно, да речем, PSET 3,
запомни имахме речник, а след това имахме дали думата
е в речника, и цялата тази информация е пусната заедно
в някои от структурата на данните.
Едно нещо, което мога да направя с този код, за да се избегне наличието на тези две различни масиви
за подобни части от информацията е, че може да ги комбинирате в един обект JavaScript.
Нека да разгледаме това.
Забележете, имам само един масив в горната сега
и това, което съм направил, е-и това е само JavaScript синтаксис за сортиране на
създаване буквално версия на даден обект,
и забележиш, че има две свойства, така че ние имаме Todo,
и това е съхранява заедно с независимо дали е пълно или непълно.
Това е много подобен код.
Ние сме с помощта на JavaScript обекти.
Този вид усъвършенства неща.
Както сега, всички тези области на информация, свързана се държат заедно.
Когато отиваме да го разпечатате, ние можем да получите достъп до полета.
>> Забележете как се справяме Todos [I]. Пълна
вместо да се проверява пълния спектър поотделно,
и забележите, когато искаме да получим за задачи низ Махаме за задачи имот
на тази Todo, така този вид има смисъл, защото
всеки елемент има следните характерни свойства за него.
Той има Todo, и тя е, дали е пълна или не.
Не е твърде много промени има функционално, просто добавя още малко към кода.
Това е подобрение на някои фронтове, нали?
Искам да кажа, отчетени от дизайна малко.
Сега имаме обекти за основно капсуловат тези данни.
Има ли нещо повече можем да направим от тук от гледна точка на JavaScript?
Като забележете, че този код тук
за получаване на вътрешната HTML на Div
е малко, предполагам, дълго.
Има document.getElementById ("Todos"). InnerHTML.
Едно нещо, което можем да направим, за да направи този код изглежда малко по-приятелски
така че не би трябвало да продължавате да превъртате наляво и надясно, напред и назад,
е, че биха могли да използват библиотеката като JQuery.
>> Да се ​​провери Семинар 2,
и това е един и същ код, но това е направено с JQuery.
Вие не може да бъде твърде запознат с JQuery,
но просто знам, че JQuery е нещо като библиотека за JavaScript
че е по-лесно да правят неща като достъп до отделни елементи на DOM.
Тук вместо да каже document.getElementById ("Todos"). InnerHTML
Мога да използвам много по-чист начин в Jquery,
което е просто да се използва селектори.
Както можете да видите, този код се получи малко по-чисти,
много подобен функционално, но това е идеята.
Видяхме няколко неща досега,
и затова започнахме с просто сурова изпълнението JavaScript.
Ние добавихме нови функции и показаха как можем да я подобрим с
Просто това, което имаме в JavaScript.
>> Някой може ли да виждам никакви проблеми с този дизайн?
А именно, предполагам, или че не е задължително трудностите, но нека да кажем,
ние не бяхме прави списък със задачи на проекта, а утре ние решихме
искахме да направим списък с покупки или проект, списък за пазаруване.
Много от тези характеристики са много сходни.
Много от нещата, които искаме да се измъкнем от JavaScript, са много чести,
и това подчертава необходимостта от някакъв начин
направи това по-лесно да се направи.
Трябваше да се изгради всичко това HTML достъп, всичко това достъп DOM,
сякаш отивам да представлява списък със задачи с този модел.
И забележи, че съм отговорен, тъй като разработчик JavaScript
за запазване на HTML и JavaScript, че имам в синхрон.
Нищо автоматично се правят, че JavaScript представителство
или да направя списък се избута към HTML.
Нищо сила, че с изключение на мен.
Аз трябваше да се напише жребия за вършене функция списък.
И това не може да бъде-Искам да кажа, че е разумно да се направи това,
но може да е досадно понякога.
Ако има по-голям проект, който може да бъде трудно.
>> Рамки, една от целите на рамки
е да се опрости този процес, и нещо като фактор от
тези общи-Предполагам, че може да се каже-дизайн модели
че хората обикновено имат някакъв начин за представяне на данни,
дали това е списък с приятели, независимо дали това е карта информация
или нещо или да направя списък.
Някои хора имат като цяло начин на представяне на информацията,
и те по принцип трябва да се съхранява тази информация някак в синхрон
между това, което потребителят вижда в някаква цел,
казано по отношение на подобен модел на контролера, че сте видяли в лекция,
и след това на модела, който в този случай е този масив JavaScript.
Рамки ни даде начин за решаване на този проблем.
Сега нека да разгледаме изпълнението на настоящия списък със задачи
в рамка наречена angularjs.
Това е то. Забележете, тя се вписва в слайд.
Не трябва да се придвижите наляво и надясно.
Това вероятно не е голяма причина да препоръчваме да използвате рамка,
но забележете съм някога достъп до отделни HTML елементи тук?
Имам ли някога ще в DOM?
Виждате ли някаква document.getElementById или нещо подобно?
Не, това е изчезнал.
>> Ъглова ни помага да се запази DOM и JavaScript нашия представителство на нещо
вид в синхрон, така че ако това не е във файла JS,
ако няма начин на програмно получаване на всички, че HTML съдържание
от JavaScript как ще спазвам този в синхрон?
Ако не е в. Файл JS, тя трябва да е в HTML, нали?
Това е най-новата версия на HTML файл,
и забележите, сме добавили много тук.
Забележете, има тези нови характеристики, които казват, NG-клик и NG-повторение.
Ъглова на подход към решаването на този проблем на трудности при проектирането
е да се направи основно HTML много по-мощен.
Ъглови е начин за което ви позволява да направите HTML малко по-изразителен.
Например, мога да кажа, че аз отивам да връзвам или свързване на това текстово поле,
на променлива в рамките Ъглови моя код JavaScript.
Това NG-модел прави точно това.
Това основно се казва, че елементът вътре в този текстовото поле,
просто да свържем тази с променливата new_todo_description
в рамките на код JavaScript.
Това е много мощен, защото не е нужно да отидете на изрично
на DOM, за да получите тази информация.
Не е нужно да казваш document.getElementById.
Не е нужно да използвате jQueries като достъп DOM.
Мога да го асоциирате с променлива, а след това, когато сменя тази променлива
в рамките JavaScript тя държи в синхрон с HTML,
така че опростява процеса на се налага да отидете напред и назад между двете.
Това прави ли смисъл?
>> И забележи, че няма HTML код за достъп.
Току-що направени HTML по-мощни,
и сега, например, можем да направим нещата по този начин,
харесва, когато кликнете върху този, обадете се на тази функция в обхвата на todos.js,
и бихме могли да направим, че и преди, но има и други неща, като това NG-модел,
и забележите това нг-повторение.
Какво мислиш, че това не?
Ето нашия неподреден списък от преди.
Имаме ул. тагове,
но съм някога прави този списък вътрешността на JavaScript код?
Аз не съм някога изрично прави този списък.
Как става това?
Начинът, по Ъглови изпълнява това е това се нарича повторител.
Основно това се казва, че аз искам да отпечатате тази HTML
за всеки вътре Todo на моя Todos масив.
Вътре на todos.jr има Todos масив точно тук,
и това ще кажа Ъглови минават през този масив, както и за всеки елемент се видим
Искам да отпечатате тази HTML.
Това е нещо страхотно, защото аз просто мога да го направя
без да се налага да пиша за линия,
които за да направя списък, че е само на 30 реда код
може да не е най-полезно нещо,
но ако имате голям проект, това може да получите много удобно.
>> Това е едно решение на този проблем, като HTML по-мощни,
и който ни позволява да се поддържа JavaScript и HTML в синхрон.
Има и други възможни начини за решаване на този проблем,
и не всяка рамка прави това.
Не всяка рамка работи в тази насока.
Някои рамки имат различни подходи,
и може да откриете, че ви харесва кодиране в една рамка върху друга.
Нека разгледаме още един.
Това е списък със задачи кодирани в рамка наречена Backbone.
Отивам да мине през това бързо.
Ще започна с HTML, преди да отидем там.
Една секунда.
Започва с HTML, като забележите, нашият HTML е много подобен
на това, което е било преди, така че не е твърде много нов в този фронт.
Но нашата JS файл е малко по-различна.
Backbone вид има тази идея, или се основава на идеята,
че много от това, което правим с, да речем, нашите JavaScript проекти
се мислят за модели и колекции на тези модели.
Това може да бъде, например, снимка и колекции от снимки,
или идеята на един приятел и колекции от приятели.
И много пъти, когато сме програмирането с JavaScript приложения
ние ще сортирате представляват идеята за събиране на приятели
някак в JavaScript, и Backbone ни дава този слой
на върха на съществуващите масиви JavaScript, както и предмети
да се направи по-силни неща, с които по-лесно.
>> Тук съм определил да направя модел,
и не е нужно да се притеснявате твърде много за синтаксиса,
но забележете, че това, което е едно от свойствата на това?
Той има по подразбиране поле.
Backbone ми позволява да се определят вече на разстояние бухалката
всяко ново да направя, че да създам ще има тези настройки.
Сега мога да персонализирате това, но има възможност да определя по подразбиране
е хубаво, и това е нещо удобно, защото това не е нещо, което е като
присъщи на JavaScript, и сега не трябва изрично да
казват, че Todos са непълни.
Мога да кажа, правото на разстояние бухалката, че Todos ще бъдат маркирани като непълни.
Забележете, тогава за какво е това?
Сега имам списък със задачи, както и че една колекция.
Обърнете внимание на областта, свързана с този модел казва Todo.
Това е моят начин да кажа, че Backbone
Отивам да се мисли за събиране на тези индивидуални Todos.
Това е в основата на модел на структура за моята програма.
Тук имам тази идея за събиране,
и в общи линии елементите, съдържащи се в тази колекция всички ще бъдат тези Todos,
и това е съвсем естествено в този смисъл
защото имам Todos, и аз ги имам в колекцията.
>> Нека да погледнем малко по-на това.
Тук е Backbone гледка.
Другото нещо, което Backbone казва, е, че
много от моделите, които си мислиш за или дори колекции
ще трябва да има някакъв начин да се показва.
Ние трябва да се направи, че да направя списък,
и няма ли да е хубаво, ако можем да осигурим за всеки модел
или асоцииран с всеки модел тази гледна
която ни позволява да предполагам свържете двете заедно?
Като има предвид, преди да се наложи да се използва за линия, която ще минава през
всеки Todo в нашия списък и след това да го отпечатате тук
ние всъщност може да го свържете с този модел.
Това е изглед на задачите.
Това е свързано с Todo открихме по-рано.
Сега всеки Todo се Показвани или renderable
от тази на изглед на задачите.
Забележете, някои от полетата.
Какво мислиш, че това е име на маркер, име на маркер: Li?
Запомни от преди, когато ние искахме да постанови Todo
ние ще трябва изрично да сдвоите нашите Todos с този етикет Ли.
Сега се казва, че когато това Todo ще живее
ще бъде вътре в етикет за Ли.
И сега ние сме също така асоцииране събития с нашите Todos.
>> Всеки Todo има това събитие.
Ако щракнете върху почти превключващ бутон, това е, което искам да кажа тук,
след това основно марка на Todo като обратното на това, което беше преди
и след това отново се правят прилагането.
Това е вид, подобен на код преди.
Помниш ли, когато го маркира като или обратното, или-
и после го отново предоставени.
Но забележете сега това събитие се използва за да бъде нещо, което е в HTML.
Тя седеше там.
Бутонът се откри на кликване.
Когато щракнете върху бутона, той вид прави неща, които да
създаден, че Todo да бъде непълна.
Тук сме свързани, че случай на кликване на бутона за превключване
и заден независимо дали е включен или изключен с това мнение.
>> Това е един добър начин за създаване на това събитие, така че това е много тясно свързани
за тази цел, и така забележите това още една.
Аз имам този рендер метод, и ние не трябва да мине през подробностите.
Това е нещо подобно на това, което сме имали преди,
но забележете аз не съм примка през нищо.
Аз не съм за печат, които ул. маркер, който е нещо като да кажеш, че отивам да отпечатате всички елементи.
Аз съм осигурява функционалност за налагане на този един да направя елемент.
Това е един много мощен концепция защото в общи линии
нашия списък със задачи се състои от всички тези Todos, и ако можем да основно зададени
начина, по който да се направи една от онези Todos
тогава ще можем да разполагаме със силен гръбнак по себе си правят всички на Todos
като се обадите на рендер метод на отделните Todos.
Това е концепция, която е от полза тук.
Сега е добър въпрос да попитам как е, че предложението бъде взети заедно?
Тъй като ние сме в състояние да направи един Todo,
но как да получите представа на множество Todos?
>> Нека да разгледаме това.
Това е последната част.
Забележете, ние имаме да направя списък оглед тук,
и усетите, че е също цел.
И да разясни няколко неща,
това инициализира метод ще се нарича, когато ние първо да създадете този списък със задачи.
Както можете да видите, това е като създаване на списък със задачи и свързването му с това мнение.
И след това добавя функциите тук Така че основно, когато добавите елемент-
това е подобно на addItem метод видяхме преди-
Отивам да се създаде нов обект със задачи, и забележите, аз съм всъщност обадите
този нов метод със задачи, така че това е предвидено в Backbone,
и аз може да премине в Моите имоти тук.
И сега всеки със задачи, които създавам да използвате това ще получите тази функционалност, която видяхме преди.
Забележете, аз съм разчистване текстовото поле преди-малък малък детайл-
и тогава аз съм добавяне на тази колекция.
>> Това почти изглежда странно, защото преди ние просто трябваше да направя, че todos.push,
и след като са били извършени, и това може да изглежда по-сложно за този проект,
и може да откриете, че Backbone или дори ъглови или всяка друга рамка
не отговарят на вашия конкретен проект, но аз мисля, че е важно да се мисли за
какво означава това по-голям мащаб за по-големи проекти,
защото, ако имахме по-голям проект, където бяхме представляващи
някои наистина сложна събиране, нещо по-дълбоко, отколкото просто да направя списък,
нека да кажем, списък с приятели или нещо такова, това би могло да дойде по-удобно
защото бихме могли да организираме нашия код в един наистина удобен начин,
по начин, който ще направи по-лесно за някой друг
който искаше да вземе един проект за доразвиване.
Можете да видите, че това осигурява голяма структура.
И след това се обаждам направи по този addItem.
Умея да оказвам, както можете да видите, и не е нужно да се разбере този пълен синтаксис,
но по принцип за всеки модел, че ще се обадя на отделните методи за рендер.
Това е вид, когато това идва от.
Нека само да уточним как да се правят индивидуални Todos,
и тогава да ги лепило заедно като едно цяло.
Но това осигурява начин на абстракция,
защото може да се промени начина, по който да вземе решение на отделните Todos,
и аз не би трябвало да промените някоя от този код.
Това е нещо страхотно.
>> Дали някой има някакви въпроси за рамки JavaScript?
[Student недоловим въпрос]
О, разбира се, че е чудесен въпрос.
Въпросът беше как съм включват рамки?
Повечето рамки JavaScript са основно само JS файлове
че можете да включите в горната част на вашия код.
Забележете, в главата част от моя HTML имам всички тези скрипт тагове,
и крайния таг скрипт е кодът, който сме написали.
И тогава на три рамкови кодове са просто също скрипт тагове.
Аз съм ги включително и от това, което се нарича CDN,
което ми позволява да го вземете от някой друг в този момент
но всеки има тази рамка-голяма степен може да намерите съдържание
за определена библиотека JavaScript за някои, CDN или нещо подобно,
и след това можете да включите тези скрипт тагове.
Това прави ли смисъл?
Cool.
>> Това са два различни подхода.
Тези, които не са единствените подходи за решаване на този проблем.
Има много различни неща, които
някой може да се направи, и има много рамки там.
Ъглови и Backbone не разкажа цялата история.
Успех с окончателните проекти, и много ви благодаря.
[CS50.TV]