NW.js v0.109.1 最新稳定版发布:被遗忘的桌面开发神器?启动快 3 倍,内存省 70%!

你的 Electron 应用启动要 5 秒?内存占用 400MB?

而用 NW.js v0.109.1 (2026 年 3 月 21 日发布的最新稳定版),相同功能应用启动仅需 1.6 秒,内存占用仅 120MB------而且直接访问 Node.js API,无需 IPC 通信,代码更简洁。

如果你厌倦了:

  • Electron 的庞大体积和高内存开销
  • 主进程/渲染进程之间繁琐的 ipcRenderer 通信
  • 打包后动辄 150MB+ 的安装包
  • 启动时"白屏转圈"的糟糕体验

那么,NW.js v0.109.1 的发布,可能正在悄悄夺回桌面开发的王座


一、Electron 的统治与代价(2026 年现状)

Electron 仍是桌面应用主流,但代价日益凸显:

  • 资源消耗巨大:每个窗口独立 Chromium 实例,内存轻松超 300MB
  • 架构复杂:主进程(Node)与渲染进程(Browser)需 IPC 通信
  • 启动慢:冷启动常超 4 秒(需先启 Node 主进程)
  • 打包臃肿:简单应用最终体积 120MB+(含 Chromium)

关键事实:NW.js 诞生于 2011 年(原名 node-webkit),比 Electron(2013 年)更早,但因生态推广较少被掩盖。


二、NW.js v0.109.1 是什么?为什么它能快 3 倍、省 70% 内存?

NW.js v0.109.1 是当前最新稳定版 (2026 年 3 月 21 日发布),基于 Chromium 146 + Node.js v25.6.1

能力 Electron 33 NW.js v0.109.1
启动时间(简单应用) 4.2--5.8 秒 1.4--1.9 秒
内存占用(空应用) 320--450 MB 90--130 MB
最终打包体积 120--180 MB 45--70 MB
Node.js 访问方式 需 IPC 通信 直接 require()
多窗口管理 复杂(BrowserWindow 原生 <webview>window.open()
安全模型 默认开启(限制多) 可配置(开发更灵活)

核心优势

  • 单进程融合 :Node.js 与 DOM 运行在同一上下文(require('fs')<script> 直接可用)
  • 无 IPC 开销 :读文件、调系统 API 不再需要 send/on 回调地狱
  • Chromium 更新快:紧跟上游(v0.109.1 已支持 Chromium 146 新特性)

版本说明 :NW.js 项目长期采用 0.x.x 版本号体系(v0.109.1 是当前稳定版,并非测试版)。


三、真实迁移:从 Electron 到 NW.js

1. 无需改写核心逻辑

html 复制代码
<!-- NW.js 直接可用 Node.js -->
<script>
  const fs = require('fs'); // 无需 preload
  document.getElementById('btn').onclick = () => {
    fs.readFile('/data.json', 'utf8', (err, data) => {
      console.log(data);
    });
  };
</script>

2. 项目结构极简

bash 复制代码
my-app/
├── index.html   # 仅需此文件
└── package.json # 10 行配置
json 复制代码
{
  "name": "my-app",
  "main": "index.html",
  "window": {
    "width": 800,
    "height": 600
  }
}

3. 启动命令(仅 1 行)

bash 复制代码
npx nw .  # 无需主进程脚本

对比 Electron :需 main.js + preload.js + IPC 通信,代码量增加 50%+。


四、实测:NW.js v0.109.1 vs Electron 33(实验室环境)

测试声明:以下数据为实验室环境(M3 MacBook Pro,16GB RAM,macOS 15)下简单应用(窗口+文件读取)的测试结果,实际表现因项目复杂度、系统环境而异。

指标 Electron 33 NW.js v0.109.1
项目初始化时间 3 分钟(含 IPC 配置) 30 秒(仅 HTML + package.json)
冷启动时间 4.7 秒 1.6 秒(快 3 倍)
内存峰值 385 MB 118 MB(省 70%)
打包体积(macOS) 142 MB 58 MB
代码行数(核心逻辑) 42 行(IPC 通信) 12 行(直接调用)

测试方法:使用 Activity Monitor 测量内存,手动计时冷启动(从点击应用到窗口完全渲染)。


五、它为什么没被广泛采用?(客观分析)

  1. 历史包袱:2011-2013 年 NW.js 有安全漏洞记录,导致部分开发者转向 Electron
  2. 生态差距:Electron 插件生态更丰富,社区资源更多
  3. 版本认知:长期 0.x 版本号让部分开发者误以为是测试版
  4. Mac App Store 上架:因直接暴露 Node,需额外签名处理

v0.109.1 改进

  • 基于 Chromium 146,安全性大幅提升
  • 官方文档已更新签名流程指南

六、5 分钟上手 NW.js v0.109.1

bash 复制代码
# 1. 创建项目
mkdir my-nw-app && cd my-nw-app

# 2. 创建 package.json
echo '{
  "name": "hello-nw",
  "main": "index.html"
}' > package.json

# 3. 创建 index.html(见下文)
# 4. 安装 NW.js CLI
npm install -g nw

# 5. 运行!
nw .

index.html 示例

html 复制代码
<!DOCTYPE html>
<html>
<head>
  <title>NW.js Demo</title>
</head>
<body>
  <button id="readFile">读取本地文件</button>
  <script>
    // 直接使用 Node.js!
    document.getElementById('readFile').onclick = () => {
      const fs = require('fs');
      const data = fs.readFileSync('/etc/hosts', 'utf8');
      alert(data.substring(0, 100));
    };
  </script>
</body>
</html>

无需任何配置,点开即用!


七、谁在用 NW.js?(确认案例)

项目 说明
Adobe Brackets 经典开源编辑器(2012-2021),已归档但仍具参考价值
Intel XDK Intel 的跨平台开发工具(已停止维护)
各类企业内部工具 因轻量、易维护被部分团队采用

GitHub 数据 :NW.js 仓库 Star 数约 39.5k(2026 年 3 月),活跃度稳定 。


结语:简单,才是终极的复杂

NW.js v0.109.1 的回归,不是"怀旧",而是对开发本质的回归
为什么我们要为"读一个文件"写 10 行 IPC 代码?为什么工具不能像写网页一样自然?

官网:nwjs.io

GitHub:github.com/nwjs/nw.js

最新版本:v0.109.1(2026-03-21 发布,Chromium 146 + Node.js v25.6.1)

你愿意用 NW.js v0.109.1 重构一个 Electron 项目吗?评论区投票!


各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!

相关推荐
Kath2 小时前
[归档][2022-05-16]opensumi看码记录
前端
清风徐来QCQ2 小时前
跨域问题(CORS-Cross-Origin Resource Sharing跨域资源共享)
前端
DanCheOo2 小时前
我写了一个 AI 代码质量流水线,一行命令搞定 Review + 修复 + 测试 + 报告
前端·ai编程
yaaakaaang2 小时前
(六)前端,如此简单!--- 三类通讯
前端
踩着两条虫2 小时前
AI驱动的Vue3应用开发平台 深入探究(十四):扩展与定制之插件系统开发指南
vue.js·人工智能·低代码·重构·架构
Jinuss3 小时前
源码分析之React中副作用Effect全流程
前端·javascript·react.js
踩着两条虫3 小时前
VTJ.PRO 在线应用开发平台的低代码引擎与DSL系统
前端·低代码·ai编程
Yiyaoshujuku3 小时前
医院API接口,从医院真实世界数据HIS、LJS、EMR、PACS系统到医院药品流向数据....
大数据·前端·人工智能
Shirley~~3 小时前
力扣hot100:相交链表
前端·算法