SlideShare a Scribd company logo
1 of 16
Изоморфные приложения
на JavaScript
Ilya Ozerov, Inventos
Типы javascript-приложений
•Классические
•SPA
•Изоморфные (универсальные)
Классическое приложение
Классическое приложение
1. HTML генерируется сервером с предзагруженными данными
2. JS-код содержит в себе только функции для реализации
«интерактивности» на странице; область видимости ограничена
одним HTML-документом
SPA (Single page application)
SPA (Single page application)
1. Сервер отдает HTML-документ с корневым элементом и путями
до JS/CSS-bundles
2. Рендеринг HMTL-шаблонов на стороне клиента
3. Внутренний роутинг (History API)
4. Запрос данных от API в соответствии с роутингом
5. Рендеринг полученных данных
Изоморфное приложение
Изоморфное приложение
1. Роутинг на Front-сервере
2. Front-сервер отдает прекомпилированный HTML-документ и JS-
bundle приложения
3. Отображение HTML и доп. асинхронные запросы (при
необходимости)
4. Серверный рендеринг доп. элементов (при необходимости)
5. Отображение HTML
6. Клиентский роутинг (опционально)
Процесс загрузки SPA с точки зрения
клиентского устройства
Процесс загрузки изоморфного приложения с
точки зрения клиентского устройства
Общее сравнение SPA и isomorphic
SPA
+ более гибкая отладка
+ меньшие сроки разработки
- ад для SEO
- не работает в JS-off mode
- высокий TTFF
- сложность поддержки в устаревших
браузерах
isomorphic
+ SEO и статистика вынесена на front-
сервер
+ низкий TTFF
+ не зависит от JS-mode и версии
браузера
+ нет проблем с CORS при работе со
сторонним API
- отладка
- дублирование логики клиентского и
серверного кода (двойной роутинг)
Применение приложений
SPA
• Системы администрирования
• Личные кабинеты
• Дэшборды
Isomorphic
• Агрегаторы
• Сервисы
• Highload
Библиотеки для создания изоморфных
приложений
Полный список: http://isomorphic.net/libraries
Архитектура изоморфного приложения на
примере использования React.js
Взаимодействие компонентов изоморфного
приложения на примере использования
React.js
Вопросы?

More Related Content

Viewers also liked

El aborto
El abortoEl aborto
El abortojg110
 
Decargar sistemas de-frenos-hidraulicos-en-automoviles-livianos
Decargar sistemas de-frenos-hidraulicos-en-automoviles-livianosDecargar sistemas de-frenos-hidraulicos-en-automoviles-livianos
Decargar sistemas de-frenos-hidraulicos-en-automoviles-livianosmikel cordova bautista
 
Programa Preventivo
Programa Preventivo Programa Preventivo
Programa Preventivo rriosbrenda
 
Taller de profundización ciencias sociales primer periodo
Taller de profundización ciencias sociales primer periodoTaller de profundización ciencias sociales primer periodo
Taller de profundización ciencias sociales primer periodoMarysol Chacón González
 
2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt
2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt 2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt
2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt jimena almaguer cavazos
 
Judith leyster
Judith leysterJudith leyster
Judith leystergetafista
 
Historia y la_evolución_del_computador
Historia y la_evolución_del_computadorHistoria y la_evolución_del_computador
Historia y la_evolución_del_computadorSandrid Vanesa
 
Crecimiento económico
Crecimiento económicoCrecimiento económico
Crecimiento económicoMAYRA YEPES
 
2017.AU8.3 Background: Procurement of Construction Services Management Response
2017.AU8.3 Background: Procurement of Construction Services Management Response2017.AU8.3 Background: Procurement of Construction Services Management Response
2017.AU8.3 Background: Procurement of Construction Services Management Responsevkanata
 

Viewers also liked (20)

Los gatos
Los gatosLos gatos
Los gatos
 
El aborto
El abortoEl aborto
El aborto
 
Estados hipertensivos del embarazo
Estados hipertensivos del embarazoEstados hipertensivos del embarazo
Estados hipertensivos del embarazo
 
Help line mts.pdf
Help line mts.pdfHelp line mts.pdf
Help line mts.pdf
 
Decargar sistemas de-frenos-hidraulicos-en-automoviles-livianos
Decargar sistemas de-frenos-hidraulicos-en-automoviles-livianosDecargar sistemas de-frenos-hidraulicos-en-automoviles-livianos
Decargar sistemas de-frenos-hidraulicos-en-automoviles-livianos
 
Dia mundial da floresta e da poesia
Dia mundial da floresta e da poesiaDia mundial da floresta e da poesia
Dia mundial da floresta e da poesia
 
Baldwin
BaldwinBaldwin
Baldwin
 
Programa Preventivo
Programa Preventivo Programa Preventivo
Programa Preventivo
 
Tic desarrollo cognitivo
Tic desarrollo cognitivoTic desarrollo cognitivo
Tic desarrollo cognitivo
 
Medical genetics
Medical geneticsMedical genetics
Medical genetics
 
Taller de profundización ciencias sociales primer periodo
Taller de profundización ciencias sociales primer periodoTaller de profundización ciencias sociales primer periodo
Taller de profundización ciencias sociales primer periodo
 
systems_software
systems_softwaresystems_software
systems_software
 
2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt
2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt 2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt
2.entrenamiento basado en la web. 6. Tarea: Síntesis creativa en .ppt
 
La tecnologia
La tecnologiaLa tecnologia
La tecnologia
 
Judith leyster
Judith leysterJudith leyster
Judith leyster
 
Ct
CtCt
Ct
 
Historia y la_evolución_del_computador
Historia y la_evolución_del_computadorHistoria y la_evolución_del_computador
Historia y la_evolución_del_computador
 
Crecimiento económico
Crecimiento económicoCrecimiento económico
Crecimiento económico
 
March 26, 2017
March 26, 2017March 26, 2017
March 26, 2017
 
2017.AU8.3 Background: Procurement of Construction Services Management Response
2017.AU8.3 Background: Procurement of Construction Services Management Response2017.AU8.3 Background: Procurement of Construction Services Management Response
2017.AU8.3 Background: Procurement of Construction Services Management Response
 

Similar to Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
FPUG - t4t common
FPUG - t4t commonFPUG - t4t common
FPUG - t4t commonguest3dc074
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 67bits
 
Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Timur Shemsedinov
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Dmitriy Krukov
 
живые сайты
живые сайтыживые сайты
живые сайтыzexzex
 
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...GeeksLab Odessa
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиентыRoman Brovko
 
Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...SQALab
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...it-people
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
RESTful API development with Symfony2
RESTful API development with Symfony2RESTful API development with Symfony2
RESTful API development with Symfony2Taras Omelianenko
 
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.IT-Доминанта
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных системKewpaN
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP7bits
 

Similar to Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос) (20)

Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
FPUG - t4t common
FPUG - t4t commonFPUG - t4t common
FPUG - t4t common
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
 
Web servers
Web servers Web servers
Web servers
 
Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)Impress Application Server for node.js (ru)
Impress Application Server for node.js (ru)
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5
 
живые сайты
живые сайтыживые сайты
живые сайты
 
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты
 
Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...
 
Rest API
Rest APIRest API
Rest API
 
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
Использование SOA для построения сложных веб проектов - Виталий Глибин, PyCon...
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)Microsoft Virtualization(Plex)
Microsoft Virtualization(Plex)
 
RESTful API development with Symfony2
RESTful API development with Symfony2RESTful API development with Symfony2
RESTful API development with Symfony2
 
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP
 

More from Александр Сигачев

Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)Александр Сигачев
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
Принципы проектирование ООП приложений - Скалкин Никита (Evrone) Блог прогр...
Принципы проектирование ООП приложений - Скалкин Никита (Evrone)   Блог прогр...Принципы проектирование ООП приложений - Скалкин Никита (Evrone)   Блог прогр...
Принципы проектирование ООП приложений - Скалкин Никита (Evrone) Блог прогр...Александр Сигачев
 

More from Александр Сигачев (6)

Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Принципы проектирование ООП приложений - Скалкин Никита (Evrone) Блог прогр...
Принципы проектирование ООП приложений - Скалкин Никита (Evrone)   Блог прогр...Принципы проектирование ООП приложений - Скалкин Никита (Evrone)   Блог прогр...
Принципы проектирование ООП приложений - Скалкин Никита (Evrone) Блог прогр...
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Docker в development окружение
Docker в development окружениеDocker в development окружение
Docker в development окружение
 
Elasticsearch(java) fluentd(ruby) kibana(javascript)
Elasticsearch(java)fluentd(ruby) kibana(javascript)Elasticsearch(java)fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentd(ruby) kibana(javascript)
 

Изоморфные приложения на JavaScript - Озеров Илья. (Инвентос)