
Я рад наконец объявить, что Wails v2 теперь доступен в бета-версии для Linux! Несколько иронично, что самые первые эксперименты с v2 проводились в Linux, но версия для этой платформы вышла последней. При этом нынешний Wails v2 сильно отличается от тех первых экспериментов. Итак, без лишних слов перейдём к новым возможностям:
Новые возможности

Многие просили добавить поддержку нативных меню. Наконец Wails предоставляет и эту возможность. Теперь доступны меню приложения с поддержкой большинства функций нативных меню, включая стандартные пункты, флажки, группы переключателей, подменю и разделители.
В v1 поступило огромное количество запросов на расширение возможностей управления самим окном. Я рад сообщить, что для этого появились новые API среды выполнения. Они предлагают множество функций и поддерживают конфигурации с несколькими мониторами. Также был улучшен API диалоговых окон: теперь можно создавать современные нативные диалоговые окна с широкими возможностями настройки для любых задач.
Ресурсы больше не требуется объединять
Одной из главных проблем v1 была необходимость сводить всё приложение к единственным файлам JS и CSS. Я рад сообщить, что в v2 объединять ресурсы каким бы то ни было образом не требуется. Хотите загрузить локальное изображение? Используйте тег <../../../assets/blog-images> с локальным путём в атрибуте src. Хотите использовать интересный шрифт? Скопируйте его и добавьте путь к нему в CSS.
Ого, звучит как веб-сервер…
Да, он работает как веб-сервер, хотя веб-сервером не является.
Так как же добавить ресурсы?
Просто передайте в конфигурацию приложения единственный объект embed.FS, содержащий все ресурсы. Им даже не обязательно находиться в корневом каталоге — Wails сам разберётся.
Новый процесс разработки
Поскольку ресурсы теперь не нужно объединять, процесс разработки стал совершенно иным. Новая команда wails dev соберёт и запустит приложение, но вместо ресурсов из embed.FS загрузит их непосредственно с диска.
Она также предоставляет следующие дополнительные возможности:
- Горячая перезагрузка — при любом изменении ресурсов фронтенда он автоматически перезагружается
- Автоматическая пересборка — при любом изменении кода Go приложение пересобирается и перезапускается
Кроме того, на порте 34115 запускается веб-сервер. Он предоставляет приложение любому подключившемуся к нему браузеру. Все подключённые веб-браузеры реагируют на системные события, например выполняют горячую перезагрузку при изменении ресурсов.
При разработке на Go мы привыкли работать со структурами в приложениях. Часто бывает полезно передавать структуры во фронтенд и использовать их для хранения состояния приложения. В v1 многое приходилось делать вручную, что создавало дополнительную нагрузку на разработчика. Я рад сообщить, что в v2 при запуске любого приложения в режиме разработки автоматически создаются модели TypeScript для всех структур, используемых в качестве входных или выходных параметров привязанных методов. Это обеспечивает беспрепятственный обмен моделями данных между двумя средами.
Кроме того, динамически создаётся ещё один модуль JS с обёртками для всех привязанных методов. Он содержит JSDoc для ваших методов, благодаря чему IDE предлагает автодополнение кода и подсказки. Особенно здорово, когда после нажатия Tab модели данных автоматически импортируются в созданный модуль с обёртками для кода Go!
Удалённые шаблоны

Одной из ключевых целей проекта Wails всегда была возможность быстро создать и запустить приложение. На момент запуска мы старались охватить многие современные фреймворки: react, vue и angular. Мир фронтенд-разработки полон разных подходов, стремительно развивается, и уследить за ним непросто! В результате наши базовые шаблоны довольно быстро устаревали, а их сопровождение доставляло немало хлопот. Кроме того, у нас не было современных шаблонов для новейших технологических стеков.
В v2 мне хотелось расширить возможности сообщества, позволив вам самостоятельно создавать и размещать шаблоны, не полагаясь на проект Wails. Поэтому теперь проекты можно создавать с помощью шаблонов, поддерживаемых сообществом! Надеюсь, это вдохновит разработчиков на создание развитой экосистемы шаблонов проектов. Мне очень интересно увидеть, что сможет создать наше сообщество разработчиков!
Кросс-компиляция для Windows
Поскольку версия Wails v2 для Windows полностью написана на Go, можно создавать сборки для Windows без docker.

Заключение
Как я уже говорил в примечаниях к выпуску для Windows, Wails v2 закладывает новую основу проекта. Цель этого выпуска — получить отзывы о новом подходе и устранить все ошибки до выхода полноценной версии. Будем очень рады вашим отзывам! Оставляйте их на форуме обсуждения бета-версии v2.
Поддерживать Linux сложно. Мы ожидаем, что в бета-версии обнаружится ряд особенностей и недочётов. Помогите нам помочь вам — отправляйте подробные отчёты об ошибках!
Наконец, я хотел бы особо поблагодарить всех спонсоров проекта, чья поддержка незаметно помогает проекту развиваться во многих направлениях.
С нетерпением жду возможности увидеть, что люди создадут с помощью Wails на этом новом захватывающем этапе развития проекта!
Лиа.
P. S. Выпуск v2 уже не за горами!
P. P. S. Если Wails приносит пользу вам или вашей компании, рассмотрите возможность стать спонсором проекта. Спасибо!