Size: a a a

Elm Lang сообщество разработчиков

2020 November 03

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Простите первые 10 строк...
источник

I

Igor in Elm Lang сообщество разработчиков
Denis Krivosheev
Дом вообще мутабельная гадость, вопрос как от него абстрагироваться... в данном случае выходит очень приятный код который легко читать легко писать
Для этого и придуман vritual-dom, что бы мы могли мыслить имутабельными elm типа или clojure мапами.
Что бы стейт был всегда в одном месте.

А всякими "гадостями" пусть фреймворк занимается, сравнивая изменения иммутабельный структур.
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Igor
Для этого и придуман vritual-dom, что бы мы могли мыслить имутабельными elm типа или clojure мапами.
Что бы стейт был всегда в одном месте.

А всякими "гадостями" пусть фреймворк занимается, сравнивая изменения иммутабельный структур.
Так и получается, только виртуал дом не нужен
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Так ведь не нужно сравнивать изменения мутабельных структур, если все наши структуры имутабельные
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Дом просто автоматически приводится в соответствие модели
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Модель хранится в атоме
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Атом сам уведомляет кого надо о чем следует
источник

I

Igor in Elm Lang сообщество разработчиков
Denis Krivosheev
Дом просто автоматически приводится в соответствие модели
А как ты декларативно опишешь соотвествия между моделями и UI?
В virtual-dm это просто функция от модели.

А у тебя получается куча мутабельных полей с подписками ака mvvm
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Да нет же)
источник

I

Igor in Elm Lang сообщество разработчиков
Ну я вон читаю про hopon - ну там cell, те вместо одно модельки, у тебя 10 реактивных cell со своими состояними
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Нет, тут суть в том, что для персистентных иммутабельных структур можно точно знать, что такое-то поддерево не менялось. А значит просто его не рисовать заново.
в виртуал дом тоже это используется
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Ну я знал конечно что будет трудно и люди мне не поверят)) вот пример

const x = cell(1)
const y = cell(2)
const z = formula((x,y) => x + y, x, y)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Вот у нас две ячейки с инпутом и одна формула
источник

K

Kir in Elm Lang сообщество разработчиков
Это ж пропагаторы
источник

I

Igor in Elm Lang сообщество разработчиков
Denis Krivosheev
Ну я знал конечно что будет трудно и люди мне не поверят)) вот пример

const x = cell(1)
const y = cell(2)
const z = formula((x,y) => x + y, x, y)
Ну да реактивно во все поля, на мутабльых ячейках
Чем тебе re-frame не нравится?
источник

K

Kir in Elm Lang сообщество разработчиков
Ну или грязные behaviour'ы, в терминах реактивного программирования
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
А вот вью
const view = () => div([text(z)])
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Igor
Ну да реактивно во все поля, на мутабльых ячейках
Чем тебе re-frame не нравится?
Мне интересно было попробовать концепт без виртуал дом и у меня была очень специфичная задача
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Denis Krivosheev
А вот вью
const view = () => div([text(z)])
Вью кстати вернёт просто HTMLDivElement
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Но с таким обещанием что если когда-нибудь значение z изменится, то текст в диве изменится тоже
источник