electron 是一个框架,使开发者能够将 web 技术(html、javascript、css)、node.js 及原生代码相结合,构建适用于 macos、windows 和 linux 的跨平台桌面应用程序。
electron 将 chromium、node.js 和编写自定义原生代码的能力结合到一个框架中,用于构建强大的桌面应用程序。
软件优势:
强大的生态系统: electron 可运行所有 npm 模块。 任何关于 node.js 的资源都适用于 electron。 此外,electron 自身也拥有一个蓬勃发展的生态,涵盖安装程序、更新程序、深度操作系统集成等众多功能。
丰富的内置功能: 过去十年,electron 的核心已经集成了大量原生功能,以满足您构建应用的需求。 electron 使用 c++ 和 objective-c 编写,提供了数十个简单易用的 api,可实现更深层次的操作系统集成,例如:为透明或异形窗口小部件进行高级窗口定制、从 apple 推送通知网络(apns)接收推送通知,或为您的应用定制 url 协议处理程序。
开源: 整个技术栈完全开源,您可以任意审查。 这确保了您可以自由地添加任何功能,或修复今后可能遇到的任何错误。
按需使用本机代码: 再次强调,electron 允许您混合使用 web 技术和 c++、c、objective-c、rust 等原生语言。 无论是使用 sqlite、整个大型语言模型 ,还是仅仅调用某个特定的原生 api,electron 都能轻松胜任。
1、企业级
electron 可靠、安全、稳定且成熟。 它是众多公司构建其旗舰级产品的首选框架。 we have a list of some of those companies on our homepage, but just among chat apps, slack, discord, and signal are built with electron. 在 ai 应用程序中,openai 的 chatgpt 和 anthropic 的 claude 都使用 electron。 visual studio code、loom、canva、notion、docker 以及无数其他领先的软件开发商都选择了 electron。
我们确实将使 electron 易于使用并为开发者带来愉悦体验作为一项优先事项。 这可能是 electron 如此受欢迎的主要原因——但保持 electron 活力和蓬勃发展的是维护者专注于使 electron 尽可能稳定、安全、高性能,并能够满足最终用户的关键任务型用例。 我们正在构建的 electron,适用于那些不允许出现无法修复的错误、未修补的安全漏洞和任何类型服务中断的场景。
2、成熟
据我们目前的估计,全球大多数台式电脑上都运行着至少一个 electron 应用。 electron 的发展得益于其维护者团队中的人才优先化,在管理持续维护方面培养了卓越且可持续的工程实践,并主动邀请选择 electron 的公司直接为该项目做出贡献。 我们是 openjs 基金会的一个影响力项目,该基金会本身也是 linux 基金会的一部分。 我们与 node.js、eslint、webpack 等其他基金会项目,以及 linux 内核或 kubernetes 共享资源和专业知识。
对于你这样的开发者,所有这些在实践中意味着什么?
可靠的发布时间表:electron 将与 chromium 的每个次要版本同步发布一个新的主要版本,通常和 chromium 在同一天发布。 为了实现这一目标,需要在构建流程、开发工具以及确保每周的实际工时上付出巨大努力。
去中心化决策:有时,选择一项技术也需要你选择一个人或一家公司。 相应地,这要求你相信该个人或公司永远不会崩溃、与你直接竞争,或者做出任何其他迫使你重新考虑整个技术栈的剧烈举动。 electron 由一组不同的公司(microsoft、slack/salesforce、notion 等)维护,并将继续欢迎更多有兴趣确保其“在决策桌上占有一席之地”的公司。
3、稳定性、安全性与性能
electron 通过将最新版本的 chromium、v8 和 node.js 直接与应用程序二进制文件打包在一起,在所有目标平台(macos、windows、linux)上提供出色的体验。 在运行和渲染具备极高稳定性、安全性和性能的 web 内容方面,我们目前认为该技术栈当属同类最佳。
何必打包所有
您可能会疑惑,既然大多数现代操作系统已经自带了浏览器和某种形式的 web 视图,为什么我们还要将 chromium 的 web 堆栈打包进我们的应用程序? 打包不仅会显著增加 electron 维护者的工作量,还会增加 electron 应用程序的总体积(大多数应用都大于 100mb)。 许多 electron 维护者都曾在开发中采用过嵌入式 web 视图,但后来他们认为,牺牲一定的磁盘空间和维护成本是值得的。
如果使用操作系统内置的 web 视图,您能使用的浏览器版本将受限于您需要支持的最低操作系统版本。 我们发现此方法存在以下问题:
稳定性: 现代 web 技术栈非常复杂,因此,您迟早会遇到 bug。 如果您使用操作系统的 web 视图,那么您唯一的解决办法就是让客户升级操作系统。 如果用户的机器无法升级(例如无法升级到最新的 macos 或 windows 11),您就不得不要求他们购买新电脑。 假如运气不好,您可能会因此失去一个主要客户,因为他们不可能仅仅为了让某个团队试用您初创公司的应用而升级数千台机器。 遇到这种情况,您将 无计可施 。 对于那些雇佣 electron 维护者的公司来说,即使出现这种情况的风险也是无法接受的。
安全性: 与通过发布应用更新修复稳定性错误类似,您也可以发布安全补丁,而无需让客户升级操作系统。 虽然操作系统供应商会优先更新其内置浏览器,但我们从未发现他们会同样及时地更新内置的 web 视图。 打包 web 渲染器可让您(开发者)掌控一切。
性能: 对于简单的 html 文档,内置 web 视图有时比捆绑了框架的应用占用资源更少。 但对于更大型的应用,根据我们的经验,最新版本的 chromium 能提供比内置 web 视图更好的性能。 您可能认为内置视图能与其他应用和操作系统共享许多资源,但出于安全考虑,应用必须在各自的沙盒中运行,彼此隔离。 这样一来,问题就变成了:操作系统的 web 视图是否比 chromium 性能更好? 从众多应用的实践来看,我们的经验是:打包 chromium 和 node.js 可以帮助我们打造更出色、性能更卓越的体验。
1、企业级
electron 可靠、安全、稳定且成熟。 它是众多公司构建其旗舰级产品的首选框架。 we have a list of some of those companies on our homepage, but just among chat apps, slack, discord, and signal are built with electron. 在 ai 应用程序中,openai 的 chatgpt 和 anthropic 的 claude 都使用 electron。 visual studio code、loom、canva、notion、docker 以及无数其他领先的软件开发商都选择了 electron。
我们确实将使 electron 易于使用并为开发者带来愉悦体验作为一项优先事项。 这可能是 electron 如此受欢迎的主要原因——但保持 electron 活力和蓬勃发展的是维护者专注于使 electron 尽可能稳定、安全、高性能,并能够满足最终用户的关键任务型用例。 我们正在构建的 electron,适用于那些不允许出现无法修复的错误、未修补的安全漏洞和任何类型服务中断的场景。
2、成熟
据我们目前的估计,全球大多数台式电脑上都运行着至少一个 electron 应用。 electron 的发展得益于其维护者团队中的人才优先化,在管理持续维护方面培养了卓越且可持续的工程实践,并主动邀请选择 electron 的公司直接为该项目做出贡献。 我们是 openjs 基金会的一个影响力项目,该基金会本身也是 linux 基金会的一部分。 我们与 node.js、eslint、webpack 等其他基金会项目,以及 linux 内核或 kubernetes 共享资源和专业知识。
对于你这样的开发者,所有这些在实践中意味着什么?
可靠的发布时间表:electron 将与 chromium 的每个次要版本同步发布一个新的主要版本,通常和 chromium 在同一天发布。 为了实现这一目标,需要在构建流程、开发工具以及确保每周的实际工时上付出巨大努力。
去中心化决策:有时,选择一项技术也需要你选择一个人或一家公司。 相应地,这要求你相信该个人或公司永远不会崩溃、与你直接竞争,或者做出任何其他迫使你重新考虑整个技术栈的剧烈举动。 electron 由一组不同的公司(microsoft、slack/salesforce、notion 等)维护,并将继续欢迎更多有兴趣确保其“在决策桌上占有一席之地”的公司。
3、稳定性、安全性与性能
electron 通过将最新版本的 chromium、v8 和 node.js 直接与应用程序二进制文件打包在一起,在所有目标平台(macos、windows、linux)上提供出色的体验。 在运行和渲染具备极高稳定性、安全性和性能的 web 内容方面,我们目前认为该技术栈当属同类最佳。
何必打包所有
您可能会疑惑,既然大多数现代操作系统已经自带了浏览器和某种形式的 web 视图,为什么我们还要将 chromium 的 web 堆栈打包进我们的应用程序? 打包不仅会显著增加 electron 维护者的工作量,还会增加 electron 应用程序的总体积(大多数应用都大于 100mb)。 许多 electron 维护者都曾在开发中采用过嵌入式 web 视图,但后来他们认为,牺牲一定的磁盘空间和维护成本是值得的。
如果使用操作系统内置的 web 视图,您能使用的浏览器版本将受限于您需要支持的最低操作系统版本。 我们发现此方法存在以下问题:
稳定性: 现代 web 技术栈非常复杂,因此,您迟早会遇到 bug。 如果您使用操作系统的 web 视图,那么您唯一的解决办法就是让客户升级操作系统。 如果用户的机器无法升级(例如无法升级到最新的 macos 或 windows 11),您就不得不要求他们购买新电脑。 假如运气不好,您可能会因此失去一个主要客户,因为他们不可能仅仅为了让某个团队试用您初创公司的应用而升级数千台机器。 遇到这种情况,您将 无计可施 。 对于那些雇佣 electron 维护者的公司来说,即使出现这种情况的风险也是无法接受的。
安全性: 与通过发布应用更新修复稳定性错误类似,您也可以发布安全补丁,而无需让客户升级操作系统。 虽然操作系统供应商会优先更新其内置浏览器,但我们从未发现他们会同样及时地更新内置的 web 视图。 打包 web 渲染器可让您(开发者)掌控一切。
性能: 对于简单的 html 文档,内置 web 视图有时比捆绑了框架的应用占用资源更少。 但对于更大型的应用,根据我们的经验,最新版本的 chromium 能提供比内置 web 视图更好的性能。 您可能认为内置视图能与其他应用和操作系统共享许多资源,但出于安全考虑,应用必须在各自的沙盒中运行,彼此隔离。 这样一来,问题就变成了:操作系统的 web 视图是否比 chromium 性能更好? 从众多应用的实践来看,我们的经验是:打包 chromium 和 node.js 可以帮助我们打造更出色、性能更卓越的体验。