Разработчикам

UI, React+Redux: Реактивное программирование на пальцах

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

хлопское объяснение на пальцах:
Вот есть электронная таблица – Эксель например

Мы меняем что-то в одной ячейке – зависимые ячейки пересчитались.

Можно организовать это с помощью MVC. Так делалось в GUI.

Можно организовать это с помощью EventDriven

А можно смотреть на это дело как на поток данных, pipe – бросили на вход, и по цепочке каждый отреагировал, и передал дальше. то есть нет толком ни Model ни Controller

нет и запутанных обменов событиями.

нужно только собрать нужные pipe, или собирать по стартовому событию

подход pipe это в реакте?

да, если опустить детали – то в этом фишка React – в pipe, который является частным случаем реактивного программировании.

ИМХО методы GUI – и приводят к такому тяжелому решению как ExtJS

средства же рендеринга браузера – очень далеки от GUI

хабр: Разработка javascript приложений на базе Rx.js и React.js (RxReact)

при этом, сам рендер React‘а, для программиста, схож по идеям что в Backbone
в отличие от Ангуляра
pipe обеспечивает понятного кода в виде линейности прохождения стартового события

но смысл там такой – pipe React очень похож на собственно event bubbling браузера. поэтому красивенько, естественно ложится на него

да, и еще плюс React‘а – на нем элементарно организовать серверный рендеринг. причем – несложно – разбить – часть конечного html-view рендерится на сервере, часть на фронтенде
и, так как React это View библиотека, а не фреймворк, то его можно интегрировать как хочется во что угодно. он не так навязчив своей идеологией как “ангуляр”
ну и еще хабр для старта

хабр: С 0 до 1. Разбираемся с Redux

Redux предлагает думать о приложении, как о начальном состоянии модифицируемом последовательностью действий (actions)

React обычно идет в паре с Redux или подобным. есть еще несколько. но можно и без

важно
что реактивное программирование – это другой взгляд на интерфейс, чем MVC

грубо говоря оно – из функционального программирования, а MVC из ООП

и в нем нужно смотреть на UI не как набор визуальных объектов, а как на независимые сущности, связанные в какие-то pipe

и тогда UI – это набор “ячеек электронной таблицы”, каждая ячейка знает только о тех, от которых она зависит, НО ничего о тех кто зависит от нее

в отличие от классики в ExtJS где отработав – компонент бросает какие-то события дальше.

Ячейка ничего никому не бросает. Она реагирует, меняет свой state, и все. Ну то есть конечно единственное что она бросает в мир – я изменилась!

на пальцах вот такое оно – реактивное программирование :)
…то есть когда мы проектируем UI в реактивном стиле, мы пишем свою “электронную таблицу”. где активные элементы – ячейки.
каждая заботится только о себе, о своей реакции на пришедшие к ней событие. и больше – ни о ком.
другими словами – меняется подход к распределению ответственностей
в сложных случаях – мы пишем детектор и сборщик pipe. а дальше – бросаем в этот pipe стартовое событие.
ну и, думаю понятно, что на этапе проектирования UI нам надо забыть что вот эта ячейка – элемент дерева, а эта – это таб, а эта – элемент для сортировки грида.
в реактивном программировании – да без разницы что она, ячейка нарисует. это ее забота. и ей без разницы кто там от нее зависит.

в этом другом мышлении и может быть сложность для программистов, перейти от MVC к pipe подходу.


ложка дегтя в бочку “крутых технологий на фронтенде” (вместо проверенных типа Backbone.js):

Никто больше не использует JQuery. Ты должен попробовать React: это — 2016!

— Интересно. Что такое React?

— Это — очень крутая библиотека, сделанная ребятами из Facebook. Она реально дает полный контроль и повышает производительность приложения, позволяя очень легко обрабатывать любые изменения представлений.

— Звучит заманчиво. Могу ли я использовать React для отображения данных с сервера?

— Ага, но сначала нужно добавить React и React DOM в виде библиотек.

— Подожди, почему две библиотеки?

— Ну, одна — это сама библиотека, а вторая — для манипулирования DOM, который ты теперь можешь описать в JSX.

— JSX? Что такое JSX?

— JSX — это просто расширение синтаксиса JavaScript, который выглядит очень похоже на XML. Это своего рода еще один способ описать DOM. Думай о нем, как об улучшенном HTML.

— Что случилось с HTML?

— Это 2016. Никто больше не пишет на сыром HTML.

— Ну хорошо. Если я добавляю эти две библиотеки, то я могу использовать React?

— Не совсем. Нужно добавить Babel, а затем можно использовать React.

— Другая библиотека? Что за Babel?

— О, Babel — это транспайлер, он позволяет ориентироваться на конкретные версии JavaScript, в то время как пишешь код в любой версии JavaScript. Тебе не обязательно добавлять Babel для того, чтобы писать на ReactJS, но если ты это не сделаешь, то ты застрял с ES5, ну а это 2016, ты должен кодить в ES2016+ как и все крутые чуваки.

— ES5? ES2016+? Я потерялся. Что за ES5 и ES2016+?

хабр Каково оно учить JavaScript в 2016

Оригинал: How it feels to learn JavaScript in 2016

React – он о чистоте и one-way flow, помните? Вот почему LinkedStateMixin стал персоной нон грата , и теперь вы должны написать 10 функций, чтобы получить входные данные из 10 полей формы. Нет, можно, конечно, написать одну функцию, которая будет проверять e.target, но в конечном итоге там будет такое дерево условий с нормализацией прилетающих из формы данных, что захочется плакать; поэтому так никто не делает. 80% из этих функций будет содержать одну строку с this.setState() или вызова Redux экшна. (Тогда вам, вероятно, придется создать еще 10 констант – по одному на каждый action). Я думаю, этот подход был бы приемлем, если вы могли бы генерировать весь этот код, просто подумав о нем… Но я не знаю ни одного IDE редактора, который мог бы значительно упростить написание такого бойлерплейта.

Почему мы выбрали Vue.js (а не React)

Добавить комментарий

HTML отключен, используйте Markdown. Размещение кода: [pastebin id=fs23] или [gistgit id=2926827] или [gistgit id=2926827 file=foo.txt]