精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 桌面開(kāi)發(fā) Wails 入門(mén)與開(kāi)發(fā)環(huán)境搭建

開(kāi)發(fā) 后端
Wails是一個(gè)使用 Go 編寫(xiě)后端邏輯、前端使用現(xiàn)代前端框架(如Vue、React、Svelte)開(kāi)發(fā)界面的跨平臺(tái)桌面應(yīng)用開(kāi)發(fā)框架。

1. 什么是 Wails?

Wails是一個(gè)使用 Go 編寫(xiě)后端邏輯、前端使用現(xiàn)代前端框架(如Vue、React、Svelte)開(kāi)發(fā)界面的跨平臺(tái)桌面應(yīng)用開(kāi)發(fā)框架。

  • 后端語(yǔ)言:Go
  • 前端支持:Vue3、React、Svelte
  • 跨平臺(tái):Windows / macOS / Linux
  • 打包簡(jiǎn)單,構(gòu)建原生應(yīng)用 .exe / .app / .AppImage
  • 類(lèi)似于Tauri和 Electron,但Wails在調(diào)用Go邏輯方面更加直接簡(jiǎn)單高效。

2. 為什么要選擇Wails

為什么要選擇Wails?因?yàn)槲沂莻€(gè)愛(ài)學(xué)習(xí)的孩子,而且wails官網(wǎng)的教程簡(jiǎn)直無(wú)眼看,所以我要將學(xué)習(xí)的過(guò)程記錄下來(lái),供有緣人參考吧。

3. 開(kāi)發(fā)環(huán)境準(zhǔn)備

(1) 安裝依賴(lài)項(xiàng)

請(qǐng)確保自己的電腦上已經(jīng)安裝了go語(yǔ)言,如果沒(méi)有就自個(gè)安裝,這里就不演示了。

(2) Node.js + 包管理器(npm/yarn/pnpm)

  • 安裝 Node.js(我本機(jī)使用的版本是Node v18)
  • Node附帶npm,也可以選用yarn或 pnpm(我使用是yarn)

(3) 安裝 Wails CLI

安裝wails cli工具比較簡(jiǎn)單,具體命令如下所示:

go install github.com/wailsapp/wails/v2/cmd/wails@latest

(4) 安裝驗(yàn)證,輸出如下信息說(shuō)明安裝成功

?  ~ wails version
v2.10.1
 ?   If Wails is useful to you or your company, please consider sponsoring the project:
https://github.com/sponsors/leaanthony

??注意:

  • windows環(huán)境下Wails要求安裝WebView2運(yùn)行時(shí)。 一些 Windows 安裝已經(jīng)安裝了這個(gè)。 我們可以使用wails doctor命令檢查依賴(lài)是否缺失,如果缺失根據(jù)提示將缺失的依賴(lài)補(bǔ)全安裝即可。
  • Linux環(huán)境下需要安裝gcc構(gòu)建工具以及l(fā)ibgtk3和libwebkit開(kāi)發(fā)庫(kù)。

4. 創(chuàng)建第一個(gè) Wails 項(xiàng)目(以React為例)

(1) 初始化項(xiàng)目,具體命令如下所示

? wails init -n burpsuite-go -t preact-ts
Wails CLI v2.10.1




# Initialising Project 'burpsuite-go'
go: downloading github.com/matryer/is v1.4.1
go: downloading github.com/leaanthony/u v1.1.1
go: downloading github.com/leaanthony/go-ansi-parser v1.6.1
go: downloading github.com/wailsapp/mimetype v1.4.1
go: downloading github.com/wailsapp/go-webview2 v1.0.19
go: downloading github.com/labstack/echo/v4 v4.13.3
go: downloading github.com/tkrajina/go-reflector v0.5.8
go: downloading github.com/bep/debounce v1.2.1
go: downloading github.com/valyala/fasttemplate v1.2.2
go: downloading github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e
go: downloading github.com/valyala/bytebufferpool v1.0.0
Project Name      | burpsuite-go
Project Directory | /Users/xxxx/Go/src/github.com/xxxx/burpsuite-go
Template          | Preact + Vite (Typescript)
Template Source   | https://wails.io




Initialised project 'burpsuite-go' in 2m30.92s.


 ?   If Wails is useful to you or your company, please consider sponsoring the project:
https://github.com/sponsors/leaanthony

(2) 運(yùn)行開(kāi)發(fā)模式,具體命令如下所示:

wails dev

如出現(xiàn)上述圖片,說(shuō)明你成功的運(yùn)行了一個(gè)wails項(xiàng)目。

5. 代碼結(jié)構(gòu)解釋

.
├── build/ # 項(xiàng)目打包構(gòu)建目錄
│   ├── appicon.png
│   ├── darwin/
│   └── windows/
├── frontend/ # 一個(gè)標(biāo)準(zhǔn)的前端項(xiàng)目目錄
├── go.mod
├── go.sum
├── main.go # 程序入口
└── wails.json # wails項(xiàng)目配置

main.go文件內(nèi)容:

package main


import (
"embed"


"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
)


//go:embed all:frontend/dist
var assets embed.FS


func main() {
// Create an instance of the app structure
	app := NewApp()


// Create application with options
	err := wails.Run(&options.App{
Title:  "burpsuite-go",
Width:  1024,
Height: 768,
AssetServer: &assetserver.Options{
Assets: assets,
		},
BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1},
OnStartup:        app.startup,
Bind: []interface{}{
			app,
		},
	})


if err != nil {
println("Error:", err.Error())
	}
}

(1) 嵌入指令

  • 使用 //go:embed`指令將前端構(gòu)建產(chǎn)物(`frontend/dist`)打包進(jìn) Go 的二進(jìn)制文件中
  • embed.FS類(lèi)型表示一個(gè)虛擬的只讀文件系統(tǒng)
  • all:表示遞歸包含整個(gè)目錄

(2) app := NewApp()

  • 創(chuàng)建一個(gè)后端邏輯對(duì)象,NewApp() 是自定義的函數(shù),通常返回一個(gè) *App 類(lèi)型結(jié)構(gòu)體實(shí)例。
  • 這個(gè)結(jié)構(gòu)體中包含你要暴露給前端的Go方法(如攔截器控制、請(qǐng)求記錄等)

(3) wails.Run方法

  • 設(shè)置窗口標(biāo)題為burpsuite-go
  • 初始窗口大小為 1024 x 768 像素
  • AssetServer: &assetserver.Options{ Assets: assets }告訴 Wails 使用assets作為靜態(tài)資源服務(wù)源assets包含了frontend/dist中構(gòu)建好的 HTML + JS + CSS 文件
  • BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}設(shè)置窗口背景顏色(RGBA),對(duì)應(yīng)深色藍(lán)灰風(fēng)格
  • OnStartup: app.startup注冊(cè)一個(gè)啟動(dòng)鉤子函數(shù),當(dāng)應(yīng)用啟動(dòng)后執(zhí)行app.startup(ctx)可用于初始化、預(yù)加載數(shù)據(jù)等操作
  • Bind: []interface{}{ app }

app.tsx內(nèi)容如下所示:

import './App.css'
import logo from "./assets/images/logo-universal.png"
import {Greet} from "../wailsjs/go/main/App";
import {useState} from "preact/hooks";
import {h} from 'preact';


export function App(props: any) {
    const [resultText, setResultText] = useState("Please enter your name below ??");
    const [name, setName] = useState('');
    const updateName = (e: any) => setName(e.target.value);
    const updateResultText = (result: string) => setResultText(result);


    function greet() {
        Greet(name).then(updateResultText);
    }


    return (
        <>
            <div id="App">
                <img src={logo} id="logo" alt="logo"/>
                <div id="result" className="result">{resultText}</div>
                <div id="input" className="input-box">
                    <input id="name" className="input" onChange={updateName} autoComplete="off" name="input"
                           type="text"/>
                    <button className="btn" onClick={greet}>Greet</button>
                </div>
            </div>
        </>
    )
}
  • import {Greet} from "../wailsjs/go/main/App";
  • <button className="btn" notallow={greet}>Greet</button>

Greet是由Wails自動(dòng)生成的TypeScript綁定,代表 Go 后端的Greet(name string) 方法。當(dāng)點(diǎn)擊按鈕時(shí):

  • 調(diào)用 自動(dòng)綁定的 Greet(name) 函數(shù)
  • 它會(huì)發(fā)起與Go后端的通信請(qǐng)求
  • 后端返回字符串,前端通過(guò) then(updateResultText) 更新結(jié)果

6. 小結(jié)

在本章中你學(xué)會(huì)了:

  • 安裝Wails所需工具(Go、Node、Wails CLI)
  • 創(chuàng)建并運(yùn)行第一個(gè)React + Go的桌面應(yīng)用
  • 簡(jiǎn)單的了解了前后端交互機(jī)制(Go 方法 → JS 調(diào)用)
責(zé)任編輯:趙寧寧 來(lái)源: 馬嘍編程筆記
相關(guān)推薦

2025-05-20 09:03:58

Go后端Preact

2011-07-04 14:58:56

Qt 桌面 qvfb

2011-06-03 16:05:20

IOS 環(huán)境搭建

2011-06-03 15:08:09

IOS 環(huán)境搭建

2011-06-03 15:36:22

IOS 環(huán)境搭建

2011-06-03 14:36:32

IOS 環(huán)境搭建

2012-01-04 00:14:10

ibmdw

2020-12-25 10:52:28

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2013-04-08 15:52:06

Go語(yǔ)言

2009-09-07 18:14:55

Scala開(kāi)發(fā)環(huán)境

2024-03-26 15:19:36

鴻蒙應(yīng)用開(kāi)發(fā)開(kāi)發(fā)工具

2013-07-23 06:11:44

Android開(kāi)發(fā)學(xué)習(xí)Android開(kāi)發(fā)環(huán)境Java

2020-10-12 11:33:00

鴻蒙

2019-12-10 09:20:30

NettyBIO開(kāi)發(fā)

2025-03-14 00:53:12

2011-08-02 17:37:01

IPhone開(kāi)發(fā) 環(huán)境搭建

2010-04-03 11:30:15

Widget開(kāi)發(fā)

2011-05-26 10:33:26

Android開(kāi)發(fā)

2017-09-11 14:35:34

編輯器開(kāi)發(fā)環(huán)境React

2017-03-02 15:33:24

Android Thi環(huán)境搭建
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日本欧美中文字幕| 日韩欧美一级特黄在线播放| 美女精品国产| aaa人片在线| 特黄特色欧美大片| 色婷婷av一区二区三区软件 | 一区二区三区视频免费看| 视频在线一区| 精品久久久在线观看| 欧美二区三区| 日韩乱码人妻无码中文字幕| 国产亚洲电影| 91麻豆精品国产91久久久久久久久 | 中文字幕21页在线看| 久久嫩草精品久久久久| 国产日产久久高清欧美一区| 国产男女猛烈无遮挡在线喷水| 高清不卡一区| 激情久久av一区av二区av三区| 欧美精品一区二区视频| 一区二区视频免费| 国产精品99一区二区| 亚洲欧美国产制服动漫| 污视频网址在线观看| 丰乳肥臀在线| 国产精品人人做人人爽人人添| 99久久综合狠狠综合久久止| 综合激情网五月| 国产韩国精品一区二区三区| 亚洲第一中文字幕| 午夜在线观看av| heyzo一区| 国产精品成人免费精品自在线观看| 91精品国产综合久久男男| 久久精品国产亚洲av无码娇色 | 日韩欧美激情四射| 免费在线观看日韩视频| fc2ppv国产精品久久| 成人性生交大片免费看中文| 国产精品露脸自拍| 日本在线免费观看| 亚洲综合激情在线| 亚洲人午夜色婷婷| 天天躁日日躁狠狠躁av麻豆男男| 欧美精品总汇| 天天综合日日夜夜精品| 欧美日韩一级在线| 免费人成在线观看网站| 国产a级毛片一区| 国产精品色视频| 黄色小视频在线免费看| 天天精品视频| 一区二区三区四区视频| 极品白嫩少妇无套内谢| 黄页免费欧美| 一本久久综合亚洲鲁鲁五月天 | 亚洲天堂男人| 久久在精品线影院精品国产| 在线观看免费黄色网址| 日韩av网址大全| 日韩免费视频一区| 911福利视频| 日韩高清在线| 在线免费观看日韩欧美| 日本一本二本在线观看| 国产va在线视频| 亚洲午夜av在线| 久青草视频在线播放| 每日更新在线观看av| av动漫一区二区| 国产亚洲自拍偷拍| 色呦呦免费观看| 粉嫩在线一区二区三区视频| 91久久爱成人| 99久久婷婷国产一区二区三区| 美腿丝袜亚洲三区| 国产精品一区久久| 亚洲精品久久久久久久蜜桃| 小嫩嫩精品导航| 欧洲中文字幕国产精品| 日韩少妇裸体做爰视频| 一区二区三区四区五区精品视频| 韩国三级日本三级少妇99| 国产一级大片在线观看| 国产精品大片| 久久免费视频网| 久久午夜免费视频| 久久高清国产| 国产欧美亚洲视频| 国产精品久久久久精| 国产一区二区成人久久免费影院| 亚洲综合精品一区二区| 亚洲爱爱综合网| gogo大胆日本视频一区| 欧美午夜视频在线| 成人p站proumb入口| 国产精品毛片无遮挡高清| 中文字幕一区二区中文字幕| 毛片在线播放a| 一区二区三区免费网站| 国内精品在线观看视频| 国产精品迅雷| 7777精品伊人久久久大香线蕉| 日韩欧美中文视频| 91精品导航| 亚洲人成电影网站| www深夜成人a√在线| 国产精品激情电影| 欧美有码在线视频| 又色又爽又黄无遮挡的免费视频| 国产精品456露脸| 久久免费看av| a视频在线观看免费| 欧美日韩亚洲系列| 一本一道久久a久久综合蜜桃| 激情小说亚洲色图| 中文字幕亚洲无线码a| 成人精品一二三区| 夜夜爽av福利精品导航| 国产女人18毛片水18精品| 亚洲免费不卡视频| 久久久精品蜜桃| 久久久久久久久久伊人| 日韩影片中文字幕| 欧美变态口味重另类| 97人妻精品一区二区免费| 久久精品亚洲人成影院| 91精品国产91久久久久久最新| 在线免费观看视频网站| 国产一区二区在线看| 久久综合伊人77777麻豆| 麻豆电影在线播放| 色综合久久久久久久久久久| 人妻激情偷乱视频一区二区三区| 美女毛片一区二区三区四区| 欧美区在线播放| 国产情侣在线视频| 国产精品911| 亚洲国产精品一区在线观看不卡| 999精品网| 欧美一区二区高清| 娇妻被老王脔到高潮失禁视频| 亚洲看片免费| 成人午夜小视频| 国产免费永久在线观看| 午夜日韩在线电影| 欧洲美女亚洲激情| 一本色道久久综合亚洲精品酒店 | 色婷婷色综合| 欧美一级在线播放| 亚洲精品国产精品国| 国产精品久久久久久久久动漫| 三级4级全黄60分钟| gogo人体一区| www.日韩av.com| 在线免费一区二区| 久久亚洲综合av| 免费国产a级片| 大香伊人久久精品一区二区| 欧美丰满少妇xxxx| 国产精品无码久久久久成人app| 国产欧美一区二区在线| 97xxxxx| 日韩av资源网| 91精品国产高清久久久久久| 天天操天天爱天天干| 亚洲已满18点击进入久久| 四季av一区二区三区| 成人一级毛片| 国产精品久久久久久av下载红粉 | 国产稀缺精品盗摄盗拍| 精久久久久久久久久久| 一区在线电影| 91国产一区| 精品国内自产拍在线观看| 波多野结衣视频在线看| 国产色91在线| 超碰在线公开97| 日韩精品91| 国产在线播放91| h片在线免费| 91精品国产综合久久精品麻豆| 天堂а√在线中文在线鲁大师| 麻豆精品在线视频| 亚洲三级一区| 国产精品1区| 欧美猛少妇色xxxxx| 99国产精品久久久久99打野战| 一区二区三区中文字幕| 亚洲自拍偷拍精品| 黑人一区二区| 久久久久高清| 国产激情欧美| 久久精品免费播放| 丰满人妻一区二区三区免费| 欧美日韩国产黄| 97人妻精品一区二区三区免费| 国产精品久久久一区二区| 久久久神马电影| 国产69精品久久久久9999人| 九九热视频这里只有精品| 日本黄色一区二区三区| 日韩欧美国产免费播放| 卡一卡二卡三在线观看| 国产精品996| 超碰网在线观看| 一区二区蜜桃| 久久草.com| 国产激情欧美| 性欧美办公室18xxxxhd| 黄色小视频在线观看| 欧美一级理论性理论a| 国产无码精品一区二区| 久久久久久9999| 青青青在线视频免费观看| 婷婷综合激情| 久久亚洲高清| 99综合99| 青青青国产精品一区二区| 快射av在线播放一区| 亚洲精品狠狠操| 国产精品视频一二区| 黑人巨大精品欧美一区二区免费| 国产精品www爽爽爽| 成人午夜激情片| 韩国中文字幕av| 激情久久久久久久| 日韩区国产区| 鲁大师精品99久久久| 成人免费观看a| 精品欧美一区二区三区在线观看 | 黄色网在线播放| 亚洲欧美国产精品| 黑人乱码一区二区三区av| 欧美久久久久免费| 黄色片中文字幕| 亚洲天堂网中文字| 国产一区二区三区四区五区六区 | 美足av综合网| 久久国产精品网站| 国产激情小视频在线| 日韩在线观看精品| 欧美猛烈性xbxbxbxb| 中文字幕亚洲天堂| 天堂中文а√在线| 色偷偷噜噜噜亚洲男人的天堂| 成人亚洲综合天堂| 中文字幕9999| 日本在线免费网| 精品国模在线视频| 99久久精品免费观看国产| 欧美成人午夜激情视频| 欧美色图天堂| 欧美精品videossex88| 福利在线导航136| 97精品视频在线观看| 亚洲人成在线网站| 日韩美女在线观看| 黄色精品视频| 91精品久久久久久久| 国产日韩一区二区三免费高清| 51国偷自产一区二区三区的来源 | 欧美成人高清电影在线| www.热久久| 亚洲第一色在线| 欧美偷拍视频| 中文字幕亚洲一区二区三区| www在线免费观看视频| 欧美激情视频三区| 手机在线理论片| 国产精品美乳一区二区免费| 91精品在线免费视频| 国产精品二区三区| 伊人久久大香线蕉综合网蜜芽| 日韩欧美精品一区二区三区经典| 91精品国产成人观看| 国产av熟女一区二区三区| 一道本一区二区| 国产区二区三区| 国产精品99久| 亚洲国产av一区| ㊣最新国产の精品bt伙计久久| 国产一级一级片| 在线观看日韩毛片| 精品人妻少妇嫩草av无码专区| 亚洲精品一区二区三区福利| 黄色大片在线免费观看| 久久精品免费播放| 成人免费图片免费观看| 国产精品久久久久久婷婷天堂| 欧美成人一级| 开心色怡人综合网站| 亚洲欧美网站在线观看| 久草热视频在线观看| 另类的小说在线视频另类成人小视频在线| 欧美性猛交xx| 亚洲国产精品激情在线观看| 久久免费公开视频| 欧美亚洲日本国产| 欧美 日韩 国产 成人 在线 91 | 日韩av电影免费在线观看| 影视亚洲一区二区三区| 欧美极品欧美精品欧美图片| 国产一区二区三区国产| 能免费看av的网站| 一区二区三区成人在线视频| 亚洲免费视频二区| 亚洲国产天堂久久国产91| 性开放的欧美大片| 2019中文在线观看| 香蕉大人久久国产成人av| 日本不卡免费新一二三区| 伊人成人在线| 久久aaaa片一区二区| 中文字幕av一区二区三区免费看 | 欧美一级二级在线观看| 国产尤物视频在线| 8050国产精品久久久久久| 日韩中文在线| 在线观看成人免费| 麻豆传媒一区二区三区| 亚洲一区二区三区蜜桃| 亚洲电影第三页| 国产福利第一页| 伦理中文字幕亚洲| 精品久久福利| 日韩欧美一区二区视频在线播放 | 91视频一区| 天天操天天爱天天爽| www国产亚洲精品久久麻豆| 懂色av.com| 亚洲第一网站免费视频| 性欧美高清come| 亚洲jizzjizz日本少妇| 99久久夜色精品国产亚洲96| 亚洲精品久久久中文字幕| 国产拍揄自揄精品视频麻豆| 国产视频1区2区| 亚洲欧洲激情在线| 偷拍视频一区二区三区| 美乳视频一区二区| 国产手机视频一区二区| 亚洲调教欧美在线| 精品久久久在线观看| 四虎在线免费观看| 国产z一区二区三区| 精品国产123区| wwww.国产| 国产精品国产三级国产有无不卡| 亚洲自拍偷拍另类| 俺去亚洲欧洲欧美日韩| 动漫一区二区三区| dy888午夜| 成人做爰69片免费看网站| 国产在线观看免费av| 亚洲国产中文字幕久久网| 男人av在线播放| 日韩精品一线二线三线| 麻豆精品在线视频| 五月天丁香激情| 亚洲成人黄色在线| 粉嫩一区二区| 正在播放国产精品| 国产一区二区精品久久91| 久久久无码精品亚洲国产| 亚洲国模精品私拍| 亚洲成人av观看| 超碰97在线看| 97se亚洲国产综合自在线不卡| 欧美一级淫片免费视频黄| 中文字幕日韩精品在线| 涩涩屋成人免费视频软件| 三上悠亚久久精品| 国产亚洲综合性久久久影院| 国产又粗又黄视频| 欧美激情影音先锋| 精品国产乱码久久久| 免费观看黄网站| 岛国av一区二区在线在线观看| 国产h视频在线观看| 亚洲资源在线看| 亚洲综合丁香| 午夜爽爽爽男女免费观看| 日韩精品中文字| 热久久久久久| 131美女爱做视频| 国产精品妹子av| 人妻精品一区一区三区蜜桃91| 国产精品成人播放| 欧美日韩三级电影在线| 精品少妇一区二区三区免费观| 欧美日韩国产色站一区二区三区| 欧美午夜大胆人体| 日韩免费一区二区三区| 丁香婷婷综合五月| 在线观看亚洲一区二区| 高清欧美电影在线| 五月天久久网站| 色欲av无码一区二区三区| 91精品国产福利在线观看|