Статьи

TodoMVC Пересмотрено

Приложение TodoMVC UI ( todomvc.com ) широко считается «Hello World» для разработки пользовательского интерфейса. На сайте есть несколько демонстраций с использованием различных UI-фреймворков. В этой статье я исследую использование конечного автомата для разработки приложения пользовательского интерфейса TodoMVC. Я буду использовать ванильный JavaScript для иллюстрации этих концепций, и я буду использовать структуру конечного автомата, которую я представил в предыдущей статье .

Государственные переходы

Первым шагом в использовании конечного автомата является написание переходов состояний для пользовательского интерфейса нашего приложения. Я предполагаю следующие переходы состояний для приложения TodoMVC (снимок экрана внизу страницы), который я рассматриваю здесь:

Инициалы государство Pre-Event процессор Сообщение событие Конечное состояние
unknownState в процессе processOnload () onloadSuccess readyForAdd
readyForAdd addTodo processAddTodo () addTodoSuccessNoneSelected readyForAddSelect
readyForAddSelect addTodo processAddTodo () addTodoSuccessNoneSelected readyForAddSelect
readyForAddSelect changeTodo processChangeTodo () changeTodoSuccessSomeSelected readyForAddSelectUnselectDelete
readyForAddSelect changeTodo processChangeTodo () changeTodoSuccessAllSelected readyForAddUnselectDelete
readyForAddUnselectDelete addTodo processAddTodo () addTodoSuccessSomeSelected readyForAddSelectUnselectDelete
readyForAddUnselectDelete changeTodo processchangeTodo () changeTodoSuccessNoneSelected readyForAddSelect
readyForAddUnselectDelete changeTodo processchangeTodo () changeTodoSuccessSomeSelected readyForAddSelectUnselectDelete
readyForAddUnselectDelete deleteTodo processDeleteTodo () deleteTodoSuccessAllDeleted readyForAdd
readyForAddSelectUnselectDelete addTodo processAddTodo () addTodoSuccessSomeSelected readyForAddUnselectDelete
readyForAddSelectUnselectDelete changeTodo processChangeTodo () changeTodoSuccessAllSelected readyForAddUnselectDelete
readyForAddSelectUnselectDelete changeTodo processChangeTodo () changeTodoSuccessSomeSelected readyForAddSelectUnselectDelete
readyForAddSelectUnselectDelete changeTodo processChangeTodo () changeTodoSuccessNoneSelected readyForAddSelect
readyForAddSelectUnselectDelete changeTodo processChangeTodo () changeTodoSuccessSomeSelected readyForAddSelectUnselectDelete
readyForAddSelectUnselectDelete deleteTodo processDeleteTodo () deleteTodoSuccessNoneSelected readyForAddSelect

Я выделил четыре состояния приложения:  readyForAddreadyForAddSelect, readyForAddUnselectDelete, и  readyForAddSelectUnselectDelete. Состояние readyForAdd, например, подразумевает, что только события добавления могут быть отправлены из этого состояния, в то время как readyForAddSelectсостояние может только генерировать события добавления и выбора .


Вам также может понравиться:
Модель-представление-контроллер (MVC) Deep Dive .

События и состояние конфигурации

Следующим шагом является настройка событий и состояний, записанных в приведенной выше таблице, как объектов JavaScript. События фиксируются как:


JavaScript