53
www.luxoft.com ПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru – Михаил Дружинин @ Luxoft - Июнь 2016

ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

  • Upload
    others

  • View
    21

  • Download
    1

Embed Size (px)

Citation preview

Page 1: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

1

ПОРТАЛЫ НА JAVASCRIPTЗАЧЕМ, КАК И НАДО ЛИ ОНО

HolyJS.ru – Михаил Дружинин @ Luxoft - Июнь 2016

Page 2: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

2

ОБО МНЕ

Сейчас Technical Manager / Software Architect

10 лет в IT / 5 лет в Luxoft

Тренер по архитектуре и Java разработке

Опыт управления проектами в роли Team Lead и PM

Участвовал в многих проектах в роле архитектора

Page 3: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

3

ЧТО МЫ ДЕЛАЕМ

«Поток» проектов для банковской сферы

Типовые проекты

- Разработка UI

- Интеграция с API, который делается другими командами

- AngularJS, REST API

Агрессивные рамки выхода проектов

Page 4: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

4

ПОРТАЛЬНЫЙ ПРОЕКТ

Линейка продуктов

Продукт А Продукт B Продукт C

Единый интерфейс

Page 5: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

5

Page 6: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

6

Page 7: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

7

Page 8: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

8

О ЧЁМ ЭТО МЫ?

Приложение с одним «общим»

пользовательским интерфейсом

Большой проект

- состоящий из большого количества модулей

- которые слабо связаны с друг другом

Page 9: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

9

О ЧЁМ ЭТО МЫ?

Приложение с одним «общим»

пользовательским интерфейсом

Большой проект

- состоящий из большого количества модулей

- которые слабо связаны с друг другом

Разный «жизненный цикл» модулей

- даты релизов

- разные команды разработки

1

13

2

4

3

Page 10: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

10

О ЧЁМ ЭТО МЫ?

Приложение с одним «общим»

пользовательским интерфейсом

Большой проект

- состоящий из большого количества модулей

- которые слабо связаны с друг другом

Разный «жизненный цикл» модулей

- даты релизов

- разные команды разработки

Модули взаимодействуют между собой

1

13

2

4

3

Page 11: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

11

А В С

Page 12: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

12

А В С

Page 13: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

14

А В С

Page 14: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

15

А В С

Page 15: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

16

О ЧЁМ ЭТО МЫ?

Приложение с одним «общим»

пользовательским интерфейсом

Большой проект

- состоящий из большого количества модулей

- которые слабо связаны с друг другом

Разный «жизненный цикл» модулей

- даты релизов

- разные команды разработки

Модули взаимодействуют между собой

1

13

2

4

3

1

13

2

4

3

Page 16: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

17

ВАРИАНТЫ

Статическая вёрстка и сборка - все счастливы

Генерация на сервере

Компоновка на клиенте

Page 17: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

18

ЦЕЛЬ

Уйти с пониманием что и когда использовать

- Рассмотреть какие подходы можно использовать, чтобы сделать «портальное»

решение используя только браузер и JavaScript

- Обозначить плюсы и минусы каждого подхода

- Поднять «подводные камни» на поверхность

Обсудить какие ещё подходы возможны для решения тех же проблем

Page 18: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

19

НАЧНЁМ?

Page 19: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

20

ВАРИАНТЫ

Монолит

Сильная связнностьСлабая связнность

IFrames

F2 CoApp*

Сл

ож

но

еП

ро

сто

е

Page 20: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

21

КРИТЕРИИ СРАВНЕНИЯ

Возможность взаимодействия между модулями

Возможность раздельного выпуска модулей

Тестируемость

Безопасность отдельных модулей

Сложность разработки

Сложность развёртывания

Page 21: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

22

МОНОЛИТ

Page 22: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

23

КАК ОНО ВЫГЛЯДИТ

Отдельные компоненты и модули в рамках общей кодовой базы

Все собирается в общий пакет для поставки

http://app.com <Web Server>

A

B

C

А В С

Page 23: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

24

ПЛЮСЫ / МИНУСЫ - КОГДА ИСПОЛЬЗОВАТЬ И КОГДА НЕТ

Плюсы

- Простой и понятный

- Любые варианты взаимодействия

между модулями

Когда использовать

- Всегда когда можете

- Когда необходимо взаимодействие

между модулями

Минусы

- Выкатывать в live нужно целиком

- Изменения в одном модуле могут

затронуть другие

Когда стоит отказываться

- Необходим раздельный выпуск модулей

- Необходима работа нескольких, не связанных друг с другом команд

Page 24: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

25

IFRAMES

Page 25: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

26

А В С

Page 26: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

27

КАК ОНО ВЫГЛЯДИТ

Проект «обёртка» который просто открывает пункт меню в IFrame

Несколько отдельных приложений, которые разрабатываются и

развёртываются независимо

Общая авторизация

Page 27: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

28

КАК ОНО ВЫГЛЯДИТ

http://b.com <Web Server>

http://a.com <Web Server>

A

B

А В С

http://c.com <Web Server>

C

http://app.com <Web Server>

Container1

SSO

Page 28: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

29

КАК ОНО ВЫГЛЯДИТ

http://b.com <Web Server>

http://a.com <Web Server>

A

B

А В С

http://c.com <Web Server>

C

http://app.com <Web Server>

Container

<<Reverse Proxy>>

http://app.com/a

http://a.com

SSO

Page 29: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

30

ПЛЮСЫ / МИНУСЫ - КОГДА ИСПОЛЬЗОВАТЬ И КОГДА НЕТ

Плюсы

- Простота

- Нет влияния изменений одного

модуля на другие

Когда использовать

- Приложения независимы – нужна

только общая авторизация

Минусы

- Не возможно какое либо

взаимодействие приложений

- Поддержка истории

Когда стоит отказываться

- Необходимо взаимодействие

между приложениями

Page 30: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

31

COAPP

Page 31: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

32

А В С

Page 32: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

33

КАК ОНО ВЫГЛЯДИТ

Проект «контейнер»

Каждое приложение собирается в два файла app.js и app.css

- Скрипты приложений, загружаются с того же ресурса через прокси

- Приложения после загрузки по сути представляют из себя одно AngularJS

приложение

Набор правил именования, чтобы не было коллизий имен

Page 33: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

34

КАК ОНО ВЫГЛЯДИТ

http://b.com <Web Server>

http://a.com <Web Server>

A

B

А В С

http://c.com <Web Server>

C

http://app.com <Web Server>

Container

<<Reverse Proxy>>

http://app.com/a

http://a.com

SSO

Page 34: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

35

КАК ОНО ВЫГЛЯДИТ

<html>

<head>

<link href="/appA/app.css" rel="stylesheet" type="text/css">

<link href="/appA/app.css" rel="stylesheet" type="text/css">

</head>

<body>

<div ng-app=“App"> <ui-view></ui-view> </div>

<script src="/appA/app.js"></script>

<script src="/appB/app.js"></script>

</body>

</html>

Page 35: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

36

КАК ОНО ВЫГЛЯДИТ

<div>

<coapp-list-widget select-event=‘’’listSelected’’’></coapp-list-widget>

<div class="row">

<div class="col-xs-6">

<appA-price-widget update-event=‘’’listSelected’’’></appA-price-widget>

</div>

<div class="col-xs-6">

<appB-volume-widget update-event=‘’’listSelected’’’></appB-volume-widget>

</div>

</div>

</div>

Page 36: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

37

ПЛЮСЫ / МИНУСЫ - КОГДА ИСПОЛЬЗОВАТЬ И КОГДА НЕТ

Плюсы

- Полный свобода в том, что отдельные модули могут делать друг с другом

Когда использовать

- Нужна раздельная поставка модулей

- Нужен комплексный UI из нескольких модулей

Минусы

- Изменения одного модуля могут затронуть другие – сложно тестировать

- Модули не защищены друг от друга

Когда стоит отказываться

- Важна безопасность отдельных модулей

- Изменения модулей не должны влиять друг на друга

Page 37: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

38

F2

Page 38: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

39

ЧТО ЭТО

https://www.openf2.org

Фреймворк для загрузки в одну страницу контента с разных ресурсов

Предоставляет функции для взаимодействия между контейнером и

приложениями и между приложениями внутри контейнера

Page 39: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

40

А В С

Page 40: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

41

КАК ОНО ВЫГЛЯДИТ

Проект «контейнер»

Модули-«приложения» для контейнера, которые загружаются с

произвольных ресурсов

- Каждый модуль имеет «манифест», по которому F2 его загружает

Модули могут «общаться» посредством событий

- F2.Events.emit / F2.Events.on

Page 41: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

42

МАНИФЕСТ

F2_jsonpCallback_ru_jug_appA_widget({

"scripts": [ "//localhost:9001/appA/widget.js“ ],

"styles": [],

"apps": [ {

"html":

'<div ng-app=“ru.jug.appA. widget">' +

'<ru:jug:appA:widget></ru:jug:appA:widget>' +

'</div>'

}],

"inlineScripts": [

"angular.bootstrap($('.ru_jug_appA_widget'),

[‘ru.jug.events', ‘ru.jug.appA.widget']);"

]

})

Page 42: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

43

КОНТЕЙНЕР

<div

data-f2-autoload

data-f2-appid

=“ru_jug_appA_widget"

data-f2-manifesturl

="//localhost:9001/appA/f2.manifest.js">

</div>

Page 43: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

44

КОММУНИКАЦИЯ

F2.Events.emit(‘event_name’, value);

F2.Events.on(‘event_name’, function(value){

doSomething(value);

});

Page 44: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

45

КАК ОНО ВЫГЛЯДИТ

http://b.com <Web Server>

http://a.com <Web Server>

A

B

А В С

http://c.com <Web Server>

C

http://app.com <Web Server>

Container1

SSO

Page 45: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

46

ПЛЮСЫ / МИНУСЫ - КОГДА ИСПОЛЬЗОВАТЬ И КОГДА НЕТ

Плюсы

- Загрузка модулей с различных ресурсов

- Нет влияния изменений одного модуля на другие

- Event модель взаимодействия

Когда использовать

- Нужно целевую страницу собирать

«из кусочков»

«Минусы»

- Ограниченная модель взаимодействия через события

- Один уровень контейнер-приложение

Когда стоит отказываться

- Событийной модели взаимодействия недостаточно

- Концепция приложений ограничивает требуемый UI

Page 46: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

47

ЧТО ВЫБИРАЕМ?

Page 47: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

48

ЧТО ВЫБИРАЕМ?

1. Используем инструмент, подходящий под цели проекта

2. Чем проще – тем лучше

Page 48: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

49

ЧТО ВЫБИРАЕМ?

Если можно – делаем одно монолитное приложение.

Забываем про IFrames – используем F2 где нужен контент и

«приложения» с различных ресурсов

Если ничего не помогло – делаем велосипед

Page 49: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

50

О ЧЁМ НУЖНО НЕ ЗАБЫТЬ ПРИ ВЫБОРЕ

Как будем тестировать?

Модель взаимодействия между модулями?

Как узнать в каком приложении есть нужная функциональность?

Откуда модули будут брать данные (API, same origin, etc…)?

Page 50: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

51

УХОДИМ С LEGACY

Page 51: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

52

КАК ИДТИ К СЧАСТЬЮ

1. Выделяем кусочек

2. Делаем его независимым

3. Переписываем

4. Повторить пункт 1, пока не наступило счастье

Page 52: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

53

ВОПРОСЫ? ПРЕДЛОЖЕНИЯ?

Page 53: ПОРТАЛЫ НА JAVASCRIPTpublic.jugru.org/holyjs/2016/spb/day_1/track_2/druzhinin.pdfПОРТАЛЫ НА JAVASCRIPT ЗАЧЕМ, КАК И НАДО ЛИ ОНО HolyJS.ru –Михаил

www.luxoft.com

54

СПАСИБО ЗА ВНИМАНИЕ

Михаил ДружининEmail: [email protected]