精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

99久久精品一区二区成人| 成人午夜精品福利免费| 欧美日韩激情| 欧美精品亚洲一区二区在线播放| 男人的天堂成人| 亚洲男人天堂久久| 丝袜国产日韩另类美女| 久久精品视频在线| av黄色一级片| 国产福利亚洲| 亚洲香肠在线观看| 日本欧美精品久久久| 国产又爽又黄免费软件| 亚洲大片av| 一区二区三区美女xx视频| 91亚洲一区二区| 成人影院大全| 樱桃国产成人精品视频| 欧美极品jizzhd欧美| 国产免费高清视频| 久久亚洲二区| 欧美激情第99页| av永久免费观看| 高潮久久久久久久久久久久久久 | 精品产品国产在线不卡| 中国黄色一级视频| 99精品久久久| 久久亚洲精品国产亚洲老地址| 欧美一级片黄色| 91视频成人| 91福利社在线观看| 国产最新免费视频| 91国内在线| 国产精品婷婷午夜在线观看| 激情视频一区二区| 精品人妻一区二区三区浪潮在线| 人人狠狠综合久久亚洲| 81精品国产乱码久久久久久| 99精品久久久久| 国产欧美日韩免费观看| 亚洲精品ady| 亚洲最大视频网| 国产成人免费av一区二区午夜| 色综合久久综合网97色综合| 成品人视频ww入口| 日本资源在线| 亚洲欧洲成人自拍| 亚洲国产日韩美| 欧洲一区av| 91亚洲国产成人精品一区二区三 | 久久365资源| 欧美成人女星排行榜| 欧美大片久久久| 国产精品第一| 精品视频资源站| 中文字幕第36页| 欧美日韩亚洲国产| 色爱区综合激月婷婷| 青青草原av在线播放| 欧美男男tv网站在线播放| 亚洲国产wwwccc36天堂| 久无码久无码av无码| 久久99亚洲网美利坚合众国| 亚洲一区电影777| 精品免费久久久久久久| 在线观看午夜av| 一区二区三区欧美久久| 日韩极品视频在线观看| 国产www视频在线观看| 亚洲第一成人在线| 欧美亚洲一二三区| 精品91久久| 欧美中文字幕一区| 久久久久久久久久久久91| 国产第一精品| 欧美一级二级在线观看| 亚洲精品成人无码毛片| 欧美精品中文| 亚洲欧美日韩久久久久久| 久久亚洲无码视频| 国产精品久久天天影视| 欧美俄罗斯性视频| 波多野结衣国产| 日本亚洲视频在线| 91精品国产综合久久男男| 国产99视频在线| aaa国产一区| 日本福利一区二区三区| 黄色网页在线免费观看| 亚洲成人自拍偷拍| 亚洲欧洲日本精品| 亚洲啊v在线免费视频| 日韩精品免费在线| 色婷婷粉嫩av| 亚洲大黄网站| 国产精品久久久久久一区二区| 国产女18毛片多18精品| 99re热视频这里只精品| 性欧美videosex高清少妇| 在线你懂的视频| 欧美性xxxx极品高清hd直播| 国内av一区二区| 免费观看成人www动漫视频| 在线播放日韩专区| 国产午夜免费视频| 日韩电影在线一区二区三区| 亚洲在线第一页| 国产女主播在线写真| 一区二区三区在线视频免费| 国产情侣av自拍| 日本一区二区三区播放| 亚洲欧洲午夜一线一品| 久久久久成人精品无码| 日韩国产高清影视| 国产精品久久一区二区三区| 秋霞午夜在线观看| 欧美午夜片欧美片在线观看| 一卡二卡三卡四卡五卡| 欧美激情在线免费| 久久久久久国产精品美女| 国产精品免费无遮挡无码永久视频| 国产成人av在线影院| 亚洲精品国产精品国自产| а√天堂8资源在线| 7799精品视频| 中文字幕有码在线播放| 亚洲综合99| 99re视频在线播放| 国产在线观看a| 在线看国产一区二区| 中文在线一区二区三区| 亚洲调教视频在线观看| 亚洲影视九九影院在线观看| 在线日本中文字幕| 欧美在线|欧美| 高潮毛片无遮挡| 亚洲精品乱码| 国产精品乱码一区二区三区| 在线看女人毛片| 51精品秘密在线观看| 天天干天天操天天拍| 天堂在线亚洲视频| 免费看成人片| 不卡福利视频| 亚洲免费高清视频| 人人干人人干人人干| av中文字幕一区| r级无码视频在线观看| 中文字幕一区二区三区四区久久 | 黄色成人在线网| 日韩欧美成人午夜| 欧美日韩在线国产| 国产成人在线免费观看| 亚洲熟妇无码av在线播放| 麻豆国产一区| 欧美成人国产va精品日本一级| 91亚洲欧美激情| 亚洲欧洲另类国产综合| 伊人精品视频在线观看| 亚洲一级淫片| 成人91免费视频| www.综合网.com| 亚洲国产成人久久| 欧美啪啪小视频| 久久久久久电影| 国产高清视频网站| 久久精品国产99久久| 91系列在线观看| 污污片在线免费视频| 欧美tk丨vk视频| 国产无码精品视频| 久久综合九色综合97_久久久| 人妻精品无码一区二区三区| 国产伦精品一区二区三区视频 | 国产精品1区2区3区| 99re6这里有精品热视频| www.豆豆成人网.com| 午夜精品免费视频| 搞黄视频免费在线观看| 这里只有精品免费| 国产一卡二卡在线播放| 国产亚洲欧美日韩俺去了| 一级片视频免费观看| 欧美~级网站不卡| 韩国成人动漫在线观看| 亚洲第一av| 色婷婷综合成人av| 男人天堂av网| 日本精品免费观看高清观看| chinese全程对白| 成人精品在线视频观看| 国内外成人激情视频| 五月天久久网站| 国产美女99p| 123成人网| 欧美日本啪啪无遮挡网站| 色猫av在线| 欧美日韩成人综合| 好吊妞视频一区二区三区| 国产精品天干天干在观线| 性折磨bdsm欧美激情另类| 欧美一级久久| 中文字幕精品在线播放| 台湾亚洲精品一区二区tv| 国产一区二中文字幕在线看| 国产经典三级在线| 日韩最新中文字幕电影免费看| 蜜桃视频污在线观看| 精品1区2区3区| 毛片视频网站在线观看| 亚洲少妇中出一区| 好吊视频在线观看| 国产激情精品久久久第一区二区 | 欧美成人aa大片| 天堂网一区二区| 亚洲图片有声小说| 小嫩苞一区二区三区| 91丨porny丨在线| √天堂资源在线| 青青草国产精品97视觉盛宴| 99视频在线免费播放| 99久久99视频只有精品| 欧美一区二区三区成人久久片| 青草伊人久久| 国产日韩欧美一二三区| 日本欧美日韩| 国产91精品久久久久| 久色国产在线| 麻豆乱码国产一区二区三区| 高清av电影在线观看| 亚洲美女精品久久| 天天综合天天综合| 精品免费一区二区三区| 国产美女主播在线观看| 欧美性一二三区| 无码一区二区三区| 日韩欧美视频一区二区三区| 国产乡下妇女做爰毛片| 亚洲一区在线视频| 九九精品在线观看视频| 一区二区三区免费看视频| 免费看特级毛片| 中文字幕亚洲电影| 成年人免费视频播放| 欧美国产一区二区| 一区二区三区在线观看免费视频| 久久久一区二区三区捆绑**| 精品一区二区视频在线观看| 成人福利视频在线看| 午夜不卡久久精品无码免费| 成人一道本在线| 久草免费资源站| 成人免费观看视频| 影音先锋资源av| eeuss鲁片一区二区三区在线观看| 四虎永久免费观看| 成人精品国产福利| 一级欧美一级日韩片| 99热99精品| 91中文字幕永久在线| 国产午夜精品一区二区三区视频| xxxxx在线观看| 欧美国产精品一区二区| 成年人视频软件| 亚洲欧美偷拍卡通变态| 亚洲国产美女视频| 亚洲一区二区三区小说| 日本少妇全体裸体洗澡| 日韩欧美在线看| 中文字幕人妻色偷偷久久| 欧美日本视频在线| 国产99对白在线播放| 亚洲第一精品福利| 国产毛片av在线| 色偷偷91综合久久噜噜| 最新日本在线观看| 97久久精品人人澡人人爽缅北| xxxxx性欧美特大| 国产精品日本精品| 精品国产亚洲日本| 精品视频一区在线| 成人久久电影| 久久综合久久网| 日韩不卡一二三区| 在线成人免费av| 99riav一区二区三区| 色婷婷粉嫩av| 精品电影在线观看| 一区二区三区在线免费观看视频 | 五月天福利视频| 中文字幕国产日韩| 国产乱码在线| 国产精品久久久久久久久久久久久久| 久久三级中文| 欧美日韩国产综合视频在线| 天天揉久久久久亚洲精品| 黄网站欧美内射| 精品综合免费视频观看| 欧美精品欧美极品欧美激情| 国产精品色婷婷| 久久精品视频8| 欧美裸体一区二区三区| 亚洲av成人无码久久精品老人| 日日骚久久av| 蜜桃视频在线观看播放| 91网站免费观看| 欧美精品一二| 久久久性生活视频| 精品一区二区三区免费观看| 亚洲精品乱码久久久久久久| 亚洲色图视频网| 日韩综合在线观看| 精品国产不卡一区二区三区| 在线激情免费视频| 欧美一级大片在线免费观看| 狂野欧美xxxx韩国少妇| 欧美最大成人综合网| 日韩视频精品在线观看| 天天看片天天操| 国产日韩精品一区二区三区 | 亚洲无线一线二线三线区别av| 看欧美ab黄色大片视频免费 | 国产精品v欧美精品∨日韩| 久久激情电影| 国产第一页视频| av一本久道久久综合久久鬼色| 久久久久久久久久久久久女过产乱| 欧美视频在线观看一区| 免费福利在线视频| 韩剧1988免费观看全集| 亚洲精品一区在线| 日日噜噜夜夜狠狠久久丁香五月| 久久精品国产精品亚洲精品| 精品人伦一区二区三电影| 精品欧美aⅴ在线网站| 亚洲国产综合网| 美女福利视频一区| 国产第一亚洲| 亚洲永久激情精品| 日本女优在线视频一区二区| 成人免费网站黄| 精品国产乱码久久久久久婷婷| 国产刺激高潮av| 欧美激情三级免费| 一区视频网站| 99色这里只有精品| 成人福利电影精品一区二区在线观看| 免费一级片在线观看| 日韩欧美三级在线| 欧美14一18处毛片| 成人区精品一区二区| 在线成人av| 一女三黑人理论片在线| 狠狠色噜噜狠狠狠狠97| 欧美日韩在线精品一区二区三区激情综 | 日本道在线观看一区二区| 深夜福利在线看| 情事1991在线| 全球成人免费直播| 久久撸在线视频| 成人欧美一区二区三区黑人麻豆| 97国产成人无码精品久久久| 欧美乱妇高清无乱码| 盗摄牛牛av影视一区二区| 极品美女扒开粉嫩小泬| 久久久久综合网| 7777久久亚洲中文字幕| 色综合久久中文字幕综合网小说| 亚洲精品在线a| av天堂永久资源网| 国产欧美一区二区三区鸳鸯浴 | 精品久久99ma| 麻豆国产在线| 欧美性大战久久久久| 美女爽到高潮91| 欧美黄色一区二区三区| 日韩电视剧免费观看网站| 美女网站视频一区| 国产av不卡一区二区| 成人午夜在线视频| 亚洲天堂男人av| 久久亚洲国产精品| 欧美调教网站| 99热这里只有精品在线播放| 亚洲欧美另类综合偷拍| 日韩在线视频第一页| 国产精品美女免费看| 综合激情在线| 亚洲最大的黄色网| 欧美日韩大陆一区二区| ****av在线网毛片| 水蜜桃一区二区三区| 国产成人在线免费观看| 国产又粗又猛又爽又| 欧美男插女视频| 蜜桃成人av| www.日本久久| 一本色道久久综合狠狠躁的推荐 | 欧美高清第一页| 国产欧美日韩在线一区二区|