Шаблон декомпозиции View-Model
Код работы с моделями пишется прямо в отображении.

// View function Task_list() { return <ul>{ Task.list.map( task => <li><Task_row {task} /></li> ) }</ul> } // Model class Task { static list = [] as Task[] }
✅ Отображение может использовать произвольные модели.
✅ Легко добавлять новые отображения, не меняя модели.
❌ Для отображения разных моделей необходимо дублировать код отображения.
❌ Изменение интерфейса модели требует обновления всех использующих её отображений.
❌ Двух слоёв слишком мало на больших масштабах.
