Я уже высказывал своё мнение о уеб-дизайнерах и используемых ими
"фреймворках". Оно крайне негативное. Практически веб-технологии из
игрушки превращаются в инструмент, если использовать только
принятые в стандартах (а не уникальные фичи конкретного браузера) и
уже устоявшиеся функции браузеров (т.е. принятые 5-10 лет назад или
ранее), и при отказе от "веб-фреймворков", логика которых идёт
вразрез с принятыми в "индустрии разработки ПО" практиками. Нет
динамической генерации
HTML (нужно работать с объектной моделью, а не мешаниной символов), желательно отказаться от интерпретатора (взять typescript или хотя бы что-то вроде jslint), код писать в традиционном стиле, разделяя код и данные, разделяя на классы и функции, а не устраивая мешанину как принято у уеб-дизайнеров. Есть понятие Model-View-Controller парадигмы при конструировании пользовательских интерфейсов и её нужно придерживаться, когда отображаемые или вводимые данные отделены от видимого представления, а не опять же мешанина. И при создании HTML нужно чётко отделить логическую структуру от оформления, оставив последнее исключительно для CSS. Таблицы, например, не служат для форматирования по рядам и колонкам, а возможность через javascript насильно вписывать атрибуты элементам в html явно избыточная и предназначена для каких-то экстраординарных случаев.
Было бы удобно иметь готовый фреймворк для создания UI в браузере -- увы нет, нормальных точно нет. Или будет как у LightElf выше написано.
Наверное можно всё сделать, на голом браузере и будет более-менее даже совместимо со всеми относительно современными браузерами, если не сильно упираться в "дизайн".
Базовую идею я описывал ранее: все окна приложения в принципе делатся на два класса, на существующие статически (в которых только данные меняются) и на создаваемые динамически (более одного экземпляра или для которых невозможно составить шаблон -- экзотика). Создаваемые статически заранее описываются в статической же веб-странице, делаются не отображаемыми если сейчас не нужны. Динамические за редчайшими исключениями создаются путём размножения шаблона -- неотображаемого поддерева html-документа. Данные попадают в html и считываются обратно, после редактирования пользователем, исключительно через формы. Для ввода -- input, для вывода -- сейчас появился output, раньше был нужен object. В случае таблиц, например, в шаблоне сделана только одна строка, которая размножается по числу строк данных. Сами данные, которые попадают из/в формы -- это json-объекты, которые изоморфно переносятся из/в форму (заполнение идёт по совпадающим именам полей данных, для вложенных объектов -- рекурсивно). Таким образом обеспечивается разделение визуального (формы) и логического (json) представления данных.
HTML при таком подходе вполне может заменить уровень приложений создаваемых в прошлом на delphi, foxpro и т.п. Да, нет типичных виджетов, но в целом тот же функционал достижим не очень большими усилиями.