[Практический подход] Используйте Wails для создания легких настольных приложений: имитируйте интерфейс входа в WeChat. Демонстрация.
[Практический подход] Используйте Wails для создания легких настольных приложений: имитируйте интерфейс входа в WeChat. Демонстрация.
Перейти к практике применения настольных приложений
Перейти к практике применения настольных приложений

Обзор: В этой статье рассматривается Wails Использование фреймворка, от настройки среды до разработки, а затем до окончательного построения и упаковки, исходного кода этого проекта. GitHub адрес:https://github.com/mazeyqian/go-run-wechat-demo

Предисловие

Wails Это кроссплатформенная среда разработки настольных приложений, которая позволяет разработчикам использовать Go преимущества производительности и в сочетании с любым стеком интерфейсных технологий, например ReactVue или Svelte,Зайдите в создатель настольного приложения.

Для настольных приложений,Electron Долгое время это был основной выбор, и он использует Web Фронтальная технология позволяет создавать кроссплатформенные настольные приложения. Однако Электрон Он имеет большой объем памяти и размер приложения, что делает Wails Становится легкой альтернативой.

Важные преимущества Wails:

  1. Меньший размер приложения:Wails Скомпилированные приложения обычно меньше Electron меньше,Это означает более высокую скорость загрузки и время запуска.,и более низкое потребление ресурсов во время выполнения.
  2. Нативная производительность:Go обеспечивает близость C языковая деятельность, что делает Wails Приложения могут работать более эффективно, особенно при выполнении параллельных задач и операций системного уровня.
  3. Упрощенный процесс сборки:Wails Упрощен процесс сборки,Всего одна команда для применения исполняемого файла Пакета.,Никакой дополнительной настройки и зависимостей не требуется.
  4. Отличный опыт разработки:иразвивать Web В браузере можно разрабатывать ту же обратную связь об изменениях в режиме реального времени, что и в интерфейсных приложениях и настольных приложениях.
  5. Нативные элементы пользовательского интерфейса:Wails поддерживатьиспользоватьСистемные элементы пользовательского интерфейса,Обеспечьте единообразный пользовательский опыт.
  6. Гибкие возможности внешнего интерфейса:Вы можете выбрать те, с которыми знакомы разработчики.любой интерфейсный фреймворкразрабатывать десктопные приложения。
Components of a Wails App
Components of a Wails App

Создать проект Wails

Начните создавать Wails Перед проектом необходимо убедиться, что система установлена. Go и Node.js,потому чтодля Wails Положитесь на эти два компонента при создании настольных приложений. Ниже приводится установка Вейлс Рамка и Создать новый Этапы проекта.

Установить Вейлс

Язык кода:bash
копировать
go install github.com/wailsapp/wails/v2/cmd/wails@latest

Проверьте результаты установки:

Язык кода:bash
копировать
wails version

Вы также можете пройти wails doctor чтобы проверить, правильно ли установлены все необходимые зависимости.

Язык кода:plain
копировать
# Wails
# ...
# System
# ...
# Dependencies
# ...
# Diagnosis
# ...
SUCCESS  Your system is ready for Wails development!

Моя локальная версия разработки:

Version

Wails

v2.6.0

Go

v1.19.1

Node.js

v16.19.0

npm

v8.19.3

Создать новый проект

использовать Wails CLI Создайте файл с именем go-run-wechat-demo новые проекты:

Язык кода:bash
копировать
wails init -n go-run-wechat-demo -t react-ts

Структура проекта

Структура проекта
Структура проекта
  • main.go и app.go:Go Приложение обрабатывает бизнес-логику, управление данными и связь с внешним интерфейсом.
  • frontend:Содержит весь код для внешнего интерфейса.,используйте React, Vue или любой другой фреймворк по вашему выбору.,Отвечает за пользовательский интерфейс и взаимодействие с пользователем.
  • go.mod и go.sum:Go файлы зависимостей модуля.
  • wails.json:Wails Конфигурационный файл проекта, определяющий способ сборки и Пакетного. приложение。
  • build:использовать В存放构建后的应использовать程序и Связанные ресурсы。

Разработка проекта: имитация интерфейса входа в WeChat

Войдите в режим разработки

Войдите в корневой каталог проекта, введите и выполните wails dev При первом выполнении команды будут установлены внешние и внутренние зависимости. После успешного выполнения вы увидите страницу приложения по умолчанию.

Страница приложения по умолчанию
Страница приложения по умолчанию

И вы можете отладить страницу в браузере:

Язык кода:plain
копировать
To develop in the browser and call your bound Go methods from Javascript, navigate to: http://localhost:34115

Любые модификации кода также могут быть обновлены в горячем режиме:

Язык кода:plain
копировать
1:42:21 PM [vite] hmr update /src/App.tsx

Изменить код

Стили и макеты окон

Чтобы имитировать интерфейс входа в WeChat, в main.go файл, через Wails Параметры конфигурации фрейма изменяют размер окна приложения. Width&Height、цвет фона BackgroundColour и титул Title

main.go

Язык кода:go
копировать
func main() {
	// Create an instance of the app structure
	app := NewApp()

	// Create application with options
	err := wails.Run(&options.App{
		Title:  "WeChat",
		Width:  280,
		Height: 400,
		AssetServer: &assetserver.Options{
			Assets: assets,
		},
		BackgroundColour: &options.RGBA{R: 255, G: 255, B: 255, A: 1},
		OnStartup:        app.startup,
		Bind: []interface{}{
			app,
		},
	})

	if err != nil {
		println("Error:", err.Error())
	}
}
Бэкэнд-реализация

На этот раз Demo В основном он реализует две функции: авторизовать переключение учетных записей. Эти два метода можно использовать через внешний интерфейс; JavaScript вызов. Возвращенную строку можно использовать в UI Отображение соответствующего сообщения о состоянии пользователю. в файле app.go Добавьте эти два метода.

Язык кода:go
копировать
// Log In Success
func (a *App) LogInSuccess(name string) string {
	return fmt.Sprintf("Welcome %s, You are logged in!", name)
}

// Switch Account Success
func (a *App) SwitchAccountSuccess() string {
	return "You have switched accounts!"
}

существовать Wails В режиме разработки он автоматически Go Структура преобразуется в TypeScript модуль.

Язык кода:typescript
копировать
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT

export function LogInSuccess(arg1:string):Promise<string>;

export function SwitchAccountSuccess():Promise<string>;
Фронтальная реализация

Исправлять frontend/src/App.tsx Файл, добавьте соответствующую логику:

Язык кода:typescript
копировать
import {useState} from "react";
import logo from "./assets/images/logo-universal-w256.jpg";
import "./App.css";
import {LogInSuccess, SwitchAccountSuccess} from "../wailsjs/go/main/App";

function App() {
    const [resultText, setResultText] = useState("");
    const name = "удалять";
    const updateResultText = (result: string) => setResultText(result);

    function logIn() {
        LogInSuccess(name).then(updateResultText);
    }

    function switchAccount() {
        SwitchAccountSuccess().then(updateResultText);
    }

    return (
        <div id="App">
            <img src={logo} id="logo" alt="logo"/>
            <div id="result" className="result name">{resultText || name}</div>
            <button className="btn log-in" onClick={logIn}>Log In</button>
            <button className="btn switch-account" onClick={switchAccount}>Switch Account</button>
        </div>
    )
}

export default App

И исправлять CSS файл стиля frontend/src/App.css Чтобы адаптировать интерфейс:

Язык кода:css
копировать
.btn {
    display: block;
    margin: 0 auto;
    padding: 0;
    text-align: center;
    border: none;
    font-size: 14px;
}

.log-in {
    width: 200px;
    height: 36px;
    line-height: 36px;
    color: #ffffff;
    background-color: hsla(148, 61%, 46%, 1);
    border-radius: 4px;
    margin-top: 70px;
}

.switch-account {
    background-color: #ffffff;
    color: rgb(89, 107, 144);
    margin-top: 22px;
}

Интерфейс такой, как показано ниже:

интерфейс
интерфейс

Попробуйте выполнить операцию «Войти»:

Log In
Log In

Попробуйте использовать сменную учетную запись:

Switch Account
Switch Account

Нижний значок:

нижний значок
нижний значок

Пакетное приложение

корневой каталог существующего проекта, запустите wails build Вы можете пакетировать приложение в текущей среде. Но в режиме разработки уже есть некоторые файлы кэша, которые можно использовать с -clean очистить build/bin Оглавление:

Язык кода:bash
копировать
wails build -clean

Упаковка приложения macOS:

Язык кода:bash
копировать
wails build -platform=darwin/amd64

Чтобы упаковать программу Windows:

Язык кода:bash
копировать
wails build -platform=windows/amd64
Пакет
Пакет

использовать create-dmg для macOS создавать .dmg документ:

Язык кода:bash
копировать
create-dmg WeChat.dmg WeChat.app
macOS
macOS

Вышеуказанные файлы можно просмотреть на странице Релизы:

https://github.com/mazeyqian/go-run-wechat-demo/releases/tag/v1.0.0

Releases
Releases

Подвести итог

Wails Фреймворк предоставляет разработчикам краткий и мощный способ воспользоваться преимуществами Go Преимущества производительности и Web Гибкость внешнего интерфейса обеспечивает более эффективный и легкий способ создания настольных приложений для платформенного типа.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose