Описание тега elm-architecture

Используйте для вопросов, касающихся архитектуры Elm, независимо от того, реализована ли она в собственно [elm], или во многих реализациях на других языках и на других платформах. НЕ используйте этот тег для вопросов, касающихся общей архитектуры применительно к коду Elm.

Elm Architecture - это архитектурный паттерн для разработки пользовательских интерфейсов, аналогичный Model-View-Controller и т.п., но отличающийся в первую очередь своей чисто функциональной природой. Этот шаблон берет свое начало в вязе, но с тех пор был принят библиотеками на многих других языках и платформах.

Основными строительными блоками Elm Architecture являются:

  • В Model - включая состояние вашего приложения
  • В update функция - чистая функция от текущего состояния к следующему
  • В view функция - чистая функция из заданного состояния в HTML

update запускается событиями, прикрепленными к HTML в viewфункции и сопровождаются сообщением, описывающим, какое событие произошло. Вupdate функция будет тогда, учитывая message и текущее состояние, возвращаем следующее состояние, которое, в свою очередь, передается в view чтобы отобразить соответствующий HTML-код состояния.

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

Реализации