#javascript #jquery #knockout.js
#javascript #jquery #knockout.js
Вопрос:
Я учусь Knockout.js через онлайн-учебники, и хотя я понимаю их, я не до конца понимаю, как это облегчает задачу.
Например, хотя я понимаю это http://jsfiddle.net/rniemeyer/LkqTU /
this.firstName = ko.observable(first);
я не вижу, как это значительное улучшение по сравнению с чем-то подобным http://jsfiddle.net/rniemeyer/LkqTU /
function updateBox2() { var x=document.getElementById("first1");
document.getElementById('full').innerText = x.value}
но это был, конечно, чрезвычайно простой пример. (Примеры кода здесь не слишком хороши, лучше проверить jsfiddle).
Итак, мой вопрос в том, есть ли у кого-нибудь примеры кода, в которых первый код выполняет действие с использованием обычного javascript, а второй делает то же самое, но на этот раз с использованием knockoutjs и ясно показывает, насколько это большое улучшение?
Комментарии:
1. … Теперь напишите большое приложение, делая все вручную.
2. Обучение — это тяжелая работа и требует времени, немного поиграйте с knockoutjs. Небольшая подсказка, попробуйте использовать шаблоны, вам это покажется забавным.
3. Ознакомьтесь с плагином KO mapping , который действительно помог мне увидеть, где двусторонняя привязка KO может сэкономить мне много времени. Плагин сопоставления автоматически создает для вас большинство ваших наблюдаемых объектов.
Ответ №1:
Вместо того, чтобы пытаться сравнивать ванильный JavaScript с KnockoutJS, я бы попытался понять, как шаблон привязки данных упрощает разработку клиента.
Вы представляете, что ваш пользовательский интерфейс автоматически реагирует на изменение модели и наоборот? Вы представляете это, просто настраивая все привязки?
С привязкой к данным вашему JavaScript редко потребуется манипулировать DOM, потому что правильная привязка KnockoutJS будет обрабатывать многое за вас и без вашего вмешательства.
Таким образом, вы концентрируете свои усилия на манипулировании моделью в ответ на изменения пользовательского интерфейса (вызываемые KnockoutJS). И пользовательский интерфейс автоматически меняется при смене модели.
Например, если вы привязываете вызываемый наблюдаемый массив items
к представлению, подобному этому:
<ol data-bind="foreach: items">
<li data-bind="text: $data"></li>
</ol>
… и вы хотите показать 3 элемента в вашем представлении, речь идет только об этом:
viewModel.items.push("Hello");
viewModel.items.push("world");
viewModel.items.push("!");
KnockoutJS добавляет новые <li />
элементы в ваш упорядоченный список, потому что пользовательский интерфейс реагирует на изменения всего items
массива.
Теперь попробуйте использовать свой разум, быть бесформенным и быть как вода, и я почти уверен, что вы сможете сравнить, какая дополнительная работа потребуется без использования привязки данных, и сколько строк кода вы можете сэкономить в реальном проекте, используя этот подход!