51
Применение BackboneJS для рефакторинга фронтенда вебприложения Алексей Авдеев, GoPromo Frontend party, Нижний Новгород, 22 ноября 2014

Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

  • Upload
    yandex

  • View
    256

  • Download
    1

Embed Size (px)

DESCRIPTION

В докладе пойдёт речь о том, как использовать JS-библиотеки и фреймворки для достижения модульности, построения грамотной архитектуры и упрощения поддержки фронтенда веб-приложений. Мы также поговорим о многофункциональной библиотеке Backbone.js и о том, как навести порядок в application.js (main.js).

Citation preview

Page 1: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Применение  BackboneJS  для  рефакторинга  фронтенда  веб-­‐приложения  Алексей  Авдеев,  Go-­‐Promo  Frontend  party,  Нижний  Новгород,  22  ноября  2014  

Page 2: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Как  бывает  The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.

CoffeeScript  

Page 3: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Описание  проблемы    

Проект  растёт  • Количество  кода  увеличивается  • Файл  applicaUon.js  разрастается  

The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.

Внесение  изменений  становится  опасным  • Общая  область  видимости  переменных  • Конфликты  при  работе  в  команде  

Page 4: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Рефакторинг  

Процесс  изменения  внутренней  структуры  программы,  не  

затрагивающий  её  внешнего  поведения  и  имеющий  целью  облегчить  понимание  её  

работы.  (с)  Wikipedia  

Page 5: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Первая  попытка  

applicaUon.js  

applicaUon.gallery.js   applicaUon.messages.js   applicaUon.comments.js  

Page 6: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Пример  

CoffeeScript,  Ruby  on  Rails  

Page 7: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Меньше  кода  в  каждом  файле  

Page 8: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Меньше  конфликтов  при  работе  в  команде  

Page 9: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Зачатки  модульности  

Page 10: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Стало  понятнее,  куда  писать  какой  код  

Page 11: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Название  файла  –  лишь  рекомендация  

Недостатки  

Page 12: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Глобальная  область  видимости  осталась  

Недостатки  

Page 13: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Появились  проблемы  с  

зависимостями  

Недостатки  

Page 14: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Каша  в  ресурсах  лишь  увеличилась  

Недостатки  

Page 15: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Вторая  попытка  

Page 16: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Что  делаем  

applicaUon.js  

jquery.gallery.js   jquery.messages.js   jquery.comments.js  

Page 17: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Описываем  плагин  

JavaScript  

Page 18: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Используем  плагин  

JavaScript  

Page 19: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

jQuery-­‐плагины  хорошо  

изолированы  

Page 20: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Модульность  

Page 21: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Методы,  состояния  

Page 22: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

В  applicaUons.js  всё  равно  остаётся  много  

кода  

Недостатки  

Page 23: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Проблемы  с  зависимостями  

остаются  

Недостатки  

Page 24: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Третья  попытка  

Page 25: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Схема  BackboneJS  

Page 26: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Почему  можно  рефакторить?  

 Backbone.js  предназначен  быть  довольно  агностичным  насчёт  многих  частых  паттернов  

клиентского  кода  (c)  backbonejs.ru  

Page 27: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Что  используем  мы  

Page 28: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Как  будем  действовать  

Backbone.View  

DOM-­‐элемент  

JS-­‐код  

Данные  

Page 29: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Пример  Backbone.View  

JavaScript  

Page 30: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Что  можно  вытащить  

JavaScript  

Page 31: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Что  получается  

CofeeScript  

Page 32: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Как  рефакторить  

JS   Backbone.View  

Page 33: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Как  рефакторить  

Сущности  данных  

Backbone.Model,  Backbone.CollecUon  

Page 34: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Как  рефакторить  

Зависимости   Backbone.Router  

Page 35: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Пример  иерархии  

Page 36: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Backbone.View  хорошо  

изолированы  

Page 37: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Поддерживаются  сторонние  решения  

Page 38: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Лёгкость  рефакторинга  

Page 39: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Явная  архитектура  

Page 40: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Приятная  поддержка  кода  

Page 41: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Лёгкая  расширяемость  

Page 42: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Преимущества  

Архитектура  разрешает  зависимости  

Page 43: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Надо  знать  Backbone.JS  

Недостатки  

Page 44: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Подключаем  дополнительные  

файлы  (underscore.js,  backbone.js)  

Недостатки  

Page 45: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Много  JS-­‐файлов  на  странице  

Недостатки  

Page 46: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Решаем  недостатки  

Надо  знать  Backbone.JS  

Много  документации,  

в  т.ч.  на  русском  

Page 47: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Решаем  недостатки  

Подключаем  дополнительные  

файлы  (underscore.js,  backbone.js)  

2  файла,  11  кб  

Смело  используем  

Page 48: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Решаем  недостатки  

Много  JS-­‐файлов  на  странице  

Пользуемся  компоновщиками  

ресурсов  

concat,  uglify,  yuicompressor,  …  

Page 49: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Пример  

HTML  

Page 50: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Ссылки  

• BackboneJS  (backbonejs.org)  • CoffeeScript  (coffeescript.org)  • JQuery  Plugin  (learn.jquery.com/plugins)  • UnderscoreJS  (underscorejs.org)  • Grunt  (gruntjs.com)  

Page 51: Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-приложений

Спасибо  за  внимание.  Вопросы.  Алексей  Авдеев  Нижний  Новгород,  Go-­‐Promo,  go-­‐promo.ru