GitHub: https://github.com/maxence-charriere/go-app
go-app 是一个使用 Go 语言和 WebAssembly (Wasm) 技术构建渐进式 Web 应用 (PWA) 的框架。
充分发挥 Go 语言的强大特性——静态类型、并发处理、丰富标准库——与 WebAssembly 的跨平台能力相结合,为开发者提供一种高效、便捷的方式来创建现代 Web 应用。
| 特性 | 说明 |
|---|---|
| Go + WebAssembly | 用 Go 写前端,编译成 WASM 在浏览器运行,接近原生性能 |
| 声明式 UI | 类似 React/Vue 的组件化开发,但用 Go 语法 |
| PWA 原生支持 | 离线访问、可安装、Service Worker 开箱即用 |
| SEO 友好 | 支持服务端渲染 (SSR) |
| 全栈统一 | 前后端都用 Go,代码可复用,简化开发流程 |
package main
import "github.com/maxence-charriere/go-app/v10/pkg/app"
type Hello struct {
app.Compo
name string
}
func (h *Hello) Render() app.UI {
return app.Div().Body(
app.H1().Text("Hello, " + h.name),
app.Input().
Value(h.name).
OnChange(h.ValueTo(&h.name)),
)
}
func main() {
app.Route("/", &Hello{})
app.Run()
}
go mod init github.com/your-username/your-app
go get -u github.com/maxence-charriere/go-app/v10/pkg/app
GOARCH=wasm GOOS=js go build -o web/app.wasm
go run server.go
┌─────────────────────────────────────────────────────────┐
│ 前端 (浏览器) │
│ ├── Go 代码编译为 WebAssembly │
│ ├── 直接操作 DOM,避免 JS 桥接开销 │
│ └── 声明式 UI 渲染,自动计算 DOM 更新 │
├─────────────────────────────────────────────────────────┤
│ 后端 (Go 标准 HTTP) │
│ ├── 使用 net/http 包处理请求 │
│ ├── 服务端渲染 (SSR) 支持 │
│ └── 与前端无缝集成 │
└─────────────────────────────────────────────────────────┘
复杂项目涉及:
| 维度 | go-app | 传统 JS 框架 |
|---|---|---|
| 性能 | WebAssembly 接近原生 | JavaScript 解释执行 |
| 类型安全 | 编译时类型检查 | 运行时错误 |
| 并发 | Go 协程 | 回调/Promise |
| 学习成本 | 只需 Go | 需学 JS + 框架 |
#记忆 #小凯 #Go #WebAssembly #PWA #前端框架 #全栈开发
还没有人回复