Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Backbone.js как способ разложить ваш javascript...

Backbone.js как способ разложить ваш javascript по полочкам

Avatar for Tangerine Cat

Tangerine Cat

February 08, 2013

Other Decks in Programming

Transcript

  1. Backbone Альтернативы • Spine • Ember • Knockout • JavascriptMVC

    ... у Фродо кончились пальцы на руке %)
  2. jQuery Сделать по- быстрому и никогда не возвращаться Backbone Мухи

    – отдельно, котлеты – отдельно Зачем, собственно?
  3. Тестовое приложение • Ведение списка дел • Добавление новых •

    Пометка выполненных • Удаление помеченных • Переход по страницам http://git.io/mYbUUw
  4. Плюсы jQuery • Данные без выкрутасов Все данные -- в

    обычных javascript-переменных, хэшах, массивах, строках.
  5. $(function() { var items = []; // Список дел var

    page = 1; // Текущая страница var pageSize = 5; // Дел в странице // ... });
  6. Плюсы jQuery • Данные без выкрутасов • Всё в обработчике

    Весь код по обработке события, включая перерисовку -- в одном месте
  7. Плюсы jQuery • Данные без выкрутасов • Всё в обработчике

    • Пишется быстро Новый обработчик -- новый код, необходимость в поддержке предыдущего кода практически отсутствует
  8. Плюсы jQuery • Данные без выкрутасов • Всё в обработчике

    • Пишется быстро Backbone • Возможность чёткого разделения ◦ Модели ◦ Темплейты ◦ Вьюхи
  9. Плюсы jQuery • Данные без выкрутасов • Всё в обработчике

    • Пишется быстро Backbone • Возможность чёткого разделения • Разделение обработки DOM-событий от событий, генерируемых моделями
  10. Плюсы jQuery • Данные без выкрутасов • Всё в обработчике

    • Пишется быстро Backbone • Возможность чёткого разделения • Разделение обработки DOM-событий от событий, генерируемых моделями • Описание роутинга
  11. Todo.Router = Backbone.Router.extend({ routes: { "": "page", ":pageNo": "page" },

    page: function(pageNo) { pageNo || (pageNo = 1); pagingView.paging.set({page: pageNo}); } }); App.router = new Todo.Router(); Backbone.history.start();
  12. Плюсы jQuery • Данные без выкрутасов • Всё в обработчике

    • Пишется быстро Backbone • Возможность чёткого разделения • Разделение обработки DOM-событий от событий, генерируемых моделями • Описание роутинга • DOM-cобытия локальны для вьюх
  13. Плюсы jQuery • Данные без выкрутасов • Всё в обработчике

    • Пишется быстро Backbone • Возможность чёткого разделения • Разделение обработки DOM-событий от событий, генерируемых моделями • Описание роутинга • DOM-cобытия локальны для вьюх • AJAX+REST из коробки
  14. Итог jQuery Подходящий инструмент, чтобы выстрелить себе в ногу, не

    требует предварительной подготовки, однако плохо справляется с ногами сложной конфигурации. Backbone Абсолютно не подходит для решения простых задач. С ростом количества сущностей и взаимосвязей между ними смысл использовать Backbone возрастает.
  15. Итог P.S. Разумеется, можно написать код на jQuery с поддержкой

    событий, роутинга, вьюх и моделей. Но тогда это будет уже свой фрэймворк, с маджонгом и гейшами.