精品欧美一区二区三区在线观看 _久久久久国色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)

久久亚洲欧洲| 欧美成人午夜77777| 亚洲图片激情小说| 北条麻妃高清一区| 国产精品老女人| 日本女优一区| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品成人观看视频国产奇米| 久久精品在线观看视频| 高清精品视频| 欧美丝袜丝交足nylons图片| 韩国无码av片在线观看网站| 国产免费av在线| 国产成人精品一区二| 欧美又大又硬又粗bbbbb| 国产jizz18女人高潮| 精品三级av| 欧美酷刑日本凌虐凌虐| 人妻少妇被粗大爽9797pw| 黄网站在线播放| 久久综合色8888| 91视频-88av| 中文字幕在线日本| 在线看片日韩| 久久视频免费观看| 黄色aaa视频| 亚洲综合网站| 欧美军同video69gay| 国产主播在线看| 欧美亚洲天堂| 亚洲日本成人在线观看| 日韩电影免费观看在| 天天干天天干天天干| 国内成人自拍视频| 国产精品久久婷婷六月丁香| 久久久久久久极品| 中文在线日韩| xxxx欧美18另类的高清| 好吊视频在线观看| 欧美在线关看| 亚洲成人激情在线| 久久av一区二区三| 国产精品一区免费在线 | 精品免费国产一区二区| a级片免费在线观看| 亚洲欧美视频在线观看视频| 亚洲欧洲精品在线| 国产污视频在线| 久久久五月婷婷| 久久久久久久久四区三区| 亚洲精品无码久久久| 国产精品99久久久久久久女警 | 久久久精品一区二区| 九一在线免费观看| 日本一区二区高清不卡| 在线日韩欧美视频| 亚洲女优在线观看| 精品国产乱码久久久久久蜜坠欲下 | 一区二区在线观看免费视频播放| 一区二区三区四区五区视频| av在线女优影院| 国产精品区一区二区三区| 日韩在线三区| 幼a在线观看| 国产精品理论在线观看| 中文字幕制服丝袜在线| av网址在线| 一区二区三区精品在线观看| 久久艹国产精品| 2018av在线| 欧美日韩另类字幕中文| 久久久久久久久久久久久国产精品 | 国产精品69久久久久| 波多野结衣日韩| 久久精品99国产精品日本| 91久久精品国产91久久| www.国产免费| 91免费观看视频| 日韩欧美精品在线不卡| 日本视频在线播放| 亚洲一区二区偷拍精品| 欧美三级一级片| 亚洲国产尤物| 日韩午夜在线观看视频| 亚洲の无码国产の无码步美| jlzzjlzz亚洲女人| 欧美xxxx18国产| 日韩污视频在线观看| 日本成人中文字幕| 91九色在线观看| 亚洲三区在线播放| 中文字幕一区视频| 国产美女网站在线观看| 福利精品一区| 精品国产乱码久久久久久图片 | 午夜精品久久久久久久久久 | 亚洲欧洲一区二区| 黄色影院在线看| 91成人看片片| 国产精品中文久久久久久| 亚洲免费毛片| 久热精品视频在线免费观看| 天天操天天爽天天干| 蜜桃av一区二区在线观看| 国产精品手机在线| 香蕉视频在线播放| 黑人巨大精品欧美一区免费视频| 亚洲精品免费一区亚洲精品免费精品一区| 综合成人在线| 最近2019年手机中文字幕| 五月天婷婷丁香| 精品中文字幕一区二区小辣椒| 国产在线播放一区二区| 黄色在线视频网站| 一本大道久久a久久综合婷婷| 91丝袜超薄交口足| 精品国产日韩欧美| 97在线看福利| 国产黄a三级三级三级| 国产网站一区二区三区| 妞干网在线视频观看| 国产aa精品| 一本大道亚洲视频| 久久久精品免费看| 成人福利电影精品一区二区在线观看 | 国产性xxxx18免费观看视频| 国产剧情一区二区在线观看| 一区二区三区视频免费| 丰满少妇乱子伦精品看片| 国产剧情av麻豆香蕉精品| 日韩中文一区| 午夜无码国产理论在线| 日韩精品在线免费观看| 日韩成人免费在线视频| 国产大陆a不卡| 国产精品av免费| 激情中国色综合| 亚洲性av网站| 无码人妻一区二区三区免费| 91色婷婷久久久久合中文| 日韩av新片网| 97se亚洲| 久久青草福利网站| 精品久久久久久亚洲综合网站| 中文字幕av一区二区三区高| 国产又黄又猛又粗又爽的视频| 九九久久电影| 日韩美女视频免费在线观看| 亚州视频一区二区三区| 精品国产乱码久久久久久虫虫漫画 | 国产一级生活片| 国产精品69毛片高清亚洲| 超碰免费在线公开| 国产95亚洲| 欧美激情一区二区久久久| 亚洲国产精品suv| 一二三区精品视频| 日本国产在线视频| 国产欧美日本| 欧美伦理一区二区| 精品肉辣文txt下载| 最近中文字幕2019免费| 91福利免费视频| 亚洲欧美另类小说| 在线播放第一页| 99在线精品免费视频九九视| 女同一区二区| 91九色综合| 久久精品视频一| www.激情五月| 天天综合网 天天综合色| 国产交换配乱淫视频免费| 狂野欧美一区| 99亚洲精品视频| 中文一区二区三区四区| 欧美尤物巨大精品爽| 高清中文字幕一区二区三区| 538在线一区二区精品国产| 欧美日韩在线视频免费播放| 91香蕉视频mp4| 不卡的在线视频| 好看的日韩av电影| 日本不卡久久| 国产精品日本一区二区不卡视频| 九九热r在线视频精品| 深夜福利在线视频| 欧美另类久久久品| 久久高清免费视频| 国产精品久久久久久久久免费丝袜| 一二三av在线| 亚洲欧美日韩国产一区二区| 亚洲一区二区三区乱码| 粉嫩一区二区三区四区公司1| 国产成人黄色av| 午夜成年人在线免费视频| 亚洲男人天堂九九视频| 国产色片在线观看| 色综合 综合色| 青娱乐在线视频免费观看| 国产婷婷精品av在线| 日本黄色大片在线观看| 日本特黄久久久高潮| 无码日本精品xxxxxxxxx| 欧美日韩第一| 精品欧美一区二区在线观看视频| 日韩一区二区三免费高清在线观看| 国内精品小视频在线观看| 免费在线观看av| 日韩国产欧美区| a在线观看视频| 欧美午夜免费电影| 中文字幕精品三级久久久| 亚洲视频在线观看三级| 在线 丝袜 欧美 日韩 制服| 国产成人亚洲精品狼色在线 | 西西44rtwww国产精品| 日韩一区在线看| 免费福利视频网站| 99r国产精品| 亚洲综合中文网| 老色鬼精品视频在线观看播放| 成人毛片视频网站| 黄色日韩在线| 成人手机在线播放| 97视频精品| 亚洲精美视频| 国内亚洲精品| 欧美激情一区二区三区在线视频| 清纯唯美激情亚洲| 成人午夜一级二级三级| 久久久国产精品网站| 国产精品极品尤物在线观看| 欧美18av| 日韩免费观看av| 黄在线观看免费网站ktv| 欧美精品久久久久久久久久| a视频在线观看| 久久天天躁狠狠躁夜夜av| 日韩欧美小视频| xxav国产精品美女主播| 尤物视频在线免费观看| 视频在线观看一区二区| 91在线播放网站| 中文字幕在线看视频国产欧美| 国产在线黄色| 在线观看日韩av| 91福利在线视频| 色偷偷av一区二区三区| 色欧美激情视频在线| 日韩中文字幕亚洲| 精品176二区| 精品自在线视频| 欧洲成人综合网| 国内外成人免费激情在线视频网站| 日本资源在线| 91爱视频在线| 新片速递亚洲合集欧美合集| 国产精品99久久久久久白浆小说 | 97人人模人人爽视频一区二区| 国产精品亚洲欧美一级在线| 99久久伊人精品影院| 高潮按摩久久久久久av免费| 久久资源亚洲| 成人久久电影| 欧美aaa在线观看| 国一区二区在线观看| 国产原创popny丨九色| 美女黄网久久| 中文字幕国产高清| 风间由美性色一区二区三区| 538国产视频| 欧美激情中文不卡| 日韩视频中文字幕在线观看| 亚洲综合视频网| 在线精品免费视| 欧美日韩一区在线观看| 亚洲国产999| 亚洲欧洲成视频免费观看| 欧美黑人激情| 高清欧美一区二区三区| 蜜桃成人精品| 99热在线播放| 国产一区二区三区不卡视频网站| 色中文字幕在线观看| 亚洲欧洲日本mm| 国产免费又粗又猛又爽| 国产福利一区二区三区视频| 真实乱视频国产免费观看 | 久久精品无码人妻| 91久久精品网| 亚洲av无码一区二区乱子伦| 亚洲欧美日韩国产精品| 操你啦视频在线| 日韩av手机在线观看| 91欧美日韩在线| 欧美一区免费视频| 欧美日韩三级| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 国产一区视频在线看| 日韩中文字幕电影| 亚洲精品免费一二三区| 亚洲中文字幕无码爆乳av| 欧美大黄免费观看| 中文字幕日本在线观看| 69av视频在线播放| 国产精品亚洲一区二区在线观看| 欧美亚洲一级二级| 欧美天堂亚洲电影院在线观看| 一区二区三区国产免费| 不卡在线视频中文字幕| 极品色av影院| 色国产精品一区在线观看| 亚洲精品久久久久久久久久久久久久| 中文字幕日韩av综合精品| 蜜桃av在线| 成人在线视频网址| 欧美jizz| 国产视频手机在线播放| 2021久久国产精品不只是精品| 免费一级片在线观看| 欧美美女视频在线观看| 国产经典自拍视频在线观看| 57pao成人国产永久免费| 99re8这里有精品热视频免费| 中文字幕av日韩精品| 青青草国产精品亚洲专区无| 黄瓜视频污在线观看| 午夜精品久久久久久久久久久| www久久久com| 欧美日本亚洲视频| crdy在线观看欧美| 在线电影看在线一区二区三区| 久久九九电影| 精品人妻互换一区二区三区| 欧美日韩裸体免费视频| 色呦呦视频在线| 色综合91久久精品中文字幕 | 四虎影视一区二区| 欧美日韩在线一区二区| 国产原创av在线| 国产精品成人一区二区三区吃奶| 久久av网址| 青青青国产在线视频| 国产人久久人人人人爽| 看黄色一级大片| 亚洲一二在线观看| 日本在线视频一区二区| 视频一区二区三| 免费高清成人在线| 青青草自拍偷拍| 欧美剧在线免费观看网站 | 77777少妇光屁股久久一区| 久久资源综合| 国产 福利 在线| 久久久蜜桃精品| 中文字幕人妻一区二区在线视频| 中文字幕亚洲国产| 精品一区二区三区中文字幕| 六月婷婷激情网| 高清成人免费视频| 国产成人无码精品| 亚洲欧美在线免费观看| 成人1区2区| 中国一级黄色录像| 丁香激情综合国产| 依依成人综合网| 在线丨暗呦小u女国产精品| 日韩一级特黄| 人妻少妇精品久久| 久久久久久久久久久久久夜| 亚洲一区二区色| 欧美成人精品在线播放| 国内精品国产成人国产三级粉色 | 成人性色生活片免费看爆迷你毛片| 国产精品变态另类虐交| 亚洲美腿欧美激情另类| 黄色欧美视频| 日韩国产成人无码av毛片| 久久综合av免费| 亚洲一区二区三区网站| 色综合色综合久久综合频道88| 婷婷国产精品| 亚洲18在线看污www麻豆| 亚洲成人黄色影院| 在线看黄色av| 肥熟一91porny丨九色丨| 久久久久国产精品一区二区| 国产日产精品一区二区三区的介绍| 欧美成人精品3d动漫h| 欧美xxxx做受欧美护士| 日本丰满大乳奶| 久久久亚洲高清| www.四虎在线观看| 国产成人一区二| 午夜久久久久| 欧美激情久久久久久久| 精品福利一二区| 久久久精品一区二区毛片免费看| av免费观看国产| ...xxx性欧美|