
Сегодня выходит первая бета-версия Wails v2 для Mac! Путь к этому этапу занял немало времени, и я надеюсь, что сегодняшний выпуск окажется для вас достаточно полезным. На этом пути было немало неожиданных поворотов, и я надеюсь, что с вашей помощью мы устраним все шероховатости и доведём версию для Mac до блеска к финальному выпуску v2.
То есть эта версия не готова к эксплуатации? Для вашего сценария она вполне может быть готова, однако остаётся ряд известных проблем, поэтому следите за этой доской проекта. Если вы хотите внести свой вклад, мы будем очень рады!
Так что же нового в Wails v2 для Mac по сравнению с v1? Подсказка: почти то же самое, что и в бета-версии для Windows :wink:
Новые возможности

Многие просили добавить поддержку нативных меню. Наконец Wails предоставляет такую возможность. Теперь доступны меню приложения с поддержкой большинства возможностей нативных меню, включая стандартные пункты, флажки, группы переключателей, подменю и разделители.
В v1 поступило огромное количество запросов на более широкие возможности управления самим окном. Рад сообщить, что специально для этого появились новые API среды выполнения. Они обладают широкими возможностями и поддерживают конфигурации с несколькими мониторами. API диалоговых окон также улучшен: теперь можно использовать современные настраиваемые нативные диалоговые окна для любых задач.
Параметры для Mac
Помимо обычных параметров приложения, Wails v2 для Mac предлагает несколько дополнительных возможностей для Mac:
- Сделайте окно необычным и полупрозрачным, как во всех красивых приложениях на Swift!
- Широкие возможности настройки строки заголовка
- Поддержка параметров NSAppearance для приложения
- Простая настройка автоматического создания меню «О приложении»
Объединять ресурсы в пакет не требуется
Одной из самых серьёзных проблем v1 была необходимость сводить всё приложение к единственным файлам JS и CSS. Рад сообщить, что в v2 объединять ресурсы в пакет каким-либо образом вообще не требуется. Хотите загрузить локальное изображение? Используйте тег <img> с локальным путём в атрибуте 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. Поэтому теперь проекты можно создавать на основе шаблонов, поддерживаемых сообществом! Надеюсь, это вдохновит разработчиков на создание динамично развивающейся экосистемы шаблонов проектов. Мне очень интересно увидеть, что сможет создать наше сообщество разработчиков!
Нативная поддержка M1
Благодаря неоценимой поддержке Mat Ryer проект Wails теперь поддерживает нативные сборки для M1:

Кроме того, darwin/amd64 можно указать в качестве целевой платформы:

О, чуть не забыл… ещё можно выбрать darwin/universal в качестве целевой платформы сборки… :wink:

Кросс-компиляция для Windows
Поскольку Wails v2 для Windows полностью написан на Go, сборки для Windows можно создавать без docker.

bu
Средство визуализации WKWebView
V1 использовала компонент WebView, который теперь объявлен устаревшим. V2 использует новейший компонент WKWebKit, поэтому вы получите самые современные возможности от Apple.
Заключение
Как я уже говорил в примечаниях к выпуску для Windows, Wails v2 закладывает новую основу проекта. Цель этого выпуска — получить отзывы о новом подходе и устранить все ошибки до выхода полноценного релиза. Буду очень признателен за ваши отзывы! Пожалуйста, оставляйте их на форуме обсуждения бета-версии v2.
И наконец, я хотел бы выразить особую благодарность всем спонсорам проекта, включая JetBrains: их поддержка во многом помогает проекту, оставаясь незаметной для широкой публики.
С нетерпением жду возможности увидеть, что создадут пользователи с помощью Wails на этом новом захватывающем этапе развития проекта!
Леа.
P. S. Пользователи Linux, вы следующие!
P. P. S. Если Wails приносит пользу вам или вашей компании, рассмотрите возможность поддержать проект в качестве спонсора. Спасибо!