МРТ для данных, avito spa meetup #2

43
МРТ для данных Specs, drafts and ngrok-n-scroll 1

Upload: anastasia-goryacheva

Post on 10-Feb-2017

254 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: МРТ для данных, Avito SPA meetup #2

МРТ для данныхSpecs, drafts and ngrok-n-scroll

1

Page 2: МРТ для данных, Avito SPA meetup #2

Данные Много данных2

Page 3: МРТ для данных, Avito SPA meetup #2

Работаю в Avito

3

Page 4: МРТ для данных, Avito SPA meetup #2

Работаю в Avito

Делаем SPA

4

Page 5: МРТ для данных, Avito SPA meetup #2

Профессиональные инструменты5

Page 6: МРТ для данных, Avito SPA meetup #2

twitter.com/JavaScriptDaily/status/718471086246072320

6

Page 7: МРТ для данных, Avito SPA meetup #2

Всё сложно1. Пользователи то и дело что-то меняют

2. Разнообразные сценарии использования

3. У приложения множество состояний

4. Для описания требуются сотни сущностей

5. Тесные и обширные связи между сущностями и действиями

6. Разросшаяся кодовая база

7

Page 8: МРТ для данных, Avito SPA meetup #2

В медицине работает МРТ-диагностика8

Page 9: МРТ для данных, Avito SPA meetup #2

Диагностика шаблонов

Видео

9

Page 10: МРТ для данных, Avito SPA meetup #2

Подробнее про инспектор шаблонов1. Доклад Романа Дворнова (февраль 2015)

2. Слайды slideshare.net/basisjs/spa-45289195

3. Видео youtu.be/IUtbbN9aevU

4. Адаптация для backbone и react github.com/lahmatiy/component-inspector

10

Page 11: МРТ для данных, Avito SPA meetup #2

Локализация. МРТ для словарей

Видео

11

Page 12: МРТ для данных, Avito SPA meetup #2

Погружение

в технические детали

12

Page 13: МРТ для данных, Avito SPA meetup #2

13

Page 14: МРТ для данных, Avito SPA meetup #2

Трансформация значений-скаляров

В результате создается такой же реактивный скаляр:

будет изменяется при изменении породивших его значений

14

Page 15: МРТ для данных, Avito SPA meetup #2

Трансформация наборов

Видео

15

Page 16: МРТ для данных, Avito SPA meetup #2

Трансформация нескольких наборов в новыйнабор

Видео

16

Page 17: МРТ для данных, Avito SPA meetup #2

Вычисление значения по набору – индексыПримеры: сумма, количество элементов

Значение-результат знает про изменением набора, а именно...

...отслеживается insert/remove элементов в наборе

...и update самих элементов (не проиллюстрировано)

Видео

17

Page 18: МРТ для данных, Avito SPA meetup #2

18

Page 19: МРТ для данных, Avito SPA meetup #2

ПримерАктивировать кнопку для добавления на площадки и/или в XML выгрузки

19

Page 20: МРТ для данных, Avito SPA meetup #2

ПримерАктивировать кнопку для добавления на площадки и/или в XML выгрузки

Два набора → filter selected → count → число → true/false

20

Page 21: МРТ для данных, Avito SPA meetup #2

Пример (продолжение)Два набора → filter selected → count → число → true/false

21

Page 22: МРТ для данных, Avito SPA meetup #2

Смотрим на результат

Почему сейчас disabled: true или disabled: false ?

22

Page 23: МРТ для данных, Avito SPA meetup #2

Инспектор данных

Видео

Видео 2

Картотека

23

Page 24: МРТ для данных, Avito SPA meetup #2

В чём же магия?

24

Page 25: МРТ для данных, Avito SPA meetup #2

Инструментирование

github.com/restrry/babel-plugin-source-wrapper

25

Page 26: МРТ для данных, Avito SPA meetup #2

Подробнее про инструментирование• Доклад Романа Дворнова (ноябрь 2015, FrontTalks в Минске)

• Слайды slideshare.net/basisjs/ss-52963081

• Видео youtu.be/watch?v=UPtDcAbg6EI, начиная с 2:41:12

26

Page 27: МРТ для данных, Avito SPA meetup #2

Интересует не только локация

Добавляем мета-данные вручную

27

Page 28: МРТ для данных, Avito SPA meetup #2

Что нам даёт devinfo?Исходный объект остается без изменений (WeakMap: объект → dev-данные)

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

28

Page 29: МРТ для данных, Avito SPA meetup #2

Распаковка devinfo – строим дерево29

Page 30: МРТ для данных, Avito SPA meetup #2

Распаковка devinfo – строим дерево30

Page 31: МРТ для данных, Avito SPA meetup #2

Сложности31

Page 32: МРТ для данных, Avito SPA meetup #2

№1 Локации для фабрик• фабрика обещает создать значение, когда придут данные

• Место создание результата

• Место создания фабрики

• Нужно второе

32

Page 33: МРТ для данных, Avito SPA meetup #2

№2 Кэш (для фабрик)• Значение создается один раз и кладется в кэш

• Если значение уже создано, переиспользуем его

• К значению привяжется локация первого обращения

• Для второго использования значения эта информация будет бесполезна

• Это нам не подходит

33

Page 34: МРТ для данных, Avito SPA meetup #2

Решение – PROXY

• Значения по-прежнему считаются идентичными

• ...кроме момента, когда хотим узнать локацию создания

Добавляется только в dev-режиме

34

Page 35: МРТ для данных, Avito SPA meetup #2

Итоги

35

Page 36: МРТ для данных, Avito SPA meetup #2

Есть ли жизнь без basis.js?36

Page 37: МРТ для данных, Avito SPA meetup #2

Главное – идея• Подход не завязан на фреймворк

• Но

• Требуется глубокая интеграция

• Специфика там, где происходит преобразование данных

37

Page 38: МРТ для данных, Avito SPA meetup #2

Точки трансформации данных38

Page 39: МРТ для данных, Avito SPA meetup #2

Точки трансформации данных39

Page 40: МРТ для данных, Avito SPA meetup #2

Точки трансформации данных40

Page 41: МРТ для данных, Avito SPA meetup #2

Точки трансформации данных41

Page 42: МРТ для данных, Avito SPA meetup #2

Сложно, но можно42

Page 43: МРТ для данных, Avito SPA meetup #2

ВопросыНастя Горячева, почта [email protected], твиттер @tyanasgo

43