Neutralinojs 轻量桌面应用框架技术调研
不捆绑 Chromium 和 Node.js 的极简桌面运行时
Neutralinojs 用系统自带 WebView 承载前端界面,以极小体积运行桌面应用,适合内部工具和对包体积敏感的场景。
Neutralinojs 轻量桌面应用框架技术调研
Neutralinojs 是 极简桌面应用运行时,使用操作系统自带 WebView 渲染 UI,内置轻量原生扩展(neutralino.* API),不捆绑 Chromium 与 Node.js。2026 年它仍是 Electron 的 最小体积替代 之一,适合内部小工具、启动器与对依赖敏感的场景。
一、 基本信息
| 维度 | 关键指标 / 描述 |
|---|---|
| 技术标签 | 桌面 / WebView / 轻量 / 无 Node |
| 开发商 | Neutralinojs 社区(Shalitha Suranga 等) |
| 官方网站 | https://neutralino.js.org/ |
| 官方文档 | https://neutralino.js.org/docs/ |
| GitHub 仓库 | https://github.com/neutralinojs/neutralinojs |
| 许可协议 | MIT License |
| 首次发布 | 2018 年 |
| 当前版本 | Neutralinojs 5.x(2026 年) |
| 支持平台 | Windows、macOS、Linux |
| 生态成熟度 | 中 |
二、 技术定位与简介
Neutralinojs 模型:
neutralino.exe(或平台二进制):极小原生宿主进程。resources/:HTML/CSS/JS 静态前端,无打包步骤强制要求。neutralino.js:前端 SDK,调用Neutralino.os、filesystem、window等 API。- 扩展:可通过 Native API 或自定义扩展增加能力(复杂度高于 Wails/Tauri)。
与 Electron 差异:无 Chromium/Node,安装包可 < 5MB,内存占用低。与 Wails 差异:无强类型 Go 绑定,后端逻辑需 JS 或外部进程。与 Tauri 差异:同样轻量,但 API 面更窄、生态更小。
适合:个人开发者小工具、H5 壳、教学演示、对 Electron 体积忍无可忍的轻量场景。
三、 快速上手安装说明
1. 安装 CLI
npm install -g @neutralinojs/neu
neu version2. 创建与运行
neu create myapp --template js
cd myapp
neu run3. 调用原生 API
// resources/js/main.js
Neutralino.init()
Neutralino.events.on('ready', async () => {
const info = await Neutralino.os.getEnv('PATH')
console.log(info)
})4. 构建发布
neu build --release
# 输出在 dist/4. 配置 neutralino.config.json
{
"applicationId": "js.neutralino.sample",
"defaultMode": "window",
"url": "/resources/index.html",
"nativeAllowList": ["app.*", "os.*", "filesystem.*"]
}四、 核心特性
1. 极小二进制
核心运行时 MB 级,适合 U 盘绿色软件。
2. 无 Node.js 运行时
前端为浏览器环境,不暴露 require('fs') 式 Node API。
3. 跨平台 WebView
Windows WebView2、macOS WKWebView、Linux WebKitGTK。
4. neu CLI
创建、运行、构建、更新 CLI 一体化。
5. 多种模式
window、browser、cloud、chrome 等运行模式。
6. 扩展机制
extensions/ 目录加载额外原生能力(进阶)。
五、 适用场景
1. 黄金适用场景
- 配置生成器、脚本启动器、内网小面板。
- 静态 H5 + 少量文件/系统调用。
- 教育、原型、个人开源工具。
- 对安装包体积与内存极度敏感。
2. 局限适用场景
- 大型商业桌面产品(生态与长期维护弱于 Electron/Tauri)。
- 复杂原生集成(蓝牙、驱动、深度 OS 集成)。
- 需要成熟自动更新、代码签名商业方案。
- 团队希望强类型后端(选 Wails/Tauri)。
六、 技术亮点
1. 学习与部署成本极低
neu create 后改 HTML 即可见窗口。
2. 资源占用小
空闲内存显著低于 Electron。
3. 前端技术无锁定
Vue/React 可构建后拷贝到 resources/,也可用纯静态页。
4. 开源 MIT
无厂商绑定,适合嵌入式分发。
5. 多模式灵活
同一套资源可窗口或浏览器模式运行。
七、 核心概念与架构
digraph Neutralino_Arch {
rankdir=TB
node [shape=box, style="rounded,filled", fillcolor="#f0f9ff"]
Resources [label="resources/\n(HTML/CSS/JS)", fillcolor="#bae6fd"]
NLJS [label="neutralino.js SDK"]
Core [label="neutralino binary\n(C++ runtime)"]
WebView [label="System WebView"]
Extensions [label="extensions/\n(optional)"]
OS [label="Desktop OS"]
Resources -> NLJS
NLJS -> Core
Core -> WebView
Core -> Extensions
WebView -> OS
}安全:nativeAllowList 限制前端可调用的原生 API 范围。
八、 技术局限与边界
- API 面较窄:高级系统能力需写扩展或调用外部程序。
- 生态规模小:插件、商业支持、Stack Overflow 答案少于 Electron。
- WebView 碎片化:与 Wails/Tauri 相同的跨平台 CSS/JS 差异。
- 无内置包管理器级更新:自动更新需自建。
- 调试体验:不如 Electron DevTools 一体化(仍可用 WebView 调试)。
- 大型前端工程:需自备 Vite/Webpack,Neutralino 不管 Bundler。
九、 生态地图
| 类别 | 代表 |
|---|---|
| CLI | @neutralinojs/neu |
| 前端 SDK | @neutralinojs/lib |
| 模板 | neu create --template react、vue、ts |
| 社区扩展 | GitHub neutralinojs-community |
| 对比参考 | Electron、Tauri、Wails、NW.js |
| 打包 | neu build、平台特定压缩 |
十、 生态集成
| 方向 | 说明 |
|---|---|
| Vite/React | 构建到 resources/,neutralino.config.json 指向 index.html。 |
| 本地存储 | Neutralino.storage 或前端 IndexedDB。 |
| 系统对话框 | Neutralino.os.showMessageBox、showOpenDialog。 |
| HTTP | 前端 fetch;跨域按 WebView 规则。 |
| 外部进程 | Neutralino.os.execCommand 调用 CLI 工具。 |
十一、 开发与工程化
1. 推荐结构
myapp/
resources/
index.html
js/
styles/
neutralino.config.json
extensions/ # 可选2. 开发循环
neu run 监听资源变化;Go/C++ 扩展改动需重编译。
3. 构建
neu build --release 生成各平台目录;自行签名与打包安装程序。
4. 版本升级
neu update 同步 CLI 与客户端二进制版本。
十二、 性能与安全
nativeAllowList最小权限,禁用未用filesystem.*等。- 避免
innerHTML注入导致 XSS 调用原生 API。 - 远程 URL 模式需严格 CSP 与 HTTPS。
- 大文件 IO 测试路径权限(沙箱、用户目录)。
- 发布关闭开发者工具入口(生产配置)。
十三、 技术对比
| 框架 | 体积 | 后端 | 生态 | 上手 |
|---|---|---|---|---|
| Neutralinojs | 极小 | 无/扩展 | 小 | 极易 |
| Tauri | 小 | Rust | 大 | 中 |
| Wails | 小 | Go | 中 | 中 |
| Electron | 大 | Node | 极大 | 易 |
| Photino | 小 | .NET | 中 | 中 |
十四、 最佳实践
- 先列所需原生 API,确认 Neutralino 内置支持再立项。
- 生产使用
window模式 + 本地resources,少依赖browser远程页。 - 前端用现代 Bundler 构建,资源路径相对
index.html。 - Windows 分发检测 WebView2;文档中写明系统要求。
- 敏感操作二次确认(文件删除、execCommand)。
- 锁定
neu与客户端版本,避免 API 漂移。 - 超出能力边界时及时迁移 Wails/Tauri,勿强行堆扩展。
十五、 学习与社区资源
- 官方文档:https://neutralino.js.org/docs/
- API 参考:https://neutralino.js.org/docs/api/overview
- GitHub:https://github.com/neutralinojs/neutralinojs
- neu CLI:https://github.com/neutralinojs/neutralinojs-cli
- 社区扩展:https://github.com/neutralinojs-community
- 对比文章:https://neutralino.js.org/docs/how-to/an-application-architecture-for-modern-apps