- PVSM.RU - https://www.pvsm.ru -
1) Полная документация на русском, покрытие юнит-тестами
2) Привычная работа с JSON в dot-нотации и легкий доступ к данным.
Т.е получение значения var settings = model('user.data.settings');
равнозначно записи в чистом JS var settings = user && user.data && user.data.settings !== undefined ? user.data.settings : null;
Вам больше не нужно заботится о проверке всех частей цепочки доступа к данным.
3) Малый вес библиотеки (~20 кб в минимизированном виде, в gzip будет совсем копейки).
Для сравнения вес других библиотек, решающих похожие задачи:
4) Используйте свой любимый фреймворк для работы с DOM и шаблонизатор (я рекомендую jQuery [4] + JSrender [5])
5) Отказ от захламления логикой в data-аттрибутах (пример из knockout: data-bind="value: myData()"
)
Связь с DOM-элементами по-прежнему через data-аттрибут (data-follow="my.data.here"
), который содержит лишь цепочку (путь к данным в модели, который можно рассматривать как уникальный идентификатор).
Логика и всё поведение хранится в JS:
model.follow(chain, callback, [mode])
Follow.link({match: 'selector', trigger: function(){}})
6) Все данные в модели явлются наблюдаемыми (observable). Можно оформить подписку на изменение одного или множества «цепочек» в модели.
К примеру, в knockoutjs чтобы создать лишь одну наблюдаемую переменную в модели используется ko.observable('default-value')
.
Создавая Follow.js, хотелось максимально следовать лозунгу jQuery — «write less, do more». Из этого вытекает пункт 7.
7) JavaScript очень гибкий язык с точки зрения синтаксиса и не пользоваться этим было бы глупо.
Именно поэтому при получении экземпляра модели нету необходимости писать new Follow
.
Именно поэтому конструктор Follow возвращает объект модели (model) в виде функции, которая упрощает работу сразу с 3 вещами:
model.get('chain')
пишем сразу model('chain')
model.set('chain', 'new-data')
пишем model('chain', 'new-data')
toString()
, поэтому alert(model)
возвратит нам строковое представление модели (прозрачный вызов model.toJSON
)Конечно, подозреваю, многим традиционалистам ООП не понравится это якобы, сомнительное улучшение.
8) Простая интеграция с другими библиотеками и back-end частью вашего сервиса благодаря JSON-модели данных.
В любой момент работы приложения получаете текущее состостояние модели через model.toJSON([chain])
и отсылаете на сервер.
9) В любом паттерне при работе с данными, типа MVC иили MVVM, главная её часть — это работа с моделью.
Именно поэтому в Follow.js всё внимание уделено работе с моделью. Шаблонизация данных или работа с DOM не её забота.
Когда каждый инструмент решает свою задачу и при этом сочетается с другими это прекрасно.
10) Готовая интеграция «из коробки» с проектами, работающими на XSL/XML. Принцип работы предельно прост:
Исходники на GitHub [6]
Документация [7]
Автор: extensible
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/6226
Ссылки в тексте:
[1] Ember.js: http://emberjs.com/
[2] Backbone.js: http://backbonejs.org/
[3] Knockout.js: http://knockoutjs.com/
[4] jQuery: http://jquery.com/
[5] JSrender: https://github.com/BorisMoore/jsrender
[6] Исходники на GitHub: https://github.com/extensible/follow.js
[7] Документация: http://extensible.github.com/follow.js/docs/
Нажмите здесь для печати.