webcamp2016:front-end_Роман Якобчук_relay, graphql и остальные радости...

21

Upload: webcamp

Post on 15-Feb-2017

135 views

Category:

Education


1 download

TRANSCRIPT

Page 1: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React
Page 2: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

RevJet

• Десятки сложных SPA

• 3 API

• Задача: построить дешборды для менеджмента

Page 3: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Мой прекрасный велосипед

• Доставать данные в минимальное количество запросов

• На клиенте живут тысячи сущностей

• Получать все, что необходимо для страницы

• Не запрашивать больше, чем нужно

Page 4: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Reusable Components

• А давайте сделаем 4 проекта с такими компонентами!

• Ээээ… Нет

Page 5: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Решение?

• Relay + GraphQL

Page 6: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

2015 для React community

• Redux

• Hot-loader

• Flow (late 2014)

• React Native(iOS, Android)

• Множество других Flux-библиотек

• Несколько Breaking changes в React-router

• Огромное количество изменений в экосистеме и API

• GraphQL

• Relay

Page 7: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Hello World с Relay

• Currency Trading App

• Очевидная структура

• ETA ~ 2-3 недели

• Не тут-то было

Page 8: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Relay – очередой Flux?

• Unidirectional dataflow для React

• Не управляет состоянием – его задача data-fetching

• Data-fetching в стиле React

Page 9: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Декларативный Fetch

• Декларативно описать вид

• Декларативно описать поведение

• Декларативно описать нужные данные

Page 10: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Меняем мышление

• Представьте, что каждый компонент сам запрашивает данные

Component

Server

Page 11: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Композиция

Компоненты

Page 12: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Как это работает

first_namelast_name

pricecurrency

dealer: namefirst_namelast_name

pictureemail

emailpicture

first_namepicture

notifications

One merged query

Page 13: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

А в нагрузку

• Клиентское кеширование

• Пагинация

• Optimistic updates

• Reusable components

• Получить все что нужно, но не более того

Page 14: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

А что на бэкенде?

• REST

• JSON API

• Велосипеды

• GraphQL

Page 15: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

GraphQL

• В лучших традициях PHP ~ SQL на клиенте J

Page 16: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Давайте смиримся

Очень

Толстый

Клиент

Очень тонкий сервер

Оченьмного

сервисов

Page 17: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Зачем QL на клиенте

• Latency – основной bottle-neck

• REST-а уже не хватает, мы пишем сложные приложения

• Хочется агрегировать сторонние сервисы на сервере

• Не хочется поддерживать сотни custom endpoints

• Нужен унифицированный API для очень разных клиентов

Page 18: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Что нас ждет

• Batch operations

• Defer

• Stream

• Live queries

• Subscriptions

Page 19: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

GraphQL без Relay?

• Redux

• Minimalistic Relay

Apollo Stack(http://www.apollostack.com/)

Page 20: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Назад к реальности

• Очень слабо документировано

• Очень сырая реализация

• Много ограничений

• Мало примеров за пределами Hello world

• Очень высокий порог входа

• Не известно, взлетит ли

• Нужно сначала продать GraphQL

Page 21: WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости современного React

Делайте крутые проекты

Роман Якобчук

Email: [email protected]

Skype: r.iakobchuk