Віктор Турський про програмування / навігатор

концепції / declarative-ui

Декларативний UI (білдери на схемах)

Ідея, позичена прямо з геймдеву: як редактор рівнів Doom видає декларативні файли рівнів, так і Віктор пропонує описувати UI схемами, які компілюються в компоненти (швидша розробка UI). Інструменти на кшталт React Admin уже роблять це крос-проєктно, але вони стандартизовані під найменший спільний знаменник; його сильніша теза — що проєктно-специфічний білдер варто будувати навіть усередині ОДНОГО проєкту: це значно дешевше за крос-проєктний фреймворк, а всі ці екрани ти все одно писав би. Оскільки білдер специфічний для проєкту, коли приходить запит на фічу, він розширює схему того ж дня — і кожен екран застосунку підхоплює поведінку консистентно.

Його власний шаруватий стек: грід-білдер, чия схема розгортає ~2 його параметри в ~5 низькорівневих параметрів гріда Material, кодуючи консистентну поведінку, збереження налаштувань, сумісність з API, дії для рядків, підтвердження видалення і навігацію; білдер форм; і PageBuilder, що видає цілі CRUD-сторінки — завжди з можливістю спуститися на рівень нижче для по-справжньому кастомних сторінок (швидша розробка UI). Його дивує, що підхід непопулярний: люди використовують бібліотеки форм «сирими» на кожному екрані, хоча в кожному проєкті є кастомізації (скажімо, специфічні для API формати помилок, привʼязані до полів), які ще один декларативний шар закодував би рівно один раз. Подано з його явним застереженням: це обмін ідеями — «можливо, на вашому проєкті це не полетить».

Розібрано у відео

Повʼязане

Абстракції — білдер — це свідомо доданий шар абстракції із запасним виходом Проєктування програмного забезпечення — закодуй конвенції проєкту один раз замість кожного екрана React Admin — крос-проєктна версія тієї ж ідеї Material UI — низькорівневий шар, у який компілюються його білдери React — екосистема, де він бачить команди, що бояться додавати такі шари