Сообщение Верстка UI - обзор подходов от 29.12.2024 10:06
Изменено 29.12.2024 10:52 Shmj
Верстка UI - обзор подходов
Вот что интересное заметил.
Ранее старались разделить — мухи отдельно, котлеты отдельно. Т.е. желали декларативное описание UI и отдельно уже код. Вот примеры
Канонически правильный, не мешаем котлеты с мухами:
— это уже переходной этап, т.к. кроме декларации — был JavaScript. Но все-же не смешивалось с основным ЯП — как то C++.
WinForms сделали полностью императивное описание, но все-же была автоматическая кодогенерация и файл с вашим кодом находился в другом файле. Весьма гибко и все-таки из коробки имеется разделение, хотя и не строгое.
Xaml же уже полностью вернулись к концепции полного разделения — был специальный XML-файл:
Интересно что ASP.Net WebForms — был смесью HTML и серверных тегов — все-таки позиционировался как декларативный — код на C# размещался отдельно, что поднимало на уровень выше по сравнению с тогдашним PHP:
Потом как-то стал популярен MVC везде, в т.ч. в том же PHP он начал активно использоваться, и уже все стало намного проще:
Используются XML-файлы с описанием элементов формы:
Аналогично, использовался XML для описания:
А теперь смотрите к чему мы опять вернулись.
Вариант Compose Multiplatform:
И даже новомодный SwiftUI
— это декларативно-императивный подход какой-то, когда вроде и все в декларации, но так же можно в любом месте и функцию дернуть. Причем сразу многие популярные платформы поддались этой тенденции. Т.е. все-таки отказались от концепции полного разделения мух и котлет — немножко мух теперь поддобавить можно
Ранее старались разделить — мухи отдельно, котлеты отдельно. Т.е. желали декларативное описание UI и отдельно уже код. Вот примеры
Дедовский MFC .rc (resource script)
Канонически правильный, не мешаем котлеты с мухами:
IDD_MYDIALOG DIALOGEX 0, 0, 200, 150
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "My Dialog"
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "OK", IDOK, "Button", WS_TABSTOP, 50, 120, 50, 14
CONTROL "Cancel", IDCANCEL, "Button", WS_TABSTOP, 110, 120, 50, 14
ENDQt Designer UI Language (XML)
| XML | |
| |
QT QML (Qt Modeling Language)
| QML | |
| |
— это уже переходной этап, т.к. кроме декларации — был JavaScript. Но все-же не смешивалось с основным ЯП — как то C++.
WinFormsи Xaml
WinForms сделали полностью императивное описание, но все-же была автоматическая кодогенерация и файл с вашим кодом находился в другом файле. Весьма гибко и все-таки из коробки имеется разделение, хотя и не строгое.
Xaml же уже полностью вернулись к концепции полного разделения — был специальный XML-файл:
| XAML | |
| |
Что с Web-технологиями
Интересно что ASP.Net WebForms — был смесью HTML и серверных тегов — все-таки позиционировался как декларативный — код на C# размещался отдельно, что поднимало на уровень выше по сравнению с тогдашним PHP:
| ASP.NET Classic WebForms | |
| |
Потом как-то стал популярен MVC везде, в т.ч. в том же PHP он начал активно использоваться, и уже все стало намного проще:
| ASP.NET MVC (Razor) | |
| |
| ASP.NET Blazor | |
| |
Андроид
Используются XML-файлы с описанием элементов формы:
| XML-layout | |
| |
iOS
Аналогично, использовался XML для описания:
| Storyboard | |
| |
Новые нравы
А теперь смотрите к чему мы опять вернулись.
Flutter
| Flutter | |
| |
Kotlin Multiplatform (KMP)
Вариант Compose Multiplatform:
| Compose Multiplatform | |
| |
SwiftUI
И даже новомодный SwiftUI
| SwiftUI | |
| |
— это декларативно-императивный подход какой-то, когда вроде и все в декларации, но так же можно в любом месте и функцию дернуть. Причем сразу многие популярные платформы поддались этой тенденции. Т.е. все-таки отказались от концепции полного разделения мух и котлет — немножко мух теперь поддобавить можно
Верстка UI - обзор подходов
Вот что интересное заметил.
Ранее старались разделить — мухи отдельно, котлеты отдельно. Т.е. желали декларативное описание UI и отдельно уже код. Вот примеры
Канонически правильный, не мешаем котлеты с мухами:
— это уже переходной этап, т.к. кроме декларации — был JavaScript. Но все-же не смешивалось с основным ЯП — как то C++.
WinForms сделали полностью императивное описание, но все-же была автоматическая кодогенерация и файл с вашим кодом находился в другом файле. Весьма гибко и все-таки из коробки имеется разделение, хотя и не строгое.
Xaml же уже полностью вернулись к концепции полного разделения — был специальный XML-файл:
Интересно что ASP.Net WebForms — был смесью HTML и серверных тегов — все-таки позиционировался как декларативный — код на C# размещался отдельно, что поднимало на уровень выше по сравнению с тогдашним PHP:
Потом как-то стал популярен MVC везде, в т.ч. в том же PHP он начал активно использоваться, и уже все стало намного проще:
Используются XML-файлы с описанием элементов формы:
Аналогично, использовался XML для описания:
А теперь смотрите к чему мы опять вернулись.
Вариант Compose Multiplatform:
И даже новомодный SwiftUI
— это декларативно-императивный подход какой-то, когда вроде и все в декларации, но так же можно в любом месте и функцию дернуть. Причем сразу многие популярные платформы поддались этой тенденции. Т.е. все-таки отказались от концепции полного разделения мух и котлет — немножко мух теперь поддобавить можно
Ранее старались разделить — мухи отдельно, котлеты отдельно. Т.е. желали декларативное описание UI и отдельно уже код. Вот примеры
Дедовский MFC .rc (resource script)
Канонически правильный, не мешаем котлеты с мухами:
IDD_MYDIALOG DIALOGEX 0, 0, 200, 150
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "My Dialog"
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "OK", IDOK, "Button", WS_TABSTOP, 50, 120, 50, 14
CONTROL "Cancel", IDCANCEL, "Button", WS_TABSTOP, 110, 120, 50, 14
ENDQt Designer UI Language (XML)
| XML | |
| |
QT QML (Qt Modeling Language)
| QML | |
| |
— это уже переходной этап, т.к. кроме декларации — был JavaScript. Но все-же не смешивалось с основным ЯП — как то C++.
WinForms и Xaml
WinForms сделали полностью императивное описание, но все-же была автоматическая кодогенерация и файл с вашим кодом находился в другом файле. Весьма гибко и все-таки из коробки имеется разделение, хотя и не строгое.
Xaml же уже полностью вернулись к концепции полного разделения — был специальный XML-файл:
| XAML | |
| |
Что с Web-технологиями
Интересно что ASP.Net WebForms — был смесью HTML и серверных тегов — все-таки позиционировался как декларативный — код на C# размещался отдельно, что поднимало на уровень выше по сравнению с тогдашним PHP:
| ASP.NET Classic WebForms | |
| |
Потом как-то стал популярен MVC везде, в т.ч. в том же PHP он начал активно использоваться, и уже все стало намного проще:
| ASP.NET MVC (Razor) | |
| |
| ASP.NET Blazor | |
| |
Андроид
Используются XML-файлы с описанием элементов формы:
| XML-layout | |
| |
iOS
Аналогично, использовался XML для описания:
| Storyboard | |
| |
Новые нравы
А теперь смотрите к чему мы опять вернулись.
Flutter
| Flutter | |
| |
Kotlin Multiplatform (KMP)
Вариант Compose Multiplatform:
| Compose Multiplatform | |
| |
SwiftUI
И даже новомодный SwiftUI
| SwiftUI | |
| |
— это декларативно-императивный подход какой-то, когда вроде и все в декларации, но так же можно в любом месте и функцию дернуть. Причем сразу многие популярные платформы поддались этой тенденции. Т.е. все-таки отказались от концепции полного разделения мух и котлет — немножко мух теперь поддобавить можно