据我了解,Electron/NW.js 本质上只是打开一个包含所需内容的浏览器窗口,但是如果您获取一个网页并在 Chrome 中打开它并将同一页面推送到 Electron/NW.js,会有不同吗在性能?
性能是指 CSS 动画和 JS 执行速度。(页面加载时间不是特别感兴趣)
示例任务:
- (CSS) 当悬停在图像上时,它会增加 - FPS 下沉
- (JS+CSS) 当点击一个链接时,标准动作被取消并且页面滚动 - 从点击到开始滚动的时间,以及滚动时的 FPS
- (JS) 解析JSON字符串——字符串处理时间
我会很高兴以及猜想和有根据的答案。
理论上,Electron 和 NW.js 的性能应该可以与对应的桌面版 Chrome/Chromium 相媲美。我没有测试它,但我没有注意到我正在处理的应用程序的资源密集型部分有太大差异。
NW.js 0.22 之前的版本在编译为 V8 时性能受到显着影响,快照用于保护应用程序代码免遭反编译。自 0.22 版以来,此问题已得到修复。
据我所知,就性能而言,Electron 更快(从字面上看,应用程序启动和响应来自外部的请求仅快了几毫秒)。
发动机在发展方面的比较:
源代码保护
Electron 没有任何机制来保护你的源代码。鉴于 Asar 是一个简单的 tar 存档,事实上任何人都可以将您的程序“解压”为普通存档并访问所有资源和源代码,因此 Asar 几乎不是一个可接受的安全性。
NW.js 允许您通过 V8 快照构建受保护的可执行文件。当然,此解决方案不会将 JavaScript 编译为本机代码(如文档所述),也不提供完整的源代码安全性。它基本上只是非常好的混淆代码。但如果唯一的选择是让源代码完全开源,那么许多开发人员会更喜欢 V8 Snapshot,即使考虑到大约 30% 的性能损失。 获胜者:NW.js
开始时间
我没有专门尝试测量应用程序启动时间,但我的个人经验是 Electron 应用程序在 Windows 和 OSX 上的启动速度明显更快。即使禁用 V8 快照,NW.js 应用程序的加载速度也会慢得多。 获胜者:电子
开源
当年,在 Node.js 发展停滞不前的时候,Electron 迈出了支持 IO.js 的大胆一步。这意味着 Electron 致力于支持高级 JavaScript 功能,而 NW.js 更专注于支持向后兼容性(至少在理论上)。
此外,人们不能不注意到 Electron 的高速发展。每周有超过 100 次提交,每月有 10 次发布。开发团队在github上积极解答问题。另一方面,NW.js 仍然是 0.15 版本,github 文档似乎已经过时了。例如,您经常会看到对名称“node-webkit”的引用,即使该项目在几年前已重命名。 获胜者:电子
成就列表
尽管 NW.js 的出现时间比 Electron 长,但据我所知,还有许多基于 Electron 的流行应用程序。从这个 NW.js 列表中,除了 Popcorn Time 和 Koala 之外,很难挑出任何重要的东西。另一方面,Electron 列表看起来更加可靠:- Atom - Slack - Visual Studio Code - Cocos Creator - Pixate Pixate 获胜者: Electron
所以我会大胆的选择Electron。