SlideShare a Scribd company logo
JODY - JsOn for DYnamic sites
Зыкин Илья
media-projects teamlead
github.com/the-teacher/JODY
Что такое JODY?
JODY – JsOn for Dynamic sites
Техника использующая JSON и ряд соглашений
для упрощения взаимодействия между
backend и frontend частями web приложения
1
Какую проблему(ы) решает JODY?
1. Позволяет сократить время на решение многих рутинных
задач связанных с обновлением контента страницы без
перезагрузки всей страницы
2. Backend разработчикам трудно писать JS
(Особенно качественный JS. Особенно vanilla JS)
3. Позволяет сократить (полностью убрать) JS код на стороне
сервера
2
Как работает JODY?
1. Сервер формирует JSON по заданным
соглашениям
2. Посредник между сервером и клиентом
обрабатывает структурированный ответ и
выполняет заданные действия
3
Когда применима техника?
1. Когда в проекте используется шаблонизация
на стороне сервера (JADE, HAML, SLIM)
2. Когда с минимальными усилиями нужно
организовать динамику на странице
4
Задача
На сайте с большим кол-вом "тяжелого" контента планируется реализовать
следующее:
1. Вход пользователя в систему должен быть выполнен без перезагрузки
страницы
2. В случае успеха или ошибки должно появится уведомление
3. В случае успеха в боковой панели должен появится блок с корзиной
пользователя
4. В случае успеха форма входа должна быть заменена на блок с
информацией о пользователе
5
“Классический” подход
6
Построим форму для получения JS с сервера и его исполнения
“Классический” подход
7
В контроллере что-то очень простое
“Классический” подход
8
А вот то, чего мы хотим избежать
(Смесь ruby и JS)
“Классический” подход
9
Однажды вы получите на поддержку “кашу”
“Классический” подход
1. Мы начали писать код стороны клиента на
стороне сервера
2. Скоро (!) JavaScript + JQuery код займет в
шаблонах на сервере довольно много места
3. Есть вероятность получить на поддержку
“кашу”
10
JODY подход
Получаем с сервера JSON
11
JODY подход
Можно сделать контроллер чуть тоньше
12
JODY подход
Строим JSON (JBuilder)
13
JODY подход
Строим JSON (JBuilder)
14
JODY подход
JS посредник
15
JODY подход
Что-то особенное
16
JODY подход
1. количество кода вьюшки увеличилось
2. backend разработчик огражден от
особенностей реализации forntend части
3. Благодаря соглашениям вы сократите кол-во
JS кода на клиенте
4. Вы очистили свои вьюшки от JS вставок и
существенно улучшили поддерживаемость
своей системы
17
Но ведь идея не нова?
1. Да, идея возвращения фрагментов вида на сторону клиента
с помощью JSON структур не нова и вы можете встретить
вопросы на эту тему на stackowerflow
2. Мы лишь предлагаем использовать эту возможность на чуть
более продвинутом уровне, что бы с помощью соглашений и
небольшого количества кода существенно улучшить
поддерживаемые системы и внести в них долю порядка.
18
Могу ли я использовать технику JODY не для Rails?
Да, конечно! Вероятно вам придется приложить чуть больше сил, что бы
обеспечить отправку AJAX запросов на сервер, но трудностей у вас
возникнуть не должно.
Главные ожидания от систем которые хотят использовать JODY следующие:
1. Шаблонизация производится в основном на серверной стороне
2. Сервер возвращает ответы в виде JSON данных со структурой
подчиненной вашим корпоративным соглашениям
Все что вам останется - выделить наиболее рутинные операции на
клиентской части приложения и автоматизировать их выполнение с
помощью JODY посредника
19
Есть ли у JODY более точная
спецификация?
Наверняка создание такой спецификации
будет увлекательным процессом для всей
вашей команды, если вы захотите попробовать
что-то подобное
20
Вопросы
Спасибо!
github.com/the-teacher
Зыкин Илья
Тимлид группы разработки медиа-проектов в компании CreateDigital
Санкт-Петербург, 2014
Ilya.killich
zykin-ilya@ya.ru

More Related Content

What's hot

nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Kirill Danilov
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
SpbDotNet Community
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
JSib
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Mail.ru Group
 
Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"
Yandex
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
JSib
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Mail.ru Group
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
MoscowJS
 
Обзор интернет браузеров
Обзор интернет браузеровОбзор интернет браузеров
Обзор интернет браузеров
Alina Kolosova
 
Документирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсыДокументирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсы
Yandex
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
Vladimir Malyk
 
Особенности разработки браузерных расширений для Single Page Application
Особенности разработки браузерных расширений для Single Page ApplicationОсобенности разработки браузерных расширений для Single Page Application
Особенности разработки браузерных расширений для Single Page Application
chaykaborya
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.js
Kirill Danilov
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Mail.ru Group
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Pavel Tsukanov
 
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС «Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС DevDay
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Ontico
 

What's hot (20)

nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
 
Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"Михаил Корепанов "Инкрементальные обновления на клиенте"
Михаил Корепанов "Инкрементальные обновления на клиенте"
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
 
Обзор интернет браузеров
Обзор интернет браузеровОбзор интернет браузеров
Обзор интернет браузеров
 
Документирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсыДокументирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсы
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
Особенности разработки браузерных расширений для Single Page Application
Особенности разработки браузерных расширений для Single Page ApplicationОсобенности разработки браузерных расширений для Single Page Application
Особенности разработки браузерных расширений для Single Page Application
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.js
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС «Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 

Similar to Jody - JsOn for Dynamic sites on Rails

Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Yandex
 
Node JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияNode JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решения
Alexander Kucherenko
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
MskDotNet Community
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
HappyDev
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON
 
Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"
Yandex
 
Yandex.Frontend: complex services, complex solutions
Yandex.Frontend: complex services, complex solutionsYandex.Frontend: complex services, complex solutions
Yandex.Frontend: complex services, complex solutions
Yelena Jetpyspayeva
 
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,..."Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
Yandex
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
AvitoTech
 
Deep FitNesse
Deep FitNesseDeep FitNesse
Deep FitNesse
SQALab
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
IT-Portfolio
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Ontico
 
Специфика рендеринга vue.js-приложений на сервере, Алексей Клюев
Специфика рендеринга vue.js-приложений на сервере, Алексей КлюевСпецифика рендеринга vue.js-приложений на сервере, Алексей Клюев
Специфика рендеринга vue.js-приложений на сервере, Алексей Клюев
Mail.ru Group
 
Интерактивные карты планировок на сайтах торговых центров
Интерактивные карты планировок на сайтах торговых центровИнтерактивные карты планировок на сайтах торговых центров
Интерактивные карты планировок на сайтах торговых центров
Агентство AlterEGO
 
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов ДенисУвеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Joomla Secrets
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 

Similar to Jody - JsOn for Dynamic sites on Rails (20)

Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
 
Node JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решенияNode JS проблемы надежности, и пути их решения
Node JS проблемы надежности, и пути их решения
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
 
Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"Алексей Андросов "Криокамера для статики"
Алексей Андросов "Криокамера для статики"
 
Yandex.Frontend: complex services, complex solutions
Yandex.Frontend: complex services, complex solutionsYandex.Frontend: complex services, complex solutions
Yandex.Frontend: complex services, complex solutions
 
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,..."Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
"Фронтенд в Яндексе: сложные сервисы, непростые решения". Елена Джетпыспаева,...
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
 
Deep FitNesse
Deep FitNesseDeep FitNesse
Deep FitNesse
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
 
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
 
Appery.io Ukraine_2016
Appery.io Ukraine_2016Appery.io Ukraine_2016
Appery.io Ukraine_2016
 
Специфика рендеринга vue.js-приложений на сервере, Алексей Клюев
Специфика рендеринга vue.js-приложений на сервере, Алексей КлюевСпецифика рендеринга vue.js-приложений на сервере, Алексей Клюев
Специфика рендеринга vue.js-приложений на сервере, Алексей Клюев
 
Интерактивные карты планировок на сайтах торговых центров
Интерактивные карты планировок на сайтах торговых центровИнтерактивные карты планировок на сайтах торговых центров
Интерактивные карты планировок на сайтах торговых центров
 
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов ДенисУвеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
 

Jody - JsOn for Dynamic sites on Rails

  • 1. JODY - JsOn for DYnamic sites Зыкин Илья media-projects teamlead
  • 3. Что такое JODY? JODY – JsOn for Dynamic sites Техника использующая JSON и ряд соглашений для упрощения взаимодействия между backend и frontend частями web приложения 1
  • 4. Какую проблему(ы) решает JODY? 1. Позволяет сократить время на решение многих рутинных задач связанных с обновлением контента страницы без перезагрузки всей страницы 2. Backend разработчикам трудно писать JS (Особенно качественный JS. Особенно vanilla JS) 3. Позволяет сократить (полностью убрать) JS код на стороне сервера 2
  • 5. Как работает JODY? 1. Сервер формирует JSON по заданным соглашениям 2. Посредник между сервером и клиентом обрабатывает структурированный ответ и выполняет заданные действия 3
  • 6. Когда применима техника? 1. Когда в проекте используется шаблонизация на стороне сервера (JADE, HAML, SLIM) 2. Когда с минимальными усилиями нужно организовать динамику на странице 4
  • 7. Задача На сайте с большим кол-вом "тяжелого" контента планируется реализовать следующее: 1. Вход пользователя в систему должен быть выполнен без перезагрузки страницы 2. В случае успеха или ошибки должно появится уведомление 3. В случае успеха в боковой панели должен появится блок с корзиной пользователя 4. В случае успеха форма входа должна быть заменена на блок с информацией о пользователе 5
  • 8. “Классический” подход 6 Построим форму для получения JS с сервера и его исполнения
  • 10. “Классический” подход 8 А вот то, чего мы хотим избежать (Смесь ruby и JS)
  • 11. “Классический” подход 9 Однажды вы получите на поддержку “кашу”
  • 12. “Классический” подход 1. Мы начали писать код стороны клиента на стороне сервера 2. Скоро (!) JavaScript + JQuery код займет в шаблонах на сервере довольно много места 3. Есть вероятность получить на поддержку “кашу” 10
  • 13. JODY подход Получаем с сервера JSON 11
  • 14. JODY подход Можно сделать контроллер чуть тоньше 12
  • 19. JODY подход 1. количество кода вьюшки увеличилось 2. backend разработчик огражден от особенностей реализации forntend части 3. Благодаря соглашениям вы сократите кол-во JS кода на клиенте 4. Вы очистили свои вьюшки от JS вставок и существенно улучшили поддерживаемость своей системы 17
  • 20. Но ведь идея не нова? 1. Да, идея возвращения фрагментов вида на сторону клиента с помощью JSON структур не нова и вы можете встретить вопросы на эту тему на stackowerflow 2. Мы лишь предлагаем использовать эту возможность на чуть более продвинутом уровне, что бы с помощью соглашений и небольшого количества кода существенно улучшить поддерживаемые системы и внести в них долю порядка. 18
  • 21. Могу ли я использовать технику JODY не для Rails? Да, конечно! Вероятно вам придется приложить чуть больше сил, что бы обеспечить отправку AJAX запросов на сервер, но трудностей у вас возникнуть не должно. Главные ожидания от систем которые хотят использовать JODY следующие: 1. Шаблонизация производится в основном на серверной стороне 2. Сервер возвращает ответы в виде JSON данных со структурой подчиненной вашим корпоративным соглашениям Все что вам останется - выделить наиболее рутинные операции на клиентской части приложения и автоматизировать их выполнение с помощью JODY посредника 19
  • 22. Есть ли у JODY более точная спецификация? Наверняка создание такой спецификации будет увлекательным процессом для всей вашей команды, если вы захотите попробовать что-то подобное 20
  • 25. github.com/the-teacher Зыкин Илья Тимлид группы разработки медиа-проектов в компании CreateDigital Санкт-Петербург, 2014 Ilya.killich zykin-ilya@ya.ru