oneo-me/nsgo
开发工具用 Go 编写跨平台应用,各平台以自身原生视图渲染界面。
NSGo 是一个用 Go 构建跨平台应用的 UI 引擎:应用逻辑、信号/记忆/副作用响应式图以及 flexbox 或 grid 布局都在 Go 中运行,而每个目标平台用自己的原生视图绘制。它沿袭 Rust 版 Native Shell(NSH)的模型,面向希望拥有同样模型但不想写 Rust 的 Go 团队。作者明确说明它仍处于早期,尚无正式发布或稳定 API。
应用如何构建
一个应用是 Go main 包,根组件传给 nsgo.Run。信号保存状态,组件返回 view、text、base 按钮等核心节点。布局以 Go 的样式值声明,因此同一组件树可面向 macOS、iOS、Windows、Linux、Android 和 Web。引擎文档覆盖的范围包括响应式、布局、文本、图片、canvas、shader、动画、服务和基础无样式组件;它并不是一套开箱即用的有样式控件库。
使用方式
nsgo 工具通过 go get -tool 一次性加入 Go 模块,之后以 go tool nsgo 运行,无需额外安装。dev 可运行应用,并可在保存时重新构建并重启;build 按目标平台生成发布包(.app、.ipa、.apk、Windows/Linux 目录或网站)。应用也可嵌入现有原生应用:XCFramework、AAR,或 Go 桌面程序中的 nsgo.NewView。
测试是工作流的一部分:nsgotest 无头运行;go tool nsgo test -target macos(或 Windows、Linux、Chrome/Chromium/Edge 中的 Web、iOS 模拟器、Android)在真实窗口中运行同一批测试,使用原生输入并保存截图。还支持 JUnit 报告,便于 CI 使用。
要求与当前限制
文档中的开发环境是装有 Xcode 和 Go 1.25 或更高版本的 macOS;README 称这足以构建所有 arm64 目标,包括 Android APK。设备开发还需 Android SDK 的 adb;iPhone 开发需要 Apple ID、受信任设备和开发者模式。android_x64 模拟器目标另外需要 Android NDK 以支持 cgo。Windows 文档覆盖运行原生应用及构建 Windows 和 Web 包;Linux 需要 GTK 4.14+、Pango、Cairo、WebKitGTK 6.0 及 GStreamer 插件。
作者明确说明目前没有正式发布,也没有稳定 API,各平台状态记录在架构文档中。这意味着 API 和打包方式应预期会变动。项目采用 Apache-2.0 许可,并在 NOTICE 中记录了对 NSH 的署名。
适用性
对于希望原生渲染跨平台 UI、且能接受 API 尚不稳定的 Go 开发者,这值得作为早期项目了解。需要已发布、冻结 API 的团队,或无法使用 macOS/Xcode 构建环境的团队,应将其视为尚不成熟,而不要假定文档中的替代工具链覆盖了所有打包路径。
HotRepo 点评
HotRepo 在 2026-10-28 的新项目榜上观察到 NSGo:134 stars,第 10 名;这只是一次快照,不是增长测量,且每日榜历史不足,无法判断势头。
本文由 AI 根据项目 README 生成,更新于 2026年10月28日,以项目官方文档为准。