主要观点:
- 几周前推出了 Dagger Cloud v3,其新用户界面用 Go 的 WebAssembly 编写,与 v2 有很大不同。
- 之前的 Dagger Cloud(pre-v3)用 React 编写,Dagger TUI 用 Go 编写,导致两个界面代码不同步,开发效率低。
- 目标是统一代码库,实现快速交付新功能和提升 Web UI 性能。
- 选择 Go + WebAssembly 的原因,包括团队语言偏好、打破团队壁垒等,同时也面临一些挑战,如 WebAssembly 生态不成熟、内存限制等。
- 通过使用 Go-app 框架进行原型开发,解决了一些问题并降低了项目风险,最终实现了从原型到生产的转变。
- 切换到 WASM 带来了更一致的用户体验、更好的性能和更低的内存使用,对团队也有很大益处。
- 强调不是普遍推荐用 Go 做前端,需根据具体情况评估。
关键信息:
- Dagger Cloud v3 新界面用 Go + WebAssembly 编写。
- 之前两个界面代码不同步,影响开发效率。
- 选择 Go + WebAssembly 的原因及面临的挑战。
- 用 Go-app 框架进行原型开发及降低风险的过程。
- 切换到 WASM 后的好处及仍在 beta 阶段供尝试。
重要细节:
- 有数百上千的 OpenTelemetry 跨度,Web UI 处理大量数据时性能瓶颈。
- 团队主要是 Go 工程师,选择 Go 方便贡献。
- Go + WebAssembly 组合不成熟,需自己构建 UI 组件,应对 2GB 内存限制。
- 在 Go-app 框架中进行原型开发,解决内存、JSON 解析等问题。
- 应用 Brotli 压缩减小 WASM 文件大小。
- 发现 Go-app 比 React 更灵活,可自由更新组件。
- 可将 Go 与 NPM 包结合使用。
- Dagger Cloud v3 已向 Dagger Commanders 软启动并向所有人开放。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。