用 Rust 编写的跨平台原生声明式 GUI 库,用于构建桌面和移动应用。
oneo-me/nsgo
用 Go 编写应用逻辑、由各平台原生控件渲染的跨平台 UI 引擎。
- Star
- 198
- Fork
- 9
- 未关闭 Issue
- 1
- 最近提交
- 20小时前
这是什么?
NSGo 让开发者用 Go 编写用户界面。应用逻辑、由信号、memo 和 effect 构成的响应式图,以及 flexbox 与 grid 布局都在 Go 中运行,各平台则使用自身的原生视图和文本绘制界面,而不是自绘画布。它是 Rust 框架 Native Shell(NSH)的 Go 移植版,设计思路相同。
项目面向 iOS、Android、macOS、Windows、Linux 和 Web,覆盖文本、图片、画布、着色器、动画、服务以及无样式的基础组件。应用可以用 Go 编写,也可以用 TSX 编写并使用 Tailwind CSS 类名样式。nsgo 命令行工具负责构建、运行和测试应用,开发时支持热重载,并可为各平台生成发布包;测试既支持无窗口模式,也支持带截图的真实窗口测试。
项目仍处于早期阶段,尚无稳定版本和稳定 API。NSGo 视图也可嵌入已有的 iOS、Android 或 Go 桌面应用中。
核心功能
- 01使用 Go 编写的信号、memo 和 effect 响应式状态
- 02flexbox 与 grid 布局,由各平台原生视图渲染
- 03支持 iOS、Android、macOS、Windows、Linux 和 Web
- 04可用 TSX 配合 Tailwind CSS 类名编写应用
- 05支持无窗口测试,也支持带截图的真实窗口测试
- 06开发时热重载,并可为各平台生成发布包
适用场景
- 用 Go 开发在各平台都具有原生外观的跨平台应用
- 在已有的 iOS、Android 或桌面应用中嵌入 Go 构建的界面
- 希望采用 NSH 设计模式但不想编写 Rust 的团队
快速上手
- 1
检查环境要求:macOS,安装 Xcode 与 Go 1.26 或更高版本
- 2
将 nsgo 工具添加到你的模块中
go get -tool github.com/oneo-me/nsgo/cmd/nsgo - 3
使用 dev 命令运行一次应用
go tool nsgo dev
使用前须知
- NSGo 尚处于早期阶段,还没有正式发布版本或稳定的 API。
- 完整的开发目标需要在安装了 Xcode 的 macOS 上进行。
- 部分目标需要额外工具,例如 Android 需要 adb,x86_64 模拟器需要 Android NDK。
收录于专题
标签
常见问题
- nsgo 是什么?
- 用 Go 编写应用逻辑、由各平台原生控件渲染的跨平台 UI 引擎。 NSGo 让开发者用 Go 编写用户界面。应用逻辑、由信号、memo 和 effect 构成的响应式图,以及 flexbox 与 grid 布局都在 Go 中运行,各平台则使用自身的原生视图和文本绘制界面,而不是自绘画布。它是 Rust 框架 Native Shell(NSH)的 Go 移植版,设计思路相同。
- nsgo 可以免费使用吗?用的什么许可证?
- nsgo 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- nsgo 还在维护吗?
- 活跃维护中。nsgo 最近一次提交是在 2026年11月6日。
- nsgo 适合用来做什么?
- 用 Go 开发在各平台都具有原生外观的跨平台应用 在已有的 iOS、Android 或桌面应用中嵌入 Go 构建的界面 希望采用 NSH 设计模式但不想编写 Rust 的团队
- nsgo 怎么安装和运行?
- 检查环境要求:macOS,安装 Xcode 与 Go 1.26 或更高版本 将 nsgo 工具添加到你的模块中: go get -tool github.com/oneo-me/nsgo/cmd/nsgo 使用 dev 命令运行一次应用: go tool nsgo dev
- 在哪里获取 nsgo?
- 源代码和安装说明在 GitHub 上:https://github.com/oneo-me/nsgo
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用纯 Python 构建 Web、桌面和移动应用的框架,无需前端经验。
用 TypeScript 组件在掌机、桌面和嵌入式屏幕上绘制原生像素的 UI 运行时,没有 DOM 与 WebView。
用 JavaScript 或 TypeScript 直接调用原生 API,构建 iOS、Android 和 visionOS 原生应用的框架。
面向 Go 的跨平台 GUI 工具包与应用 API,可用一套代码构建桌面和移动应用。
用 Elixir 声明式构建原生桌面应用的库,界面由 Rust 编写的 GPUI 渲染。