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

Go Wails 桌面開發之 Go 與 Preact 如何協作通信?

開發 后端
在本篇文章里將帶你從0開始,借助 Wails框架構建一個前后端分離的Todo應用,前端用Preact,后端使用Go,并講解它們之間的通信機制與數據傳遞方式。

上一篇文章里我們簡單的了解了Wails,在本篇文章里將帶你從0開始,借助 Wails框架構建一個前后端分離的Todo應用,前端用Preact,后端使用Go,并講解它們之間的通信機制與數據傳遞方式。閑話少說,開始今天的內容,let's go!!!

Wails 框架如何工作?

在Wails中,前端通過WebView渲染頁面,后端通過Go提供邏輯支持。它的工作流程如下:

  • 前端使用Vite(也可以是其他的)構建(React/Preact/Vue 等)。
  • Go 后端通過 Bind綁定結構體或方法。
  • 前端調用wailsjs/go/模塊名/方法名與后端通信(由Wails自動生成綁定文件)。
  • Wails通過WebView (Windows/macOS/Linux) 將UI嵌入為桌面應用。

通信簡圖如下:

用戶界面 (Preact)
     │
     ▼
JS Bridge (Wails JS Runtime)
     │
     ▼
Go 后端邏輯

構建一個簡單的Todo應用

我們使用wail init命令初始化一個名為todo的項目 ,命令具體如下所示:

wails init -n todo -t preact-ts

這里選擇的前端模版是preact-ts,它比較輕量級,語法上跟react可能不太一樣,但是整體相同。

項目創建好之后進入到項目目錄,創建todo目錄和todo.go文件,具體如下圖所示:

在todo.go文件里,鍵入如下代碼:

package todo


type Todo struct {
	ID    int    `json:"id"`
	Title string `json:"title"`
	Done  bool   `json:"done"`
}


type TodoService struct {
	todos  []Todo
	nextID int
}


func NewTodoService() *TodoService {
return &TodoService{
		todos:  []Todo{},
		nextID: 1,
	}
}


func (t *TodoService) GetTodos() []Todo {
return t.todos
}


func (t *TodoService) AddTodo(title string) Todo {
	todo := Todo{
		ID:    t.nextID,
		Title: title,
		Done:  false,
	}
	t.todos = append(t.todos, todo)
	t.nextID++
return todo
}


func (t *TodoService) ToggleTodo(id int) []Todo {
for i, item := range t.todos {
if item.ID == id {
			t.todos[i].Done = !item.Done
break
		}
	}
return t.todos
}

完事之后,我們需要將todo中的NewTodoService注冊到wails中,具體操作如下:

package main


import (
     "embed"
     "todo/todo"


     "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() // 注釋掉wails生成的app
     server := todo.NewTodoService()


     // Create application with options
     err := wails.Run(&options.App{
          Title:  "todo",
          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{}{
               server, // 將server實例注冊綁定到wails中
          },
     })


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

這時候運行wails dev就可以將我們todo里寫的go代碼生成js,用于和前端進行一個綁定,當然了,一般實際開發中并不會使用wails dev來生成,而是使用wails generate module命令來生成。而生成的代碼都被放在了wailsjs/go目錄下,具體如下圖所示:

代碼生成好了之后我們編寫前端代碼,并在里面調用我們生成的go綁定代碼,具體如下所示:

import { h } from 'preact'
import { useEffect, useState } from 'preact/hooks'
import { AddTodo, GetTodos, ToggleTodo } from '../wailsjs/go/todo/TodoService'


interface Todo {
  id: number
  title: string
  done: boolean
}


export default function App() {
  const [todos, setTodos] = useState<Todo[]>([])
  const [input, setInput] = useState('')


  useEffect(() => {
    refreshTodos()
  }, [])


  const refreshTodos = () => {
    GetTodos().then(setTodos)
  }


  const add = () => {
    if (!input) return
    AddTodo(input).then(() => {
      setInput('')
      refreshTodos()
    })
  }


  const toggle = (id: number) => {
    ToggleTodo(id).then(setTodos)
  }


  return (
    <div className="p-4">
      <h1 className="text-2xl font-bold mb-4">?? Todo List</h1>
      <input
        className="border p-2 mr-2"
        placeholder="Enter todo"
        value={input}
        onInput={(e: any) => setInput(e.target.value)}
      />
      <button className="bg-blue-500 text-white p-2" onClick={add}>Add</button>


      <ul className="mt-4">
        {todos.map(todo => (
          <li
            key={todo.id}
            className={`cursor-pointer ${todo.done ? 'line-through text-gray-500' : ''}`}
            onClick={() => toggle(todo.id)}
          >
            {todo.title}
          </li>
        ))}
      </ul>
    </div>
  )
}

最后運行wails dev命令,讓我們來見證時刻的奇跡吧!!!

結語

Wails是前后端集成的利器。通過本文你了解了:

  • Wails前后端的工作原理
  • Go與Preact 如何通信
  • 如何使用Wails快速搭建桌面級Todo應用

看到這,各位帥哥靚女可能都明白了,這東西擺明換湯不換藥,這個跟平常前后端沒啥兩樣的,如同生氣的她,多提醒一下,多喝熱水對身體好。今天的內容到此結束,感謝??您的收看??????,下次再見??

責任編輯:趙寧寧 來源: 馬嘍編程筆記
相關推薦

2025-05-16 08:20:00

WailsGo后端

2025-07-28 04:22:00

2020-04-24 09:53:59

Go協作搶占

2025-03-14 00:53:12

2012-01-04 00:14:10

ibmdw

2021-05-21 08:21:57

Go語言基礎技術

2011-07-04 14:58:56

Qt 桌面 qvfb

2025-06-06 06:45:54

2023-03-09 09:06:13

ChanneGo開發

2022-03-13 23:51:39

Web項目Go

2023-04-03 06:53:04

Go開發架構

2012-12-21 09:19:29

Google GO

2015-10-12 15:50:07

PaaS云平臺開發go

2021-07-12 10:24:36

Go裝飾器代碼

2022-10-27 18:03:04

GogRPC云原生

2023-03-10 07:46:55

Go開發Channelselect

2018-11-06 21:50:09

前端Html腳本語言

2021-02-25 22:17:19

開發技術編程

2022-07-04 08:03:08

Go壓縮打包

2022-05-13 23:46:52

GO編程內存
點贊
收藏

51CTO技術棧公眾號

国产精品一区二区视频| 清纯唯美亚洲综合一区| 欧美视频不卡中文| 欧美在线日韩精品| a在线观看视频| 亚洲精品美女| 日日噜噜噜夜夜爽亚洲精品| 野花视频免费在线观看| 亚洲天堂手机| 亚洲免费观看高清在线观看| 蜜桃日韩视频| 99精品在线视频观看| 亚洲欧美日本国产专区一区| 精品精品国产国产自在线| 99久久国产精| 久久伊人久久| 日本乱码高清不卡字幕| av动漫在线免费观看| 黄色av网站在线免费观看| 国产成人自拍高清视频在线免费播放| 日本国产一区二区三区| 精品国产乱码久久久久久鸭王1| 亚洲成aⅴ人片久久青草影院| 欧美一区二区三区爱爱| 99视频在线视频| 国产传媒在线| 亚洲精品国产第一综合99久久 | 久久久日本电影| 中国1级黄色片| 亚洲人成精品久久久| 日韩一区二区在线观看视频| 久草精品在线播放| av资源新版天堂在线| 中文字幕一区二区5566日韩| 欧洲国产精品| 四虎精品一区二区三区| 国产乱码字幕精品高清av| 国产精品高清在线| 精品欧美一区二区三区免费观看| 综合激情婷婷| 久久视频在线播放| 粉嫩精品久久99综合一区| 亚洲免费观看高清完整版在线观| 精品国产乱码久久久久久浪潮 | 中文字幕一区二区三区四区久久 | 99在线精品视频免费观看软件| 日韩av一二三| 国产大片精品免费永久看nba| 日本一级黄色录像| 亚洲午夜极品| 国内精品400部情侣激情| 国产精品老熟女一区二区| 国产精品久久久久久| 在线观看免费高清视频97| 日韩一区二区a片免费观看| 思热99re视热频这里只精品| 亚洲国产精品yw在线观看| 又黄又爽的网站| 卡一精品卡二卡三网站乱码 | 成人免费大片黄在线播放| 亚洲怡红院av| 国产一区二区剧情av在线| 91免费看国产| 亚洲第一页综合| 成人在线综合网站| 国产亚洲欧美一区二区三区| 欧美 日韩 国产 成人 在线| 99久久精品99国产精品| 久久er99热精品一区二区三区| 无码h黄肉3d动漫在线观看| 99久久精品国产一区二区三区 | 亚洲成人自拍偷拍| 日韩a∨精品日韩在线观看| a√中文在线观看| 黄网动漫久久久| 99精品免费在线观看| 午夜精品久久久久久久久久蜜桃| 日本韩国精品在线| 成年网站免费在线观看| 综合欧美精品| 精品处破学生在线二十三| 日韩成人av一区二区| 久久av免费| 日韩在线不卡视频| 国产无遮挡又黄又爽在线观看| 国产欧美日韩一级| 国产色视频一区| 亚洲va天堂va欧美ⅴa在线| 97久久久精品综合88久久| 视频一区视频二区视频三区视频四区国产 | 成人影院av| 欧美日韩在线直播| 稀缺呦国内精品呦| 国产精品亚洲二区| 久精品免费视频| 精产国品一区二区| 国产一区二三区| 国产成人免费电影| eeuss影院www在线播放| 亚洲一区二区三区在线| 免费激情视频在线观看| 欧美大片91| 亚洲午夜性刺激影院| 日本中文字幕免费在线观看| 国产欧美三级| 成人av资源| 18视频免费网址在线观看| 亚洲国产精品久久一线不卡| 国产精品自拍视频在线| 嫩草国产精品入口| 欧美成人中文字幕| 91青青草视频| jvid福利写真一区二区三区| 中文字幕一区二区三区四区五区六区 | 日本最新高清不卡中文字幕| 国产情侣av在线| 国产日韩欧美不卡在线| 国产乱淫av片杨贵妃| 国产精品1区| 国产亚洲精品美女久久久久| 日本一级淫片色费放| 韩国视频一区二区| 亚洲春色在线| jk漫画禁漫成人入口| 精品国产亚洲一区二区三区在线观看| 一级片黄色录像| 久久久久欧美精品| 国产私拍一区| 美女日批视频在线观看| 91 com成人网| 国产在视频线精品视频| 久久三级视频| 久久99蜜桃综合影院免费观看| 激情av在线| 日韩亚洲欧美综合| 色欲一区二区三区精品a片| 日本不卡视频在线观看| 蜜桃免费一区二区三区| 欧美一级鲁丝片| 亚洲国产日韩欧美在线99| 久久久久久久9999| 国产成人精品综合在线观看| 中文字幕在线乱| 国产成人免费视频网站视频社区| 国产亚洲激情视频在线| 久久国产乱子伦精品| 91在线免费视频观看| 无码中文字幕色专区| 久久99精品国产自在现线| 久久久久久97| 欧美一区二区公司| 精品久久久国产| 好吊日免费视频| 日本中文在线一区| 在线观看成人av电影| 日韩黄色碟片| 美女av一区二区| 亚洲av无码一区二区三区dv| 一区二区三区在线免费视频 | 激情网站在线观看| 亚洲国产精品高清| 夜夜夜夜夜夜操| 在线中文字幕亚洲| 高清国产在线一区| √最新版天堂资源网在线| 亚洲精品大尺度| 久久精品视频7| 日本一区二区三区四区| 亚洲激情在线看| 国产精品mm| 快播亚洲色图| 亚洲伦理一区二区| 欧美国产中文字幕| 欧美孕妇性xxxⅹ精品hd| 在线观看日韩高清av| 中文字幕观看av| 国产精品18久久久久久久久久久久| 成人在线视频一区二区三区| 日韩a级大片| 国产精品嫩草影院一区二区| 91麻豆一二三四在线| 亚洲国产精品久久精品怡红院| 日本一区二区免费电影| 中文字幕一区在线观看| 国产性猛交96| 日本最新不卡在线| 久草视频这里只有精品| 亚洲自拍电影| 91在线视频精品| 成人性生交大片免费网站| 久久精品久久久久电影| 污视频网站免费观看| 欧美日本一道本| 国产一级18片视频| 日韩毛片视频在线看| 亚洲蜜桃精久久久久久久久久久久| 亚洲自啪免费| 99视频精品全部免费看| 久草成人资源| 国产精品一区二区a| 岛国一区二区| 2019中文字幕全在线观看| 国产原创在线观看| 亚洲美女视频网| 午夜美女福利视频| 欧美日韩在线免费视频| 日韩在线视频免费播放| 亚洲三级久久久| 色一情一交一乱一区二区三区 | av免费在线免费| 亚洲欧美日韩一区二区在线| 国产黄色免费大片| 欧美日韩dvd在线观看| 91精品国产乱码久久久张津瑜| 亚洲老司机在线| 成人黄色a级片| 91在线视频播放地址| 国产人妻精品午夜福利免费| 老司机精品视频在线| 欧美 日韩 激情| 国产综合自拍| 欧美aaa在线观看| 欧美艳星介绍134位艳星| 久久亚洲综合网| 成人另类视频| 91国产丝袜在线放| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 国产成人激情小视频| 九色porny视频在线观看| 色综合久久天天综线观看| 四虎久久免费| 中文字幕日韩免费视频| 精品视频三区| 亚洲欧洲xxxx| 邻居大乳一区二区三区| 日韩h在线观看| 六月丁香综合网| 欧美大片国产精品| 韩国av在线免费观看| 日韩欧美一区二区久久婷婷| 国产又大又黑又粗| 欧美老肥妇做.爰bbww| 一级做a爱片性色毛片| 日本福利一区二区| 黄色污污视频软件| 欧美综合一区二区| 中文字幕在线视频免费| 欧美亚洲国产一区在线观看网站| 国产成人a v| 欧美自拍偷拍午夜视频| 中文字幕第99页| 欧美人妖巨大在线| 99热这里是精品| 日韩欧美自拍偷拍| 亚洲精品久久久久久久久久| 欧美电影免费观看完整版| 亚洲第一第二区| 亚洲精品在线免费播放| 无码国产伦一区二区三区视频| 日韩电影大片中文字幕| 外国精品视频在线观看 | 亚洲资源av| 成人性生生活性生交12| 久久成人免费网| 三级网站免费看| 不卡一区在线观看| 欧美性xxxx图片| 国产精品看片你懂得| 精品人妻伦九区久久aaa片| 亚洲伊人色欲综合网| 日韩三级免费看| 欧美亚洲一区二区三区四区| 国产尤物视频在线观看| 精品美女一区二区| 青青草在线视频免费观看| 中文字幕亚洲欧美一区二区三区| 免费在线你懂的| 久久久久亚洲精品国产| 欧美国产大片| 92国产精品久久久久首页 | 欧美va亚洲va在线观看蝴蝶网| 日本国产在线观看| 中文亚洲视频在线| 日本中文字幕中出在线| 欧美亚洲在线观看| 四虎在线精品| 精品国产综合| 日韩免费av| 免费在线观看视频a| 三级亚洲高清视频| 妖精视频在线观看| 久久久精品国产免大香伊 | 日韩欧美黄色动漫| 国产伦精品一区二区三区免.费 | 国产免费av在线| 色综合久久久久久中文网| 五月激情久久| 国产精品一区二区av| 日韩欧美一区二区三区在线视频| 欧美高清中文字幕| 麻豆国产精品777777在线| 国产黑丝一区二区| 亚洲人成7777| 国产农村妇女aaaaa视频| 91精品国产一区二区人妖| 日本高清中文字幕二区在线| 欧美成人免费观看| 日韩精品三区| 国产精品久久国产三级国电话系列 | 日本一区二区三区免费观看| 欧美激情自拍| 天堂av8在线| 国产亚洲精品aa午夜观看| 久久一区二区三| 欧美日韩一区二区三区高清| 人妻与黑人一区二区三区| 久久精品国产电影| 91精品美女| 麻豆91蜜桃| 亚洲高清电影| 精品人妻人人做人人爽夜夜爽| 久久久亚洲精品石原莉奈| 国产精品成人国产乱| 91精品国产一区二区三区蜜臀| 最新av网站在线观看| 国产成人精品在线观看| 久久精品论坛| 久久精品xxx| 国产精品一区二区久久精品爱涩| 刘亦菲国产毛片bd| 欧美亚一区二区| 户外极限露出调教在线视频| 欧美性受xxxx白人性爽| 精品国产导航| 国产a级片网站| 成人动漫av在线| 国产精品99精品| 亚洲国产精久久久久久| 国产经典三级在线| 风间由美久久久| 精品动漫av| 日本一卡二卡在线| 精品国产91乱高清在线观看| 欧美一级淫片aaaaaa| 久久久午夜视频| 美女午夜精品| 国产99久久九九精品无码| 99免费精品在线| 国产精品男女视频| 亚洲欧美精品suv| 欧美成人app| 亚洲一区三区电影在线观看| 久久精品国产99久久6| а天堂中文在线资源| 欧美精品乱人伦久久久久久| 国产在线激情| 成人av影视在线| 午夜在线一区二区| 久久午夜福利电影| 欧美情侣在线播放| 污污影院在线观看| 国产欧美韩日| 日日夜夜免费精品| 少妇高潮在线观看| 日韩精品专区在线影院观看| 成人影院在线播放| 欧美一二三区| 麻豆freexxxx性91精品| 欧美日韩免费做爰视频| 精品国产免费人成电影在线观看四季| 麻豆mv在线看| 亚洲成人自拍视频| 国产成人在线观看| 毛片在线免费视频| 色诱女教师一区二区三区| 精品欧美视频| 无罩大乳的熟妇正在播放| 亚洲国产激情av| 国内老熟妇对白hdxxxx| 97视频在线观看网址| 日韩av二区| 91超薄肉色丝袜交足高跟凉鞋| 欧美午夜精品久久久久久人妖 | 成人性生生活性生交12| 亚洲美女在线一区| 三区在线观看| 91亚洲午夜在线| 一本色道久久综合亚洲精品高清 | 亚洲一区二区中文在线| 奇米影视888狠狠狠777不卡| 成人国产精品久久久| 亚洲国内自拍| 国产美女网站视频| 日韩精品中文字| 国产精品中文| 人妻无码视频一区二区三区| 一区二区三区产品免费精品久久75| 免费在线观看一级毛片| www久久99| 久久精品国产精品青草|