KnockoutJS представляет собой библиотеку на языке JavaScript, которая реализует паттерн MVVM (Model - View - ViewModel) и предназначена для создания функциональных пользовательских интерфейсов на JavaScript и HTML.
Первый релиз KnockoutJS вышел в июле 2010 года. Автором фреймворка является работник Microsoft Стив Сандерсон (Steve Sanderson). Хотя официально библиотека не является продуктом компании Microsoft.
По некоторым данным в середине 2016 года KnockoutJS использовался более чем на 41000 сайтов.
Текущей актуальной версий является версия KnockoutJS 3.4.0, которая вышла в октябре 2015 года.
Официальным сайтом библиотеки является http://knockoutjs.com/, где можно собственно загрузить файл библиотеки, найти сопроводительные справочные материалы и посмотреть прочую сопутствующую информацию.
Основная концепция библиотеки заключается в том, что библиотека позволяет автоматически отслеживать изменения в интерфейсе и в соответствии с изменениями в элементах интерфейса синхронизировать используемый источник данных. Иначе говоря KnockoutJS позволяет простой подход к использованию привязки данных.
KnockoutJS имеет следующие особенности:
Элегантное отслеживание зависимостей: библиотека автоматически обновляет элементы пользовательского интерфейса при изменениях в привязанном источнике данных
Декларативный способ привязки: библиотека позволяет декларативным способом в коде HTML привязывать элементы пользовательского интерфейса к источнику данных
Расширяемость: при необходимости можно легко добавить кастомное поведение к уже имеющимся возможностям библиотеки
Кроме того, библиотека обладает рядом дополнительных преимуществ:
Она написана на чистом JavaScript и поэтому работает с любой технологией серверного уровня и на множестве клиентов
Для ее добавления не надо вносить существенных изменений в уже существующий код веб-страниц
Компактность и легковесность - она весит всего 13 кБ после сжатия
Поддержка большинства браузеров - от самых последних до довольно старых (IE 6+, Firefox 2+, Chrome, Safari, Edge)
Поскольку библиотека реализует паттерн MVVM, то применение Knockout вовлекает три компонента:
представление (view) - код HTML-элементов, к которым привязываются данные
модель (model) - сами привязываемые данные
ViewModel - является посредником между представлением и данными, осуществляя между ними привязку
Для подключения библиотеки мы можем загрузить ее напрямую на локальный компьютер по по адресу http://knockoutjs.com/downloads/index.html и после загрузки подключить на веб-страницу:
<script type="text/javascript" src="knockout-3.4.0.js"></script>
Но также можно использовать и репозитории CDN. В репозитории Microsoft Ajax CDN библиотека доступна по ссылке:
https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.4.0.js
В репозитории CDNJS библиотека доступна по ссылке:
https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js