Size: a a a

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

2021 August 23

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
мы сейчас очень активно используем это в проекте (на данный момент для написания вэбкомпонентов чтобы не тащить еще один виртуал дом в проект). Работает оно прекрасно, кода очень мало... уже получили разрешение заопенсорсить... скоро будет в общем
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
единственный элемент вдом который там есть - это работа с чилдренами. чилдрены получаются из списка, то есть есть старый список и новый и есть соответствующий им хтмл элемент. Нужно сравнить старый массив и новый и вычислить минимальное еоличество мутаций, необходимое для списка, чтобы из старого списка получить новый
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
то есть тут реально считается дифф для двух массивов (но массивов, не элементов дома), после чего готовится набор мудаций, который применяется уже к дому... но алгоритм весьма простой и довольно быстрый
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
это намного дешевле чем считать дифы для деревьев (чем собственно дом и является)
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
наверное дешевле, как и императив чаще дешевле фп
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
в плане вычислений
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
главное допущение, которое делает это возможным - персистентность данных.... но такое допущение лежит в основе практически всех функциональных языков, поэтому такой подход легко ляжет что на пурс, что на рескрипт, на кложе он уже лежит собственно
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Вот с тайпскрипт это сложнее... тут это допущение приходится специально усиливать, накладывать обязательства на пользователя, вводить специальные конструкции вроде Equals интерфейсов
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
персистентность данных - тут что конкретно имеется ввиду, что если референс объекта не меняется, он сам не меняется?
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
да... можно сказать иммутабельность
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
ну у меня в виртуал дом (или в snabbdom) такое допущение изначально работает, оно не работает в каких-то вирутуал дом?
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
думаю в большинстве вдом этого нет... по крайней мере тот же реакт будет рендерить все даже если ты вручную мутировать будешь... единственное он сделает много лишних ререндерингов
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
без применения PureComponent и всяких мемоизаций реакт будет перевычислять дом на каждый setState, не важно поменялось что-то или нет
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
слава Богу не одним реактом...
источник

СК

Сергей Князев... in Elm Lang сообщество разработчиков
А рескрипт так же делает, или в его биндингах заложены соответствующие оптимизации?
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
я не работал с рескрипт, только с ризон. Ризон делала так же, потому что там тот же реакт с тем же виртуал домом под капотом. Единственное, там сам язык же иммутабельный и этого просто не происходит по этой причине
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
ну и вполне вероятно что в reason-react есть оптимизации с PureCoponent... я бы удивился если бы их небыло
источник

СК

Сергей Князев... in Elm Lang сообщество разработчиков
Вероятно, да
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Другое дело если у тебя данные уже имутабельные, то зачем тебе реакт? можно выкинуть от него половину и весь виртуал дом выбросить... просто необходимости нет, набор мутаций можно еще на уровне данных посчитать
источник

СК

Сергей Князев... in Elm Lang сообщество разработчиков
Ризон/рескрипт вроде разрабатываются фейсбуком с ориентировкой на реакт. Не уверен, насколько в том мире популярны и оправданы альтернативы
источник