- #132
在網頁執行 GO TUI 程式透過 WASM
近期大概是因為 AI 的風潮 TUI(Terminal User Interface)很熱門,而我在琢磨 Go 有什麼好玩的專案可以嘗試,正巧碰上了:Bubble Tea,順便做了一個簡單小遊戲,並輕鬆的請 AI 調整成能在瀏覽器上執行的 WASM。
最大的問題在於 Go 程式中預設依賴作業系統的終端機 syscalls(如視窗縮放、原始模式切換),而瀏覽器環境並不支援這些。
解決方案:
- xterm.js: 使用 xterm.js 在瀏覽器中模擬終端機介面。
- 標準輸入輸出重定向: 在
cmd/wasm/main.go中,攔截了 Bubble Tea 的 I/O,改由 xterm.js 寫入和讀取。 - WASM 補丁 (Build Patch) CD:
- 撰寫了一個
build-wasm.sh腳本 - 在編譯前,先執行
go mod vendor建立臨時依賴副本 - 注入一個
tea_js.go補丁到 vendored 代碼中,提供 dummy 實作來跳過不支援的 syscalls - 編譯完成後立即刪除
vendor資料夾 - 發佈到 GitHub Pages
- 撰寫了一個
- #131
- #130
- #129
- #128
- #127
- #126
- #125
- #124
- #123
- #122
- #121
- #120
- #119
- #118
- #117
- #116
- #115
- #114
- #113
- #112
- #111
- #110
- #109
- #108
- #107
- #106
- #105
- #104
- #103
- #102
- #101
- #100
- #99
- #98
- #97
- #96
- #95
- #94
- #93
- #92
- #91
- #90
- #89
- #88
- #87
- #86
- #85
- #84
- #83
- #82
- #81
- #80
- #79
- #78
- #77
- #76
- #75
- #74
- #73
- #72
- #71
- #70
- #69
- #68
- #67
- #66
- #65
- #64
- #63
- #62
- #61
- #60
- #59
- #58
- #57
- #56
- #55
- #54
- #53
- #52
- #51
- #50
- #49
- #48
- #47
- #46
- #45
- #44
- #43
- #42
- #41
- #40
- #39
- #38
- #37
- #36
- #35
- #34
- #33
- #32
- #31
- #30
- #29
- #28
- #27
- #26
- #25
- #24
- #23
- #22
- #21
- #20
- #19
- #18
- #17
- #16
- #15
- #14
- #13
- #12
- #11
- #10
- #9
- #8
- #7
- #6
- #5
- #4
- #3
- #2
- #1