Доброго времени суток, в этот раз научимся делать WebView приложение на компьютер, оно будет специально для форума endway.su
Говорю сразу, WebView, да и как все GUI приложения на Go еще слишком сырые и многое недоступно для изменения без вмешательств в WinAPI, поэтому серьезного проекта вряд ли выйдет написать на Go. Ну это. я думаю, временно и за языком будущее.
1 Темплейт приложения
Для начала давайте создадим темплейт нашего будущего приложения, дабы было удобно с ним работать.
2 Пишем код
В папке webapp создаем файл setup.go, в ней будет загрузчик нашего webview приложения
Далее открываем наш новоиспеченный файл setup.go и пишем в него данный код:
В импортах мы видим библиотеку go-webview2, ее необходимо скачать, поэтому открываем терминал и вводим туда команду:
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 и впишем следующий код:
Тут все просто, мы из файла setup.go запускаем функцию StartWebApp(). У Go вполне интересная структура темплейтов, он папки считает за модули, и поэтому мы пишем не setup.StartWebApp() а webapp.StartWebApp().
Открываем терминал в папке app и вводим команду:
4. Полная структура и исходники
Полная структура кода выглядит примерно так:
Говорю сразу, 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, ее необходимо скачать, поэтому открываем терминал и вводим туда команду:
Далее у нас функция StartWebApp(){}. в ней как раз наш код подгрузки webview.go get "github.com/jchv/go-webview2"
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 и вводим команду:
Это команда компиляции проекта в .exe и в папке app у нас появился файл main.exe, запускаем его и получаем это:go build -ldflags -H=windowsgui
4. Полная структура и исходники
Полная структура кода выглядит примерно так:
└ webview
└ app
└webapp
└setup.go
└main.go
└go.mod
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.