SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
Архитектура facebook’s flux
на базе i-bem и immutable.js
Дмитрий Душкин, sky2high.net
Драма front-end
В приложении
постоянно происходит
куча событий и
реакций на них,
которые тоже могут
порождать события
и реакции и т.д. и т.п.
2
3
Пожалуйста, нет, не надо!
Хватит условий!
Новая задача: загружать рекламу в просмотрщик, если:
— просмотрщик открыт,
— выбранное изображение является рекламным,
— пришли соотв. данные,
— это первая страница выдачи,
— перешли с главной страницы,
— в этой сессии этот блок еще не показывали,
— это эксперимент.
Куча
внеш
них
условий
Куча
внеш
них
услови
Куча
внеш
них
у
Собравшись с силами, мы погружаемся в код
4
findBlockOutside
innerBlock.hasMod
i-global
afterCurrentEvent
setTimeout
Flux по-простому
5
Flux по-простому
в i-bem (1/3)
6
Flux по-простому
в i-bem (2/3)
7
Flux по-простому
в i-bem (3/3)
8
Живое демо
9
Итоги
Единое хранилище состояния приложения позволяет отказаться
от многих связей между блоками
Вообще хорошо, когда нет внешних связей (findBlockOutside)
Неглубокий call stack = понятный код
React не очень-то и нужен. Изменять DOM можно самим точечно.
(потенционально) Проще писать unit-тесты: достаточно выставить
желаемое состояние и проследить за ожидаемой реакцией.
10
Минусы текущей реализации
Immutable.min.js ≈ 20 Кб gzip, хотя нужно от него только
половина возможностей
11
Репозиторий:
https://github.com/DimitryDushkin/bem-store
Спасибо за всё.) !

Contenu connexe

Similaire à Flux + i bem = bem-store

Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackAlexey Ivanov
 
Yeoman generator своими руками
Yeoman generator своими рукамиYeoman generator своими руками
Yeoman generator своими рукамиchaykaborya
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование SymfonyMedia Gorod
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияSQALab
 
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Yandex
 
Monitoring and Load testing
Monitoring and Load testingMonitoring and Load testing
Monitoring and Load testingFedor Malyshkin
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPAEugene Abrosimov
 
ThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с Production
ThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с ProductionThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с Production
ThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с ProductionVladimir Malinin
 
2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-система2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-системаKonstantin Belkin
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
 
350 практикум по информатике. 7кл. босова л.л-2015 -48с
350  практикум по информатике. 7кл. босова л.л-2015 -48с350  практикум по информатике. 7кл. босова л.л-2015 -48с
350 практикум по информатике. 7кл. босова л.л-2015 -48сdfdkfjs
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
Как начать тестировать безопасность уже сегодня
Как начать тестировать безопасность уже сегодняКак начать тестировать безопасность уже сегодня
Как начать тестировать безопасность уже сегодняSergey Belov
 
Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...
Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...
Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...Yandex
 
скачивание видео и создание скриншотов
скачивание видео и создание скриншотовскачивание видео и создание скриншотов
скачивание видео и создание скриншотовAnnaYe1
 
Архитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложенийАрхитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложенийConstantiner
 
чмв лекция №7
чмв   лекция №7чмв   лекция №7
чмв лекция №7student_kai
 

Similaire à Flux + i bem = bem-store (20)

Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpack
 
Yeoman generator своими руками
Yeoman generator своими рукамиYeoman generator своими руками
Yeoman generator своими руками
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализацияEnd-2-End UI автоматизация в мобильном приложении. Наша реализация
End-2-End UI автоматизация в мобильном приложении. Наша реализация
 
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
Алексей Авдеев — Применение Backbone.js для рефакторинга фронтенда веб-прилож...
 
Monitoring and Load testing
Monitoring and Load testingMonitoring and Load testing
Monitoring and Load testing
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPA
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
ThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с Production
ThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с ProductionThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с Production
ThinkJavaKharkiv#1 Шеф, все пропало. Проблемы с Production
 
Load testing with Tsung
Load testing with TsungLoad testing with Tsung
Load testing with Tsung
 
2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-система2013 07-22 тз-пожилая-система
2013 07-22 тз-пожилая-система
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
350 практикум по информатике. 7кл. босова л.л-2015 -48с
350  практикум по информатике. 7кл. босова л.л-2015 -48с350  практикум по информатике. 7кл. босова л.л-2015 -48с
350 практикум по информатике. 7кл. босова л.л-2015 -48с
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
Как начать тестировать безопасность уже сегодня
Как начать тестировать безопасность уже сегодняКак начать тестировать безопасность уже сегодня
Как начать тестировать безопасность уже сегодня
 
Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...
Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...
Александр Титула-Бойченко "Приложения для соцсетей. Универсальные приложения ...
 
скачивание видео и создание скриншотов
скачивание видео и создание скриншотовскачивание видео и создание скриншотов
скачивание видео и создание скриншотов
 
Архитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложенийАрхитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложений
 
чмв лекция №7
чмв   лекция №7чмв   лекция №7
чмв лекция №7
 

Flux + i bem = bem-store