Гайд - WebView приложение на Golang | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой уникальный скрипт?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Гайд WebView приложение на Golang

UserGoD

Бот
Автор темы
15 Сен 2023
79
155
0
Доброго времени суток, в этот раз научимся делать WebView приложение на компьютер, оно будет специально для форума endway.su

Говорю сразу, WebView, да и как все GUI приложения на Go еще слишком сырые и многое недоступно для изменения без вмешательств в WinAPI, поэтому серьезного проекта вряд ли выйдет написать на Go. Ну это. я думаю, временно и за языком будущее.


1 Темплейт приложения
Для начала давайте создадим темплейт нашего будущего приложения, дабы было удобно с ним работать.

Структура:
└ webview
└ app
└webapp
Для слабошарящих, структура вложенных папок, папка проекта webview, в которую вложена папка приложения app, ну а в ней уже webapp


2 Пишем код

В папке webapp создаем файл setup.go, в ней будет загрузчик нашего webview приложения

Далее открываем наш новоиспеченный файл setup.go и пишем в него данный код:
webapp:
package webapp

import (
    "github.com/jchv/go-webview2"
    "log"
)

func StartWebApp() {
    w := webview2.NewWithOptions(webview2.WebViewOptions{
        Debug:     false,
        AutoFocus: true,
        WindowOptions: webview2.WindowOptions{
            Title:  "End Way | endway.su/@ew",
            Width:  600,
            Height: 800,
            IconId: 2,
            Center: true,
        },
    })
    if w == nil {
        log.Fatalln("Failed to load webview.")
    }
    defer w.Destroy()
    w.SetSize(600, 770, webview2.HintFixed)

    w.Navigate("https://endway.su")
    w.Run()
}

В импортах мы видим библиотеку go-webview2, ее необходимо скачать, поэтому открываем терминал и вводим туда команду:
go get "github.com/jchv/go-webview2"
Далее у нас функция StartWebApp(){}. в ней как раз наш код подгрузки webview.
w := webview2.NewWithOptions(webview2.WebViewOptions{...} - тут наш "конфиг" приложения, по дефолту Debug включен, AutoFocus включен.

WindowOptions - конфиг самого GUI окна (заголовок, высота, шириина и тд).

Далее у нас if проверка, если возвращает переменная w nil (т.е. ничего) мы выдает ошибку. Подгружаем размеры более точные, w.SetSize и там есть некая опция webview2.HintFixed - это фиксирование окна по размеру, т.е. его нельзя будет увеличить или уменьшить, если же хотите динамичное окно, то вам стоит указать webview2.HintNone. w.Navigate(...) принимает нашу ссылку сайта для webview, а w.Run() запускает приложение.


3. Запуск приложения
Для запуска проекта нам еще предстоит написать чуть-чуть кода, для этого мы создадим файл main.go в папке app и впишем следующий код:
main.go:
package main

import "webview/app/webapp"

func main() {
    webapp.StartWebApp()
}

Тут все просто, мы из файла setup.go запускаем функцию StartWebApp(). У Go вполне интересная структура темплейтов, он папки считает за модули, и поэтому мы пишем не setup.StartWebApp() а webapp.StartWebApp().

Открываем терминал в папке app и вводим команду:
go build -ldflags -H=windowsgui
Это команда компиляции проекта в .exe и в папке app у нас появился файл main.exe, запускаем его и получаем это:
1700383148915

4. Полная структура и исходники

Полная структура кода выглядит примерно так:
└ webview
└ app
└webapp
└setup.go
└main.go
└go.mod

 
Like
  • 1
Реакции: 1 user

Json Qiest

Что такое Бытие?
the VoX
15 Ноя 2022
764
510
93
NiggaByte+REP, webview - технология, благодаря которой можно легко интегрировать как приложение сайт, такой технологией пользуются многие крупные сервисы, к примеру kwork
 
Активность:
Пока что здесь никого нет