Комментарии 31
Сам активно использую Wails для небольших десктопных проектов в связке с React.js, связка Golang с JS действительно отличный вариант для быстрого прототипирования, и да Tauri хоть и более активный в плане коммюнити, но Rust не для всех ) Если кому то будет интересно - сделал небольшой Template чтобы могли попробовать.
Есть ли проверенные нативные варианты кроссплатформенного GUI на golang? Без JS, Electron и другого.
Есть же Fyne. Он позиционируется как кроссплатформенный. Почему не использовали его?
Ну GUI приложения без современного веба выгледят как приложения для windows xp в 2004м) Это просто не приемлемо, ну по крайней мере в комерческом продукте.
Fyne - это как QT до QML, т.е. на виджетах.
Посмотрите на их примеры
https://apps.fyne.io/all.html
https://apps.fyne.io/apps/com.edgevpn.html
https://apps.fyne.io/apps/com.tqdev.fyne-authenticator.html
Ну если чисто для себя или для внутреннего использования в компании, для сисадминов там, это ещё годно, т.е. просто кнопки и формы если нужны. Но на рынке засмеют же во первых, а во вторых ну просто не будут пользоваться.
Никому не важно, что приложение спотифая тащит пол гига, главное как оно выглядит. Пользователю особо без разницы что там под капотом.
Ну GUI приложения без современного веба выгледят как приложения для windows xp в 2004м
Чтобы они выглядели как приложения для Windows XP, нужно запустить их на Windows XP или принудительно их так стилизовать. В противном случае их отрисует тулкит с той темой, что используется в системе. Не нравится — пишите свои стили, это нынче в GUI-фреймворках для десктопа делается безо всякого веба.
Это просто не приемлемо, ну по крайней мере в комерческом продукте.
Но на рынке засмеют же во первых, а во вторых ну просто не будут пользоваться.
От таких мыслей несёт, как бы так помягче выразиться, потребительской культурой. Приложение не вписывается в общую тему и жрёт тонны ресурсов для свистоперделок? Пофиг, зато не засмеют... а кто не засмеёт, кстати? Мне сложно себе представить, чтоб кто-то реально смеялся над тем, что разработчики предпочли обычный вид приложения бешеному потреблению ресурсов.
Дело не плохих стилях, а в том, что нативные десктопные инструенты (в плане фреймворков) для дизайна нетипового/кастомного UI, который всем так нравиться, это в 8 из 10 случаев лютая трешанина, на фоне которой даже упоротая комбинация HTML+CSS выглядит волшебно. Это вдвойне проблема когда заходит про кросс-платформенные инструменты.
От таких мыслей несёт, как бы так помягче выразиться, потребительской культурой.
Ну так мы и живём в этом мире потребительской культуры.
Мне сложно себе представить, чтоб кто-то реально смеялся над тем, что разработчики предпочли обычный вид приложения бешеному потреблению ресурсов.
Думаю от части вы правы и моё вчерашнее высказыванее резковато, сегодня с утра я бы так уже не написал, но как говориться что написано пером ... ))
В целом идея в том, что веб технологии по части визуала ушли далеко вперёд, а ещё это низкий порог входа, и много специалистов. По этому наверное пожертвовать 350 мегабайт опративки проще, чем искать хорошего спеца на Delphi / QT. Т.е. использование веба на дестктопе просто открывает двери большему количеству разработчиков. Ну в общем не буду расписывать то, что и так ниже в комментариях уже обсудили.
Я это называю "солидностью стека". Когда есть отличные инструменты для решения задач, но видите ли они не солидны и за них засмеют... И правда, кто засмеёт? Клиенты? Если им вечно не говорить, что солидно, а что нет, то им пофиг на техническую реализацию им важен функционал и поддержка. Большая часть энтерпрайза сидит на java erp/crm, состоящих целиком и полностью из легаси решений.
Засмеют другие программисты? Если программист смеётся над использованием релевантного стека, для быстрого и эффективного решения задачи, то стоит усомниться в его компетентности.
Причём, в контексте темы, это иронично слышать, учитывая отношение многих программистов, пишущих под desktop, к фронтенд фреймворкам.
Да что вы прицепились к этому "засмеют"? Понятно же, что образно.
И правда, кто засмеёт? Клиенты?
Наши основные клиенты - это разработчики.
Причём, в контексте темы, это иронично слышать, учитывая отношение многих программистов, пишущих под desktop, к фронтенд фреймворкам.
Значит они нас засмеют) получается не важно что выбирать, засмеют в любом случае)))
Значит они нас засмеют) получается не важно что выбирать, засмеют в любом случае)))
Они вас не засмеют, скорее удивятся, потому отношение к фронтенд фреймворкам предвзятое из-за проблем с производительностью. Кстати, в комментариях так и произошло, что над авторами же никто не смеётся, а советуют более удобные инструменты для создания приложений)
Ну GUI приложения без современного веба выгледят как приложения для windows xp в 2004м
Это заблуждение.
Приложение без веба. Кроссплатформенное. 1

Приложение без веба. Кроссплатформенное. 2

Приложение без веба. Кроссплатформенное. 3

Приложение без веба. Кроссплатформенное. 4

Приложение без веба. Кроссплатформенное. 5

Приложение без веба. Кроссплатформенное. 6

И это только мои примеры.
Здесь всё векторное, что означает, что качество картинки будет только улучшаться с увеличением DPI. Все примеры кроссплатформенные. В примерах нет никакого WebView или даже намека на HTML/CSS или QML. И всё это (визуал) создается буквально за день
Ну если за день, то готов посмотреть исходники этих проектов, выглядит интересно)
Мое мнение – в небольших командах лучше стараться придерживаться одного стека, сейчас компонентная база, используемая в этом приложении на 25 мб, используется на лендинге, в личном кабинете, в инспекторе запросов для http, в инспекторе сессий для redis/postgres.
Много что можно сделать за день, если у тебя есть в этом экспертиза. А если ее нет, нужно ли тратить время на изучение того, что может быть бесполезно для конечного пользователя? Мы уже много всего изучили пока собирали это и ничем не ограничены, как и в смене фреймворка в дальнейшем, если на то будут причины и если будут какие-то отличные примеры реализации для изучения, по типу твоих.
Наверное, fyne нужно задуматься о размещении более вдохновляющих примеров использования в своей галерее)
Главная мысль была всё же именно в том, что выглядеть красиво могут приложения и без веба. Но я отвечу и на ваши вопросы.
готов посмотреть исходники этих проектов
А собственно в этом и есть скорость создания UI. Тут нет исходников, точнее есть разметка, которая получена в результате дизайна, но генерируемая автоматически. Т.е. в примере приложения Strato (это музыкальный плеер, который организует и воспроизводит музыку с вашего Google Drive, при чем не требует ввода пароля, а использует внешний пользовательский браузер для OAuth2), я не написал ни строчки кода связанного с GUI.
Кода нет

Ссылка на коммит этого приложения, UI которого выглядит как на скрине в прошлом комментарии.
нужно ли тратить время на изучение того, что может быть бесполезно для конечного пользователя?
Тратить время нужно на любой инструмент, в особенности на новый. Т.к. я владею языком, где этот фреймворк идет по умолчанию, мне не составило большого труда его изучить. Я не буду вам втюхивать Delphi, т.к. мой комментарий всё же был именно о конечном результате, а вы вряд ли будете рассматривать его использование. Но если в кратце, то здесь используется кроссплатформенный фреймворк FMX, который имеет дизайнер окна и дизайнер стиля (что-то вроде CSS). И алгоритм такой:
1. Создаем окно
2. Добавляем элемент (например кнопку)
3. Открываем дизайнер стилей и создаем представление этой кнопки (с помощью примитивов (фигуры, svg, path, картинки), шейдеры, анимации, триггеры или другие контролы)
4. Назначаем кнопке созданный стиль
Готово. Всё это визуально, в реалтайме. В стиле могут быть другие контролы со своим стилем. Функционал контрола остается за самим контролом. Набор стилей может быть общим между окнами, между проектами и вообще может быть загружен/заменен/изменен динамически.
Ещё есть пример плавной смены стиля на другой.
Ну это хорошо и прекрасно, только кодовая база на Go, поэтому мы рассматривали варианты фреймворков на этом языке, а не на любом другом. Использование другого языка потребовало бы переписывать библиотеки и сетевой стек. Я думал именно о Go и возможности фреймворков использующих его, про Delphi то мы в курсе.
Fyne все же не такого уровня инструмент как Delphi – без такой богатой и долгой истории, а еще чистый open source на энтузиазме.
Кода по верстке у тебя нет, но его надо писать в решениях для Go, потому что это все же не из коробки решение. В Delphi можно программно расставлять и создавать элементы (как у нас могло бы быть – https://github.com/romanitalian/GHOSTman/blob/main/main.go#L53), а можно в редакторе (как у тебя) и кажется, что кодом верстать адаптивно и без нормального тулинга не очень удобно (но опыта в этом не имею).
В примерах нет никакого WebView или даже намека на HTML/CSS или QML. И всё это (визуал) создается буквально за день
Мне кажется или то, что вы привели в пример это прямой аналог той же самой верстки как в HTML/CSS и QML, только нечно своё в Delphi FMX?
Ну и в видео с калькулятором ну ооочень IDE похоже на QT Creator, только код в стиле Pascal а не C ))
Нет, стили в FMX это не аналог CSS, просто приведен как быстрый способ понять, что такое стили и что стили - это не "шкурки". В FMX просто применяется принцип разделения данных от представления. Работают иначе, возможности другие. Например, стили НЕ влияют на поведение контрола и НЕ виляют на его положение, они влияют лишь на его вид. В CSS/HTML всё в перемешку. Где-то там задано расположение, где-то там.
Ну и эта IDE и её возможности появились задолго до Qt Creator, в том числе дизайнер фреймворка FMX. Так что это не RAD Studio похожа на Qt Creator, а Qt Creator ооочень похож на RAD Studio
И как я уже сказал, стили в FMX создаются тоже через дизайнер, а не кодом. Статью даже недавно писал. https://habr.com/ru/articles/833804/
Да не, там со времен первых версий Delphi был визуальный редактор, все, что ты накидал складывается в отдельный файл описания текущей формы, рядом могут жить файлы с кодом, которые эту форму обрабатывают, а еще там великое множество разных компонент, так что настроить можно что угодно. Но опять же, это если рассматривать языки другие, не Go
Если говорить про Рад Студио, то решения, что показал HemulGL можно и правда собрать быстро, потому что у Ембракадеро есть огромное количество готовых компонентов на все случаи жизни. Правда есть несколько минусов, удовольствие это не бесплатное (насколько помню, но может что-то поменялось) и готовые компоненты не всегда могут закрыть потребность в имеющимся дизайне, поэтому приходиться их переписывать.
Я бы посоветовал смотреть в сторону WPF, там xaml, тоже есть огромное количество компонентов, C# довольно простой в освоении ЯП и мне кажется любой фронтендер довольно быстро освоится в WPF, а главное всё бесплатно.
Всё что я показал на скринах, сделано штатными средствами. Без каких-либо сторонних компонентов. И без переписывания чего-либо.
Среда разработки платная как и VS, и такая же бесплатная как и VS. Т.е. для коммерческой и не коммерческой разработки есть версии.
О, Рад Студио теперь имеет бесплатную версию? Это очень любопытно. Как писал, могу ошибаться касаемо цен. Такой вопрос, а Рад Студио бесплатна только для Дельфи или есть бесплатная версия для С++? Просто я писал приложения только на С++ в ней ещё давно поскольку на Дельфи никогда не писал)
С помощью чего сделан интерфейс?
Fyne возможно и не блещет в прмерах, но огромнейший плюс этого фреймоворка в том что не нужно устраивать пляски со сборками на разных хостах, как вы описали в статье.
Ваш продукт не плохой, возможно воспользуюсь в будущем.
Сильное заявление. Сейчас на том же WPF, можно собирать вполне себе красивые решения для бизнеса. Даже на древних, но быстрых вин формах можно, при помощи готовых компонентов, но это муторнее.
Есть QT, который позволяет тоже делать красоту для энтерпрайза. Если честно не понимаю зачем писать десктоп приложения на фронтенд фреймворках, которые всё-равно не будут настолько же быстро и эффективно работать, как приложения на C# и C++. Недавно была новость, что меню пуск в win11, написана на React Native, из-за чего в моменте открытия нагружает пк.
Сейчас есть определенная тенденция, что для разработки на qml не нужно знание плюсов. В идеале достаточно чтобы был биндинг qt под нужный вам язык - и тогда на чистом qml можно хоть в webassembly собирать. Посмотрите их демку, достаточно эффектно выглядит: https://try.qt.io (оно напишет что желательно десктоп/планшет, но у меня на мобилке тоже отлично работает, если запросить десктоп версию).
командная строка не самый дружелюбный интерфейс.
Ну, дожили
Классика
Однажды вечером Мастер Фу и Ньюби посетили собрание программистов, которые встретились, чтобы поучиться друг у друга. Один из программистов спросил у Ньюби, к какой школе принадлежит он и его учитель. Когда Ньюби сказал ему, что он и его учитель - последователи Великого Пути UNIX, программист презрительно усмехнулся.
"Средства командной строки UNIX грубые и отсталые, - насмешливо сказал он. - Современные, правильно спроектированные операционные системы делаю всё через графический интерфейс пользователя".
Мастер Фу не проронил ни слова, но указал на Луну. Находившийся поблизости пёс залаял на руку учителя.
"Я не понимаю вас", - сказал программист.
Мастер Фу молчал и показал на образ Будды. Потом он указал на окно.
"Что вы хотите мне этим сказать?" - спросил программист.
Мастер Фу указал на голову программиста. Потом он указал на камень.
"Почему вы не можете сказать яснее?"- потребовал программист.
Мастер Фу задумчиво нахмурился, дважды щёлкнул программиста по носу и бросил его в находившийся рядом мусорный контейнер.
Пока программист пытался выбраться из горы мусора, пёс ходил рядом и лаял на него.
В этот момент программист достиг просветления.
Десктопное кросс-платформенное приложение на Wails (Golang + Vue.js). Как мы делали Tuna Desktop