→ Relates Forced Exposed App Actions&Objects, Глубокая дизайн-система и UX-паттерны
Чтобы понимать что человек делает, нужно анализировать объекты доменной модели.
Можно было бы только придерживаться строгих соглашений на api и анализирвоать его. Но в предлагаемой провязке с UI мы можем трассировать объекты, свойства, коллекции и экшены до конкретных UI-компонентов/виджетов. Благодаря этому, можно подсвечивать контролы, автоматически оптимизировать расположение и состав элементов, делать анимации и предпросмотры предлагаемых изменений, управлять доступными действиями и данными с бекенда / из конфига/админки/пользовательского конструктора.
В каком-то смысле это расширение идей семантичного веба, но в динамике, а не статике. Гипотетически, предлагаемые подходы смогут помочь не только людям с ограничениями и опытным клавиатуро-водам, но и более широкому классу пользователей. Через голосовые и natural language-команды FlexLight
Модель действий: CRUD+RPC(create, read, update, delete; remote-procedure-call). Эта модель описывает все действия.
Модель данных: примитивы, коллекции и словари (null/bool/number/string/enum,date, Array [], HashMap {}) — любые данные
Статический визуальный Базис: definition-list/template-text, list/table
а так же другая «семантичная» разметка: заголовки, лейблы, формы, картинки, навигация,кнопки,,,)
<DataGrid entity="books" {...{map, ids}}>
<Table cols={getCols()}/>
<Pagination {...filtering} />
</DataGrid>
<DataGrid entity="books" {...{map, ids}}>
<List cols={getCols()}/>
</DataGrid>
<DataGrid entity="books" {...{map, ids, id}}>
<Attrs cols={getCols()}/> // aka dl=definition-list
<DataGrid.Action method="load">
<Button>Обновить</Button>
</DataGrid.Action>
</DataGrid>
jsx. ReactAdmin like pseudo-code.
Frontend coding benefits: 1) автоматическая вёрстка, 2) автоматическое переключение между вьюшками и контролами с универсальным кодом для работы с сервером 3) локальная индикация загрузки и ошибок
большие важные текстовые поля без структуры, текстовые редакторы
?? разделение на документы и интерфейс
например, google sheets имеет явное разделение на app shell с тулбарами и настройками и документ, который тем не менее тоже может содержать интерактивные элементы.
разные агрегаты и композиции данных
нужно записывать в другой кеш, писать мапперы для преобразований