[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fphktq3enrqx7":3},{"code":4,"message":5,"data":6,"timestamp":36},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":22,"summary_md":23,"topic":24,"github_topics":27,"license":32,"homepage":33,"updated_at":34,"history":35},"longbridge\u002Fnsh",14,"NSH runs modules written in TSX — natively on iOS, Android, macOS, Windows, Linux, GPUI and the web","Rust",620,48,58,10,[16],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},50151934,"Native Shell – a Rust runtime for dynamically delivered native UI",2,1,"2026-10-19","用 TSX 或 Rust 写一套界面，靠各平台自己的原生控件渲染 iOS、Android、桌面和网页。","NSH 想让你只写一份界面，就能在手机、桌面和浏览器上以原生控件呈现。项目还非常早（当前版本 0.1.1），所以下面更像是对设计思路和边界的梳理，而不是可以放心上线的背书。\n\n## 解决什么问题\n\n跨平台 UI 通常只有两条路：为每个平台写原生代码，或者接受 WebView 渲染出来的界面——样子和手感都不像宿主平台。你真正想要的是共享一套组件、状态和布局规则，同时让菜单在桌面上像弹出层、在手机上像底部面板，文字输入走系统自带键盘。NSH 改的正是这一步：同一套组件分别通过 iOS 的 UIKit、Windows 的 Win32、Linux 的 GTK 4 以及网页的 HTML 渲染，同时共享响应式引擎和 flexbox\u002Fgrid 布局。最后同一份代码既可作为独立应用打包，也能嵌入已有的原生应用。\n\n## 有什么不同\n\n有趣的地方在于把「怎么写」和「怎么画」拆开了。你可以整款应用都用 Rust 写，也可以用 TSX 写界面，或者混合起来让 TSX 导入 Rust 组件。TSX 这边，引擎在运行时加载模块，作者把它定位为插件和 AI 生成 UI 的载体，以签名包形式分发，在宿主配置好的沙箱里运行。一个 Rust 构建的 `nsh` CLI 覆盖初始化、运行、热更新和打包。\n\n两个取舍比较明显。第一，设计上刻意不带样式：`nsh\u002Fbase` 只提供行为和可访问结构，颜色、字体、间距和动效都由应用自己决定，TSX 侧可以借助 Tailwind 和源自 shadcn 的主题变量。这换来了应用自己的外观，代价是要自己拼一套组件库。第二，每个桌面端用自己的后端，所以 AppKit、Win32、GTK 4 之间行为可能有差异；GPUI 后端是额外目标，不是替代方案。运行时加载的签名 TSX 包是 README 描述的能力，这里无法验证它在实际使用中的表现。\n\n## 谁值得试\n\n适合：已经熟悉 Rust 和 TypeScript 的团队，要做一款在多个平台上都显得原生的应用，并且愿意基于基础原语自己把控视觉设计。「嵌入已有原生应用」的示例是它相比从零起一个工具包最有说服力的理由。不适合：想要开箱即用的完整控件、且 API 已经稳定的人。0.1.1 的阶段意味着框架还很早，而不带样式的基座意味着要做出好看的界面，前期得投入不少设计工作，之后才能体现出框架的价值。\n\n## 使用条件与边界\n\n各平台的门槛很具体：iOS 15+、Android 9（API 28）+、macOS 14+、Windows 10 1809+、Linux 需要 GTK 4.14+，GPUI 在 Linux 上还需要 Vulkan。这些限制会挡掉老旧设备，也会挡掉一些长期不升级的 Linux 桌面；为 iOS 或 Android 构建仍然需要 Xcode 或 Android SDK。Rust 路线要同时装 `nsh` 和 Rust，TSX 路线写代码只需要 `nsh`；安装方式有 macOS\u002FLinux 的脚本、Homebrew 和 Windows 的 PowerShell。\n\n长期维护是更值得掂量的问题。README 说明了 TSX 的热更新，但 Rust 改动需要重新构建并重启；安装脚本可以更新 CLI，以及放在 `~\u002F.nsh\u002Fsource` 下的源码检出。组件行为和主题 API 是否稳定到不用频繁重写，仅凭 README 无法判断；在真正投入前，建议先看[安装与平台说明](https:\u002F\u002Fnsh.dev\u002Fdocs\u002Finstallation)和[目标与设计原则](https:\u002F\u002Fnsh.dev\u002Fdocs\u002Fgoals)。\n\n## HotRepo 点评\n\nHotRepo 在新项目榜（rust 语言，#14）记录到 2026-10-25 共 614 个 star，覆盖范围只有 2026-10-24 到 2026-10-25 两天。这是一个带日期的快照，不是增长曲线；对一个十天天龄的仓库，仅凭两个观察日无法判断热度能否持续。设计值得一读，API 值得核对：具体要确认的是，不带样式的 `nsh\u002Fbase` 原语加主题变量，是否足以支撑你真正要做的那些界面。",{"slug":25,"name":26},"developer-tools","开发工具",[28,29,30,31],"cross-platform","gui","native","nsh","NOASSERTION","https:\u002F\u002Fnsh.dev","2026-10-25T02:51:28Z",[],1792921607]