Що таке 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 як спосіб створити інтерфейс користувача UI, редагуючи дані JSON... Що б це не давало тобі.
Як ним користуватися?
Найшвидший і найцікавіший спосіб почати — це інтерактивне навчання, і коли ви опануєте найпростіші техніки та вивчите кожен онлайн-інстанс, будете готові працювати над своїми проєктами.
Чи конкурують KO та Jquery (прототип тощо) чи їх можна використовувати разом?
Всі люблять Jquery! Раніше нам доводилося терпіти різні несумісні методи API для маніпуляції об'єктами DOM, і поява Jquery стала чудовою альтернативою незграбним фреймворкам минулого, зробивши його гнучким і простим у використанні. Jquery відмінний і простий у використанні для маніпуляції елементами веб-сторінки та обробки подій, тоді як KO вирішує іншу проблему.
Якщо ваш інтерфейс UI трохи складніший і містить схожу поведінку, якщо ви використовуєте лише Jquery, інтерфейс буде складнішим і складнішим, ніж ви думаєте, і його обслуговування буде досить дорогим. Розглянемо приклад: відображення списку елементів у таблиці, вказування кількості списків у таблиці та увімкнути кнопку «Додати», коли кількість списків елементів менша за 5, інакше вимкнена. Jquery не має базової концепції моделі даних, тому якщо хочете отримати кількість списків проєктів, потрібно робити висновки з таблиць/tr/div номерів. Якщо потрібно відобразити обсяг даних у певних SPAN, варто також не забути оновлювати текст SPAN при додаванні нових даних. Звісно, варто пам'ятати, що коли загальна кількість >=5, потрібно вимкнути кнопку додавання. Потім, якщо ви хочете реалізувати функцію Видалення, потрібно вказати, який елемент DOM потрібно змінити після натискання.
Чим це відрізняється у Knockout?
З KO все стає дуже простим. Це дозволяє легко масштабувати складність вашого проєкту, не турбуючись про невідповідності даних. Він просто конвертує ваші дані у масив Javascrip{filter}t, а потім використовує foreach для зв'язку масиву даних із таблицею або набором div на сторінці. Щоразу, коли змінюється масив даних, інтерфейс автоматично реагує на зміну (не потрібно вказувати, як вставити новий рядок чи куди), а решта — це синхронізація даних UI. Наприклад, ви можете оголосити наступний SPAN для відображення обсягу даних:
Ось і все! Для оновлення не потрібно писати код, оновлення залежить від змін у масиві myItems. Аналогічно, увімкнення та вимкнення кнопки Add залежить від довжини масиву myItems, а саме:
Після цього, якщо потрібно реалізувати функцію «Видалити», не потрібно вказувати, як маніпулювати елементами інтерфейсу, достатньо змінити модель даних.
Резюме: KO не має наміру конкурувати з jQuery та іншими подібними фреймворками для маніпуляції DOM. KO забезпечує високорівневий спосіб кореляції моделі даних з інтерфейсом користувацького інтерфейсу.KO не залежить від самого jQuery, але ви можете використовувати jQuery разом, Яскраві та делікатні зміни інтерфейсу вимагають використання jQuery.
Ресурси:
http://www.aizhengli.com/knockoutjs/50/knockout.html
http://knockoutjs.com/
|