7.21M
Категория: ПрограммированиеПрограммирование

Состояние приложения: через вселенные

1.

Состояние приложения: через вселенные
Бегунов Андрей / Руководитель разработки интерфейсного фреймворка

2.

Пример контрола: Grid
Поддержка источников данных, навигация(+виртуальная прокрутка), сортировка,
поддержка иерархии, выбор записей, группировка, редактирование по месту,
drag-n-drop, панель операций над записью(+ swipe), настройка заголовка
таблицы, режим поиска, работа с клавиатурой, темы оформления и т.д. и т.п.

3.

Timeline of JavaScript UI Frameworks

4.

Single Page Application

5.

Пример типового реестра

6.

Давайте разбираться

7.

Цикломатическая сложность

8.

Чистые функции

9.

Связность и зацепление

10.

А судьи кто?

11.

Any framework

12.

Lifehack

13.

Что не так с MVC?

14.

15.

Diagram of interactions within the MVC pattern

16.

MVC/Flux
action
User
Controller
(dispatcher, action
creator, action)
send data
Model
(store, reducers)
.
display
View
(page, containers,
components)
receive data

17.

Типовые проблемы “MVC”?
Controller
(state, business
logic)
User
Model
(state, business
logic)
.
View
(state, business
logic, ui logic

18.

Debug mode

19.

Современный подход
Store
Page
View
View
View
View
Dispatch
Action
Dispatch
Action
Dispatch
Action
Dispatch Dispatch
Action
Action
Dispatch
Action
Store
fragmen
Store
fragmen
Store
fragmen
Store
fragmen
Store
fragmen

20.

Как быть?
Нет

21.

Увеличиваем связность, уменьшаем зацепление

22.

Однонаправленный поток данных
Input
User
.
Domain model
Output

23.

Где состояние?

24.

Особенности интерфейса СБИС

25.

Проблемы глобального состояния*
Глобальное состояние – singleton.
Компоненты могут иметь множество
экземпляров
Жизненный цикл состояния
отличается от жизненного
цикла компонентов
Может быть большим

26.

Компонентный подход

27.

Prop drilling

28.

Композиция и render props

29.

Магия вне Хогвартса

30.

Глобальные хранилища
Информация о пользователе
Права
Локализация
Настройки приложения
Пользовательские параметры

31.

Я создал несколько
singleton’ов для
хранения
глобального
состояния
Проблемы юнит-тестирования
singleton
С этим можно бороться.
Но как же ты
пишешь юнит
тесты?

32.

В заключение
Технологии устаревают очень
быстро.
Не гонитесь за технологиями.
Изучайте фундаментальные
основы программирования.
Чаще задавайте вопросы в
стиле: «Как это работает?»,
набирайтесь опыта.

33.

Спасибо за внимание.
Вопросы?
Бегунов Андрей
https://t.me/anbegunov
English     Русский Правила