Денис Измайлов, javascript сегодня: react, redux и новая...

153
JavaScript сегодня: React, Redux и новая реальность Денис Измайлов 15 марта 2016

Upload: scrumtrek

Post on 07-Jan-2017

802 views

Category:

Business


5 download

TRANSCRIPT

Page 1: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов

15 марта 2016

Page 2: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Денис Измайлов• 16 лет опыта разработки ПО и web

• Последние 6 лет посвятил Front-end, Node.js и архитектуре

• Более 15 проектов, в том числе много SPA, high-load и React

• Коммиты в Redux, webpack и koa

• Cпикер HighLoad++ 2015, MoscowJS

• Автор статей на Habrahabr и англоязычных ресурсах

, CEO

Page 3: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Page 4: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Most Popular

«Результаты ежегодного исследования StackOverflow — про технологии, зарплаты, счастье и кофе», http://habrahabr.ru/post/255717/

4

Page 5: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Most Popular

http://www.ryan-williams.net/hacker-news-hiring-trends/2016/march.html?compare1=java&compare2=node.js&compare3=JavaScript&compare4=golang

5

Page 6: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

JavaScriptrules the web

Page 7: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Почему необходимо использовать актуальные

технологии?

Page 8: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Что произошлоза эти 2 года

в мире JavaScript?

Page 9: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Какие тренды мы видим сегодня?

Page 10: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

10

Front-end клиент

Front-end сервер

Back-end сервер

Database

Java Legacy

etc

Page 11: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

11

Front-end клиент

Front-end сервер

Back-end сервер

Database

Java Legacy

etc

Page 12: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

12

Front-end клиент

Front-end сервер

Back-end сервер

Database

Java Legacy

etc

- HTML - [critical CSS] - JS Bundle

Page 13: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

13

Front-end клиент

Front-end сервер

Back-end сервер

Database

Java Legacy

etc

- HTML - [critical CSS] - JS Bundle

Page 14: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

14

Front-end клиент

Front-end сервер

Back-end сервер

Database

Java Legacy

etc

- HTML - [critical CSS] - JS Bundle

Page 15: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

15

Page 16: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

16

Page 17: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Front-end сегодня• Это не только JavaScript в браузере

• Сегодня Front-end - клиент и сервер:

17

SPA

Page 18: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

JavaScript на сервере• Представлен Node.js

• Экосистема - npm (Node.js Package Manager)

• Что такое npm?251 К пакетов, ~ 4 млрд. загрузок/мес.

18

https://unpm.nodesource.com/

Page 19: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Мир JavaScript - это самый увлекательный сериал

Page 20: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Мир JavaScript - это самый увлекательный сериал

• 2014: React = HTML в JavaScript?

• 2015: React - то, с чем стало всё проще

• 2014: Flux - как его внедрить?

• 2015: Flux - RIP, viva la Redux

20

Page 21: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014

Page 22: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Server-Side1. Node.js в Production -> развитие платформы

стало замедляться (Joyent страхует риски)

22

Page 23: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Server-Side1. Node.js в Production -> развитие платформы

стало замедляться (Joyent страхует риски)

2. Node.js для сборки SPA

23

Page 24: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Server-Side1. Node.js в Production -> развитие платформы

стало замедляться (Joyent страхует риски)

2. Node.js для сборки SPA

3. Require.js (AMD) -> Browserify (CommonJS) + BrowserSync/Watchify

24

Page 25: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Server-Side1. Node.js в Production -> развитие платформы

стало замедляться (Joyent страхует риски)

2. Node.js для сборки SPA

3. Require.js (AMD) -> Browserify (CommonJS) + BrowserSync/Watchify

4. 27 ноября 2014, доклад «webpack: 7 бед - один ответ» на MoscowJS 17:hHps://www.youtube.com/watch?v=kuXIgUsvpLo

5. Статья на Хабрахабр про webpack:hHp://habrahabr.ru/post/245991/

25

Page 26: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Client-Side1. В проектах сражаются за доминирование:

Angular, Knockout, jQuery, Backbone, Handlebars

2. Благодаря сборщикам, от чистого CSS уходят: LESS, SASS, Stylus

3. ...

26

Page 27: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Client-Side1. В проектах сражаются за доминирование:

Angular, Knockout, jQuery, Backbone, Handlebars

2. Благодаря сборщикам, от чистого CSS уходят: LESS, SASS, Stylus

3. ...

27

Page 28: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Client-Side1. В проектах сражаются за доминирование:

Angular, Knockout, jQuery, Backbone, Handlebars

28

1. Низкая структурированность

2. Медленное обновление UI

3. Side Effects

4. Много [ООП] кода и шаблонов

Page 29: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Page 30: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React

JavaScript-библиотека для создания UI

Page 31: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React1. Просто “V” в паттерне MVC + Specs and Lifecycle

31

Page 32: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React Lifecycle

32* - om

Page 33: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React1. Просто “V” в паттерне MVC + Specs and Lifecycle

2. Скорость обновления UI:

1. точечные и пакетные обновления

2. виртуальный DOM

33

Page 34: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React DOM Diff

34

Page 35: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React1. Просто “V” в паттерне MVC + Specs and Lifecycle

2. Скорость обновления UI:

1. точечные и пакетные обновления

2. виртуальный DOM

3. Отсутствие Side Effects:

1. однонаправленный Data Flow (props)

2. неизменяемые данные (state)

35

Page 36: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React Flow

36

Page 37: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React

UI = f(x), x = state, f = component

Page 38: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React1. Просто “V” в паттерне MVC + Specs and Lifecycle

2. Скорость обновления UI:

1. точечные и пакетные обновления

2. виртуальный DOM

3. Отсутствие Side Effects:

1. однонаправленный Data Flow (props)

2. неизменяемые данные (state)

4. Удобство разработки - JSX

38

Page 39: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React Component

39

Page 40: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React1. Просто “V” в паттерне MVC + Specs and Lifecycle

2. Скорость обновления UI

3. Отсутствие Side Effects

4. Удобство разработки - JSX

40

Page 41: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Client-Side1. В проектах сражаются за доминирование:

Angular, Knockout, jQuery, Backbone, Handlebars

41

1. Низкая структурированность

2. Медленное обновление UI

3. Side Effects

4. Много [ООП] кода и шаблонов

SOLVED BY

REACT

Page 42: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Client-Side1. В проектах сражаются за доминирование:

Angular, Knockout, jQuery, Backbone, Handlebars

2. Благодаря сборщикам, от чистого CSS уходят: LESS, SASS, Stylus

3. Большинство всё ещё скептически посматривает на React:

• HTML-код в JavaScript? PHP way? • Ещё один Angular? • А куда Backbone тут?

42

Page 43: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Client-Side

• 30 апреля 2014 • Сан-Франциско • 30ºC • 1700 разработчиков • F8 Facebook Developer Conference

Page 44: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблема масштабирования MVC

30 апреля 2014, Сан-Франциско F8 Facebook Developer Conference

Page 45: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

45

30 апреля 2014, Сан-Франциско F8 Facebook Developer Conference

Page 46: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Command-Query Responsibility Segregation

CQRS46

Page 47: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

CQRSCommand-Query Responsibility Segregation

модельдля чтения и записи

47

Page 48: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

CQRSCommand-Query Responsibility Segregation

модель для чтенияданных

модельдля чтения и записи

модель для записиданных

48

Page 49: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Что даёт Flux?

1. Состояние гонки (race condition)

2. Каскадные обновления (cascade

updates)

3. Воспроизводимость состояний

49

Page 50: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Что даёт Flux?

1. Состояние гонки (race condition)

2. Каскадные обновления (cascade

updates)

3. Воспроизводимость состояний

50

Page 51: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Воспроизводимость состояний

51

Atime

Page 52: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Воспроизводимость состояний

52

A B

Page 53: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Воспроизводимость состояний

53

A B

A B

Page 54: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Воспроизводимость состояний

54

A E

A E

Page 55: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Воспроизводимость состояний

55

A E

A E

Record / Replay

Time Traveling

Page 56: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2014: Client-Side4. Flux, как альтернатива MVC и архитектура для

React-приложений

5. Это помогло немного иначе посмотреть на React

6. Гонка Flux-фреймворков: Fluxxor, Reflux.js, Flux от Facebook, Flummox, Marty.js, Fluxible от Yahoo, AirBnb представляет alt

7. Было трудно, но понятно, что React и Flux - это верное направление

8. ES6-транспилеры 6to5, esnext, traceur начали вытеснять CoffeeScript и пр.

56

Page 57: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2015

Page 58: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2015: Server-Side1. 14 января выходит io.js:

форк Node.js с болееновым V8 с частичным ES6 - промисы, генераторы

2. 8 сентября вышел Node.js v4.0.0

3. Волна удаления gulp из процесса сборки с заменой на отдельные скрипты в npm scripts

4. Изоморфные приложения58

Page 59: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2015: Client-Side1. Пришёл ES6, 15 февраля - Babel (6to5 + esnext)

2. React Native

3. Взлёт популярности PostCSS

4. webpack стал стандартом де-факто в проектах

5. React почти полностью вытеснил Angular 1.x

6. Гонка Flux-реализаций окончена сокрушительной победой Redux

59

Page 60: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2015: Client-Side1. Пришёл ES6, 15 февраля - Babel (6to5 + esnext)

2. React Native

3. Взлёт популярности PostCSS

4. webpack стал стандартом де-факто в проектах

5. React почти полностью вытеснил Angular 1.x

6. Гонка Flux-реализаций окончена сокрушительной победой Redux

60

Page 61: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблемы Flux

Page 62: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблемы Flux

1. Обилие boilerplate-кода

2. “Заточенность" кода приложения под API каждого Flux-фреймворка

3. Логика сторов связана с их состоянием

62

Page 63: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Пара примеров с alt.js

Page 64: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Создание Store

64

Page 65: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Создание Store

65

полезная часть

Page 66: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Создание компонент

66

Page 67: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Создание компонент

67

бесполезнаячасть

Page 68: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблемы Flux

1. Обилие boilerplate-кода

2. “Заточенность" кода приложения под API каждого Flux-фреймворка

3. Логика сторов связана с их состоянием

4. Сложность сделать Record/Replay

5. Сложность для понимания роль диспетчера

68

Page 69: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблемы Flux

69

Store

ДиспетчерAction 1

Компонент

Page 70: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблемы Flux

70

Store

ДиспетчерAction 1

Action 2

Компонент

Page 71: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблемы Flux

71

Store

ДиспетчерAction 1

Action 2

Uncaught Error: Invariant Violation: Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.

Компонент

Page 72: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Проблемы Flux

hHps://github.com/facebook/flux/issues/47

Page 73: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Как эти проблемырешает Redux?

Page 74: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

ООП -> ФП

Page 75: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Reducers

75

Page 76: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Middleware

76

Page 77: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

View Provider

77

Доступ к данным из React, Angular и пр.

Page 78: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Connector

78

Page 79: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Redux

Page 80: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Будет ли ещё один Redux?

Page 81: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Hype Cycle

81

Page 82: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React + Redux: Plateau of Productivity

Page 83: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

А что тогда будет?

Page 84: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

2016 Тренды

Page 85: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Качественный рост экосистемы React + Redux

Page 86: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React - не просто V в MVC

Page 87: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

React - экосистема

Page 88: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Redux - экосистема

Page 89: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Рост экосистемы React + Redux1. Библиотеки компонентов

• Elemental UI

89

Page 90: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Elemental UI

Page 91: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Рост экосистемы React + Redux1. Библиотеки компонентов

• Elemental UI

• Material-UI

91

Page 92: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Material-UI

Page 93: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Рост экосистемы React + Redux1. Библиотеки компонентов

• Elemental UI

• Material-UI

• TouchstoneJS

93

Page 94: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

TouchstoneJS

Page 95: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Рост экосистемы React + Redux1. Библиотеки компонентов

• Elemental UI

• Material-UI

• TouchstoneJS

• reapp

95

Page 96: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

reapp

Page 97: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Рост экосистемы React + Redux1. Библиотеки компонентов

• Elemental UI

• Material-UI

• TouchstoneJS

• reapp

2. Инструменты для Redux

97

Page 98: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Redux Dev Tools1. Live Edit

2. Time Travel

Page 99: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Redux Slider Monitor1. Time Travel

через слайдер

Page 100: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Redux Diff Monitor

Page 101: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Redux GenTest Plugin

Page 102: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Рост экосистемы React + Redux1. Библиотеки компонентов

• Elemental UI

• Material-UI

• TouchstoneJS

• reapp

2. Инструменты для Redux

3. Анимация (react-motion, velocity-react, etc)

4. CSS Modules & Post CSS

102

Page 103: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Борьба библиотек для работы с данными

и offline-режима

Page 104: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Работа с данными и offline

1. Facebook Relay

2. Netflix Falcor

3. om.next

4. PouchDB, etc

5. hHp://blog.yld.io/2015/11/30/building-realtime-

collaborative-offline-first-apps-with-react-redux-

pouchdb-and-web-sockets/

104

Page 105: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

GraphQL + Relay

Page 106: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

До GraphQL

106

Page 107: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

До GraphQL

107

1. Где реализовать загрузку данных?

2. Как реализовать Optimistic Updates?

3. Чем оптимизировать сетевой трафик?

Page 108: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

GraphQL Example

Page 109: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

GraphQL Applications

Page 110: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

GraphQL Schema

Page 111: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Вместе с GraphQL

111

1. Optimistic Updates

2. Query Collocation

3. Кэширование

4. Автоматический Data-Fetching,прощай AJAX

Page 112: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Relay Way1. Прощаемся:

1. Service-Oriented Architecture

2. Imperative Data Fetching

2. Встречаем:

1. User Experience Oriented Architecture

2. Declarative Data Fetching

112

Page 113: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Relay Way1. Прощаемся:

1. Service-Oriented Architecture

2. Imperative Data Fetching

2. Встречаем:

1. User Experience Oriented Architecture

2. Declarative Data Fetching

113

Page 114: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Relay + React Native

114

Page 115: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Давление на React со стороны Angular 2

Page 116: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Функциональное программирование

+ Иммутабельные

данные

Page 117: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Page 118: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Функциональное

1. Ph. D

2. UI = f(x), x = state(action1, action2, ...actionN)

3. Ramda

4. Professor Frisby's Mostly Adequate Guide to Functional

ProgramminghHps://drboolean.gitbooks.io/mostly-adequate-guide/

content/

5. Fantasy Land SpecificationhHps://github.com/fantasyland/fantasy-land

118

Page 119: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Изоморфные приложения

Page 120: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Изоморфные приложения

By isomorphic we mean that any given line of code (with notable exceptions) can execute both on the client and the server.

Charlie Robbins,18 Oct 2011

Page 121: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Шаблоны

Стили

Локализация

Конфигурация

Routes

Права доступа

Модели

Схемы

Валидация

Сервисы

Изоморфные приложения

server.jsNode.js

worker.js

client.jsBrowser

admin.js

Бизнес-логика

Компоненты

API-интерфейсы

Actions, Reducers

Static Files

Page 122: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Server-Side Rendering• Сборка HTML на Front-end сервере

• Моментальное отображение в

браузере, ещё до загрузки JS

• Когда JS загрузится, React только

добавит обработчики событий

• А это очень быстро122

Page 123: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Server-Side Rendering1. Пользователь видит страницу

мгновенно

2. Отсутствие дополнительных запросов на получение данных

3. Страница может работать даже без JS

4. Полноценная URL-навигация и мета-тэги

5. Сохранение всех возможностей современного JavaScript

123

Page 124: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Изоморфные приложения1. Redux: the best for isomorphic apps

hHps://www.youtube.com/watch?

v=Uyk_8WWna6s

2. Изоморфные React-приложения:

производительность и масштабированиеhHp://www.highload.ru/2015/abstracts/1962.html

3. Изоморфные React-приложенияhHp://www.youtube.com/watch?v=PbK5xLmS0MU

124

Page 125: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Native Applications

Page 126: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Native Applications1. Electron

126

Page 127: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Slack

Page 128: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Page 129: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Page 130: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Native Applications1. Electron

2. React Native

130

Page 131: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

SVG + D3.js

Page 132: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

WebAssembly, WebGL

Page 133: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

C++ add-ons -> Node.js

Page 134: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Обучение и профессиональная сертификация

Page 135: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Node.js -> Enterprise

Page 136: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

StrongLoop -> IBM

Page 137: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Docker-контейнеры

Page 138: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Docker + CoreOS

138

Page 139: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Систематизация Workflow

Page 140: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Систематизация Workflow1. jsdoc 3, GitBook, documentation.js

2. JSON API, GraphQL

3. BitBucket, GitHub, Gogs

4. CI (CodeShip, Travis, Circle)

5. Docker (Heroku, DigitalOcean, vscale)

6. StrongLoop, PM2, Enterprise NPM

7. Slack, Fleep, etc

140

Page 141: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

GitBook

Page 142: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

documentation.js

Page 143: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Итоги

Page 144: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

20161. Качественный рост экосистем React и Redux

2. Библиотеки работы с данными (Facebook Relay, Falcor, etc) и поддержкой offline-режима

3. Давление на React-сообщество со стороны Angular 2

4. Функциональное программирование, иммутабельные данные

5. Изоморфные приложения

6. Native Applications (Desktop & Mobile)144

Page 145: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

20167. SVG & D3.js

8. WebAssembly, WebGL

9. C++ + JavaScript

10. Проекты обучения и профессиональной сертификации (egghead.io, etc)

11. React и Node.js активно входят в Enterprise

12. Микросервисная архитектура и контейнеры (Docker)

13. Систематизация Workflow145

Page 146: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Какие тренды мы видим сегодня?

Page 147: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Что произошлоза эти 2 года

в мире JavaScript?

Page 148: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Почему необходимо использовать актуальные

технологии?

Page 149: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Как поддерживать актуальность?

Page 150: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Процесс

1. Осведомлённость (10% времени)

2. Исследование

3. Обучение / практика

4. Использование

150

Page 151: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

OODA Loop

151* 1970

Page 152: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Рекомендации• Присоединяйтесь к MoscowJS

http://moscowjs.ru/

• Не читайте советских газет - улучшайте английский (Hacker News, Reddit, etc)

• Читайте оригиналы и технические блоги (Netflix, Facebook, AirBnb, LinkedIn и т.д.)

• Активно внедряйте в свою жизнь Twitter и GitHub

Page 153: Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность

Спасибо за внимание

Денис Измайлов

@DenisIzmaylov

https://github.com/DenisIzmaylov

www.startup-makers.ru

denis_izmaylov