LINUX.ORG.RU

генерировать UI из JSON/YAML

 ,


0

3

День добрый.

Меня внезапно торкнула идея — было бы прикольно если бы можно было генерировать UI в браузере из данных полученных с сервера. Это нужно для быстрого клепания админок к бэкендам. Функции административные, поэтому красивый дизайн не требуется.

Т.е., скажем, отдаёшь по вебсокет что-типа такого:

ModalWindow:
  title: "hello"
  message: "Modal windows suck"
  buttons:
    - "okay"
    - "noooo"

И на выходе волшебным образом появляется окно (вопрос обработки событий типа нажатия на кнопку оставим стороной). Типа

Так вот, встречал ли кто такое для веба? Мне кажется, я где-то видел подобное. Я знаю что можно подобным образом делать интерфейсы к gtk через GtkBuilder, например. Гугление ничего достойного не нашло.

★★★★★

все к тому идет, почитай про компоненты, регистрируй свои теги, делай хтмл из ямла (добавляй на лету скобочки, ок готово) - вполне рабочий вариант. с сокетом ты конечно перегнул, хттп2 решит.

anonymous
()
Ответ на: комментарий от i-rinat

Это, похоже, под друпал :(.

Я пока нашёл вот это: https://github.com/barmalei/zebra . Оно умеет принимать формы из json.

Но тут перечитал комент анона, погуглил react ui json form и наткнулся на это: https://github.com/mozilla-services/react-jsonschema-form .

В общем, буду пробовать...

true_admin ★★★★★
() автор топика

Это паттерн: https://en.wikipedia.org/wiki/Naked_objects

собсвенно можно по его названию наискать реализации (мы делали сами для веба в том числе, но код увы и ах не открытый)

ps. если будешь делать сам (или найдешь готовое), сразу изучай можно ли туда повесить кастомный скрипт - иначе шаг влево (например фильтровать данные одного выпадающего списка по некоторым полям в форме) и придется или страдать пользователю или разработчику.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от true_admin

зебра интересна, рисует по сути канвас - риспонсив и html видимо как бонусы

anonymous
()
Ответ на: комментарий от i-rinat

Для меня веб это такая адская помойка что уже пофиг что там под капотом :). Главное чтобы не жрало дико проц и память и не нужно было загружать десятки мегабайт сжатого/запакованного кода библиотек.

Я вот позавчера открыл туториал по sqlalchemy в стиле web1.0, вкладка отожрала 1.4Gb... Я даже скриншот сделал, завтра в толксы вброшу.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от MadDeer

Но в целом QML и обычный позволяет грузить компоненты с удаленного сервера.

CrossFire ★★★★★
()
Ответ на: комментарий от Deleted

суть моего подхода как-раз в том что компоненты позволяют скрипты, лучше сначала о них почитать а потом о ямле фантазировать 9он тут в последнюю очередь0

anonymous
()
Ответ на: комментарий от true_admin

Но тут перечитал комент анона, погуглил react ui json form и наткнулся на это: https://github.com/mozilla-services/react-jsonschema-form .

Довольно интересное и грамотное разделение на сущности, хотя и несколько избыточное. Понравилось тут, что благодаря разделению, можно менять отдельные слои логические.

По сути, вообще говоря все это (и реализация в частности) приближается к декларативному стилю заданию формы.

anonymous
()
Ответ на: комментарий от anonymous

что и есть = кастомные теги со своей логикой (скрипты), как я и предлагал, и что и есть суть всех современных движков с реактивностью и шадоудом, будь то реакт или вуе

anonymous
()

Это нужно для быстрого клепания админок к бэкендам.

не совсем то, что ты описал.. но попробуй ng-admin

требуется минимальное описание полей на фронтенде, остальное делается через REST.

waker ★★★★★
()

если бы можно было генерировать UI в браузере из данных полученных с сервера

Это называется html forms. Без всяких json и yaml.

omnomnomnus
()
Ответ на: комментарий от omnomnomnus

Слишком мало абстракций. Wait... Не, всё равно слишком мало.

anonymous
()
Ответ на: комментарий от ChALkeR

Раз я уж тебя скастовал, скажи, долго учить JS до топового уровня? Несколько лет пишу на Go, активно контрибьючу, включая сам golang/go, был мейнтейнером нескольких популярных проектов, знаю многие нюансы и особенности ЯП. Сейчас хочу перейти на client-side, как основной, но что-то стрёмно с верхней части списка пользователей одного ЯП в самую нижнюю другого нырять. Если это делать, куда смотреть? ES2015, TypeScript, Dart (который на подъёме, догоняя Go?)? Danke.

MadDeer
()
Ответ на: комментарий от true_admin

туториал по sqlalchemy в стиле web1.0, вкладка отожрала 1.4Gb

с официального сайта? там sphinx и js на полнотекстовой поиск по всей документации, и да, это не веб1.0, а дизайн темы такой

hizel ★★★★★
()
Ответ на: комментарий от MadDeer

бекбон и далее, именно он сделал меня топовым клиентсайдером, но больше придется учить сами паттерны и техники а не языки и нюансы.

anonymous
()
Ответ на: комментарий от anonymous

уж не знаю ваш флоу, но мои админки обычно из моделей крудятся втформами всякими

не все используют эти ваши модели с джангами и ORM.

waker ★★★★★
()
Ответ на: комментарий от boombick

Это прокрастинация запостила. Пару - другую раз в год она берёт вверх и принимает необдуманные решения.

MadDeer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.