SlideShare a Scribd company logo
Боль и радость
создания изоморфных
приложений на ReactJS
Viktor Turskyi
Kharkiv JS 2015
Изоморфизм o_O
В общих чертах его можно описать так: пусть даны две алгебраические
структуры (группы, кольца, линейные пространства и т. п.). Обратимое
отображение (биекция) между ними называется изоморфизмом, если оно
сохраняет эту структуру.
(Wikipedia)
Изоморфное приложение?
Одностраничное приложение, которое можно запустить
и на сервере
Демо
wall.itsquiz.com
Клиент
Сервер
Общий код REST
API
REST
API
Общий код
REST
API
View
Routing
Fetching I18N
Models
Зачем это надо? (о радостях)
Поисковая оптимизация
Скорость
Оттенки изоморфности
1) Изоморфный View
2) Изоморфные стили
3) Изоморфный роутинг
4) Изоморфная работа с REST API (fetching)
5) Изоморфная конфигурация
6) Изоморфный ES6
7) Изоморфная локализация
Радость первая - React
View - клиент
View - сервер
Боль первая - не работает import стилей в nodejs
Решение - inline styles (стили - просто javascript)
Проблемы с inlines styles
1) псевдо-атрибуты :hover, :active, :focus
2) media queries
3) автопрефиксинг
4) объединение стилей
Kharkiv JS  2015: Боль и радость создания изоморфных приложений на ReactJS (RU)
Сервер и клиент генерируют разную разметку
Боль вторая - клиентский автопрефиксер
Решение, которое работает (в этот раз работает)
Подключаем библиотеку компонентов
Боль третья - в “Material UI” тоже клиентский
автопрефиксер
Мы переключились на Material Design Lite
react-mdl (Material Design Lite) работает!!! )
Что делать?
Ура проблему со стилями мы решили!!!
Х..р там!!!
Боль четвертая - порядок загрузки
Как правильно?
CSS загружать в начале
Javascript загружать в конце
Правильный порядок загрузки
Решение - Text Extract Plugin для Webpack
Радость вторая - React Router
Роутинг (общий код)
Роутинг (клиент)
Роутинг (сервер)
Радость третья - Redux
Один store на приложение
Работа с REST API
Порядок загрузки
Клиент:
1. Рендеринг React компонента
2. Отображение спиннера
3. Загрузка данных
4. Обновления страницы (повторный рендеринг React компонента)
Сервер:
1. Загрузка всех необходимых данных
2. Рендеринг страницы сразу с данными
3. Отдача HTML на клиент
REST API - общий код (isomorphic-fetch)
Что осталось за пределами доклада
1) Изоморфная конфигурация
2) Изоморфная локализация
3) Изоморфный ES6
Статистика
Универсальный код - 1778 SLOC (93%)
Коде специфический для клиента - 33 SLOC (2%)
Коде специфический для сервера - 95 SLOC (5%)
Ссылки
Redux http://rackt.org/redux/index.html
React Router https://github.com/rackt/react-router
Tutorial: Handcrafting an Isomorphic Redux Application (With Love)
https://medium.com/@bananaoomarang/handcrafting-an-isomorphic-redux-
application-with-love-40ada4468af4
Исходники приложения
https://github.com/WebbyLab/itsquiz-wall/
Viktor Turskyi (koorchik)
viktor@webbylab.com
https://twitter.com/koorchik
https://github.com/koorchik
http://webbylab.com

More Related Content

DOCX
Milan Mashru Resume
DOC
Jehan CV- 2015
PDF
Aрхитектура дизайн-систем
PPTX
Angular 1.x in action now
PDF
HR Tech: обзор и перспективы рынка
PPT
PPTX
Learning from Complex Online Behavior with Andy Edmonds - Big Brains
PPTX
Unidad 2 - actividad financiera del estado
Milan Mashru Resume
Jehan CV- 2015
Aрхитектура дизайн-систем
Angular 1.x in action now
HR Tech: обзор и перспективы рынка
Learning from Complex Online Behavior with Andy Edmonds - Big Brains
Unidad 2 - actividad financiera del estado

Viewers also liked (10)

PPT
Hoofdstuk 5 2008
PDF
Apuntes 4º eso 2º examen
PDF
Spt 101 Loving Onedrive for business as a productivity tool
PPTX
Студия дизайна «Чипса» — Что такое бренд в 21 веке?
PDF
Learn a language faster in 3 easy stages
PDF
Tales from Taming the Long Tail
PPTX
Опыт построения и эксплуатации большого файлового хранилища / Даниил Подольск...
PPTX
Optimizing Apache HBase for Cloud Storage in Microsoft Azure HDInsight
PDF
CEM in B2B v 1.3
PDF
Leadership matters
Hoofdstuk 5 2008
Apuntes 4º eso 2º examen
Spt 101 Loving Onedrive for business as a productivity tool
Студия дизайна «Чипса» — Что такое бренд в 21 веке?
Learn a language faster in 3 easy stages
Tales from Taming the Long Tail
Опыт построения и эксплуатации большого файлового хранилища / Даниил Подольск...
Optimizing Apache HBase for Cloud Storage in Microsoft Azure HDInsight
CEM in B2B v 1.3
Leadership matters
Ad

Similar to Kharkiv JS 2015: Боль и радость создания изоморфных приложений на ReactJS (RU) (20)

PPTX
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
PDF
"Изоморфная разработка на javascript с помощью react.js" Максим Климишин
PDF
Изоморфные react-приложения
PDF
Изоморфные React-приложения: производительность и масштабирование
PDF
Изоморфный JavaScript — будущее уже здесь
PDF
Isomorphic React.js (by Maksym Klymyshyn) - Hack'n'Tell JavaScript - 2015.05.16
PDF
Изоформные приложения на React.js
PPTX
Redux и изоморфные приложения
PDF
JavaScript сегодня: React, Redux и новая реальность
PDF
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
PDF
Бэкенд, фронтенд — всё смешалось (nodkz)
PDF
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
PDF
React & Redux (Lazarev)
PDF
LvivJS 2014 - Win-win c React.js
PDF
React со скоростью света: не совсем обычный серверный рендеринг
PDF
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
PDF
#5 "React.js" Антон Артамонов
PPTX
Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)
PDF
Рендеринг может больше: vue.js vs React, Андрей Солодовников
PDF
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
"Изоморфная разработка на javascript с помощью react.js" Максим Климишин
Изоморфные react-приложения
Изоморфные React-приложения: производительность и масштабирование
Изоморфный JavaScript — будущее уже здесь
Isomorphic React.js (by Maksym Klymyshyn) - Hack'n'Tell JavaScript - 2015.05.16
Изоформные приложения на React.js
Redux и изоморфные приложения
JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
React & Redux (Lazarev)
LvivJS 2014 - Win-win c React.js
React со скоростью света: не совсем обычный серверный рендеринг
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
#5 "React.js" Антон Артамонов
Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)
Рендеринг может больше: vue.js vs React, Андрей Солодовников
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
Ad

More from Viktor Turskyi (19)

PDF
How to create a high performance excel engine in java script
PDF
Livr 2.0 in JS - Vinnytsia.JS 2019
PDF
The working architecture of node js applications open tech week javascript ...
PDF
Yet another json rpc library (mole rpc)
PDF
KharkivJS 2018 Information Security Practice
PDF
"Offline mode for a mobile application, redux on server and a little bit abou...
PDF
The working architecture of NodeJs applications
PDF
Language Independent Validation Rules 2.0, Viktor Turskyi, talk at OSDN 2017
PDF
How to extract information from text with Semgrex
PDF
How to translate your Single Page Application - Webcamp 2016 (en)
PDF
JS Lab 2016 - Frontend trends 2015 - 2016
PDF
It's Quiz - Cloud testing platform
PDF
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
PDF
Language Independent Validation Rules (LIVR)
PDF
Hadoop webcamp 2015
PDF
Mapreduce in JavaScript
PDF
Excel in Javascript
PDF
Testing orm based code
ODP
Maybe you do not know that ...
How to create a high performance excel engine in java script
Livr 2.0 in JS - Vinnytsia.JS 2019
The working architecture of node js applications open tech week javascript ...
Yet another json rpc library (mole rpc)
KharkivJS 2018 Information Security Practice
"Offline mode for a mobile application, redux on server and a little bit abou...
The working architecture of NodeJs applications
Language Independent Validation Rules 2.0, Viktor Turskyi, talk at OSDN 2017
How to extract information from text with Semgrex
How to translate your Single Page Application - Webcamp 2016 (en)
JS Lab 2016 - Frontend trends 2015 - 2016
It's Quiz - Cloud testing platform
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Language Independent Validation Rules (LIVR)
Hadoop webcamp 2015
Mapreduce in JavaScript
Excel in Javascript
Testing orm based code
Maybe you do not know that ...

Kharkiv JS 2015: Боль и радость создания изоморфных приложений на ReactJS (RU)