Какво е Knockout.js?
Knockout е страхотна библиотека за JavascripТова ви помага да създадете текстово богат потребителски интерфейс с добри възможности за показване и редактиране, използвайки само ясен и чист основен модел на данни. Винаги когато локалното ви потребителско съдържание трябва да се актуализира автоматично (например, в зависимост от промени в поведението на потребителите или външни източници на данни), KO може лесно да се имплементира и поддържа много лесно.
Важни характеристики на KO:
Елегантно проследяване на зависимости – Винаги когато моделът на източника на данни се промени, той може автоматично да актуализира зададеното съдържание на вашия потребителски интерфейс. Декларативно свързване - Свързва вашия потребителски интерфейс с модела на източника на данни по прост и лесен начин, и можете да използвате всеки шаблон за вложена структура, за да изградите сложен динамичен интерфейс. Добра мащабируемост – може да се реализира персонализирано поведение с няколко прости реда код, който да се обвърже като нова декларация.
Други предимства:
Чиста библиотека Javascrip{filtering}t - съвместима с всяка сървърна и клиентска технология. Може да се приложи добре към съществуващи приложения – без необходимост от промени в основната архитектура на програмата. Простота - само 13K след компресия на Gzip. Съвместим с всеки основен браузър (IE 6+, Firefox 2+, Chrome, Safari и други) Пълен набор от спецификации (с разработка, базирана на поведение) – това означава, че те могат лесно да бъдат проверени в нови браузъри или платформи. Разработчиците, запознати с Ruby on Rails, Asp.net MVC или други MVC технологии, може да открият, че това е MVC форма в реално време с декларативен синтаксис. С други думи, можете да мислите за KO като за начин да създадете потребителски интерфейс чрез редактиране на JSON данни... Каквото и да ти донесе.
Как да го използвам?
Най-бързият и забавен начин да започнете е чрез интерактивно обучение, и след като овладеете най-основните техники и научите всяка онлайн инстанция, ще сте готови да работите по проектите си.
Конкурират ли се KO и Jquery (прототип и др.) или могат да се използват заедно?
Всички обичат Jquery! В миналото трябваше да търпим различни непоследователни методи за манипулация на обекти с DOM, а появата на Jquery е чудесна алтернатива на тромавите рамки от миналото, правейки го гъвкав и лесен за използване. Jquery е отличен и лесен за използване за манипулация на елементи на уеб страница и обработка на събития, докато KO решава друг проблем.
Ако интерфейсът ви е малко по-сложен и съдържа част от същото поведение, ако използвате само Jquery, интерфейсът ще бъде по-сложен и труден, отколкото си мислите, и ще бъде доста скъп за поддръжка. Помислете за примера с показване на списък с елементи в таблица, посочване на броя на списъците в таблицата и включване на бутона "Добави", когато броят на списъците с елементи е по-малък от 5, иначе е изключен. Jquery няма базова концепция за модел на данни, така че ако искате да получите броя на списъците с проекти, трябва да направите изводи от числата на таблицата/tr/div. Ако трябва да покажеш количеството данни в определени SPANS, трябва също да помниш да актуализираш текста на SPAN при добавяне на нови данни. Разбира се, трябва да помните, че когато общият брой >=5, трябва да изключите бутона Добави. След това, ако искате да реализирате функцията Delete, трябва да посочите кой DOM елемент трябва да се смени след като е кликнат.
Как е различно да го направиш с Knockout?
С KO всичко става много просто. Това ви позволява лесно да мащабирате сложността на проекта си, без да се притеснявате за възникващите несъответствия в данните. Той просто преобразува данните ви в Javascrip{filter}t масив и след това използва Foreach, за да свърже масива с данни към таблица или набор от div-ове на страницата. Винаги когато масивът от данни се промени, потребителският интерфейс автоматично реагира на промяната (не е нужно да показваш как да вмъкнеш нов ред или къде), а останалото е синхронизацията на UI данните. Например, можете да декларирате следния SPAN, за да покажете обема данни:
Това е всичко! Не е нужно да пишете код, за да го обновите, актуализацията му зависи от промените в масива myItems. По същия начин активирането и изключването на бутона Add зависи от дължината на масива myItems, както следва:
След това, ако трябва да реализирате функцията "Delete", не е нужно да уточнявате как да манипулирате UI елементите, просто трябва да модифицирате модела на данните.
Резюме: KO няма намерение да се конкурира с jQuery и други подобни рамки за манипулация на DOM. KO предоставя високопоставен начин за корелиране на модела на данни с потребителския интерфейс.KO не зависи от самия jQuery, но можете да използвате jQuery заедно, Ярките и нежни промени в потребителския интерфейс изискват използването на jQuery.
Ресурси:
http://www.aizhengli.com/knockoutjs/50/knockout.html
http://knockoutjs.com/
|