33
Быстрая и безболезненная разработка клиентской части веб-приложений Ткаченко Ярослав, 10sheet.com @sap1ens

Быстрая и безболезненная разработка клиентской части веб-приложений

Embed Size (px)

Citation preview

Page 1: Быстрая и безболезненная разработка клиентской части веб-приложений

Быстрая и безболезненная разработка клиентской части

веб-приложений

Ткаченко Ярослав, 10sheet.com@sap1ens

Page 2: Быстрая и безболезненная разработка клиентской части веб-приложений
Page 3: Быстрая и безболезненная разработка клиентской части веб-приложений

App

jQuery

jQueryUI

Backbone.js

Underscore.js

Хорошее и современное решение

jQuery plugins

jQuery plugins

jQuery plugins

socket.io

QUnit

template engineModernizr

Page 4: Быстрая и безболезненная разработка клиентской части веб-приложений

App

jQuery / Prototype.js / MooTools

Плохое или старое решение

?

… ?

Page 5: Быстрая и безболезненная разработка клиентской части веб-приложений

Симптомы?

Page 6: Быстрая и безболезненная разработка клиентской части веб-приложений

Симптомы

1. Нет фреймворка/библиотеки Application уровня или ее аналога

2. Нет работы с URL3. Обработчики onclick прямо в HTML4. Излишняя привязка к DOM, вместо работы с

данными5. Нет иерархии компонентов6. Сильная связность компонентов

Page 7: Быстрая и безболезненная разработка клиентской части веб-приложений
Page 8: Быстрая и безболезненная разработка клиентской части веб-приложений
Page 9: Быстрая и безболезненная разработка клиентской части веб-приложений

Решение?

App

App

Page 10: Быстрая и безболезненная разработка клиентской части веб-приложений

Решение?

App

App?

Время

Деньги

Люди

Page 11: Быстрая и безболезненная разработка клиентской части веб-приложений

Решение!

Грубый рефакторинг:

1. Разбиваем код на модули2. Организуем связь между модулями

Page 12: Быстрая и безболезненная разработка клиентской части веб-приложений

Код по возможности не переписывать

Page 13: Быстрая и безболезненная разработка клиентской части веб-приложений

RequireJS

1. Загрузчик модулей2. Поддерживает все современные браузеры3. Имеет кучу плагинов4. Модули в нотации AMD5. Совместим с jQuery, node.js, Dojo6. Есть оптимизатор кода

Page 14: Быстрая и безболезненная разработка клиентской части веб-приложений

AMD

Asynchronous Module Definition API

Page 15: Быстрая и безболезненная разработка клиентской части веб-приложений

Типовой модуль

Page 16: Быстрая и безболезненная разработка клиентской части веб-приложений

Пример подключения RequireJS

Page 17: Быстрая и безболезненная разработка клиентской части веб-приложений

HTML5 History API Динамические URL

https://twitter.com/#!/following

https://twitter.com/following

Page 18: Быстрая и безболезненная разработка клиентской части веб-приложений

HTML5 History API

Page 19: Быстрая и безболезненная разработка клиентской части веб-приложений

Manager

Page 20: Быстрая и безболезненная разработка клиентской части веб-приложений

Manager

Page 21: Быстрая и безболезненная разработка клиентской части веб-приложений

One page application

1. Физически - одна страница, подключающая все стили и скрипты

2. Запускает загрузку приложения через RequireJS3. Все шаблоны хранятся на клиенте4. Обмен данными – AJAX (JSON) / Websocket

Page 22: Быстрая и безболезненная разработка клиентской части веб-приложений

Иерархия модулей

Top level module Top level module

Widget Widget Widget

ComponentComponent

ComponentComponent

Page 23: Быстрая и безболезненная разработка клиентской части веб-приложений

Иерархия модулей

ReportDate interval

Search Pagination

Page 24: Быстрая и безболезненная разработка клиентской части веб-приложений

Иерархия модулей

Page 25: Быстрая и безболезненная разработка клиентской части веб-приложений
Page 26: Быстрая и безболезненная разработка клиентской части веб-приложений
Page 27: Быстрая и безболезненная разработка клиентской части веб-приложений

Less

Page 28: Быстрая и безболезненная разработка клиентской части веб-приложений

Less

Page 29: Быстрая и безболезненная разработка клиентской части веб-приложений

Less

Page 30: Быстрая и безболезненная разработка клиентской части веб-приложений

CSS Sprites?

Page 31: Быстрая и безболезненная разработка клиентской части веб-приложений

Sprites? Fonts!

Pictos.cc

Page 32: Быстрая и безболезненная разработка клиентской части веб-приложений
Page 33: Быстрая и безболезненная разработка клиентской части веб-приложений

Спасибо!

http://github.com/balupton/history.js

http://requirejs.org/

http://lesscss.org/