【发布时间】:2022-01-13 18:20:47
【问题描述】:
谁能告诉我们CEF和Electron有什么区别?
关于 Electron,既然 Electron 是基于 Chromium 的,为什么要使用 NodeJS 而不是直接使用 Chromium 中的 V8 引擎
【问题讨论】:
标签: node.js electron v8 chromium-embedded
谁能告诉我们CEF和Electron有什么区别?
关于 Electron,既然 Electron 是基于 Chromium 的,为什么要使用 NodeJS 而不是直接使用 Chromium 中的 V8 引擎
【问题讨论】:
标签: node.js electron v8 chromium-embedded
回答第二个问题 - NodeJs 是对 Chromium 引擎的补充,而不是在 Electron 中替代它。请通过this great article 了解框架内的进程通信。简而言之 - 那里有 2 个主要参与者:
关于框架之间的差异 - 这是一个广泛的问题,通常它们涵盖相同的需求,并且大部分差异都在技术方面:
那里没有明确的“赢家”或“输家”。上面的每一项(以及一些最重要的)都需要额外的研究,请记住您的用户群、相关技术堆栈的开发团队经验、应用程序复杂性等
【讨论】:
CEF 是最早封装 Chromium 功能并提供可供第三方应用程序使用的 API 的解决方案之一。 Chromium 是一个独立的桌面应用程序。 CEF 将其表示为一个框架。由于 Chromium 是使用 C++ 编写的,因此 CEF 代表了一个面向 C++ 开发人员的框架,但是对于 Java、.NET 和 Python 语言有很多端口。
CEF 的主要目的是让 C++ 开发人员将 Chromium 嵌入到他们的 C++ 跨桌面应用程序中并访问 Chromium 功能,如渲染(包括离屏)、DOM、V8、PDF 查看器、打印、网络请求/响应、cookie 等。
此类应用的示例包括 Steam、Spotify、Adoby Brakets 和 more。
考虑到 CEF 和 Electron 源代码非常相似,我可以假设:
Electron == CEF + Node.js
Electron 的主要目的是让 JavaScript 开发人员在 Chromium 之上构建跨平台桌面应用程序。 Electron 应用程序中的每个窗口都代表一个呈现特定网页或 HTML 的 Chromium 窗口。 Electron 应用程序的 GUI 是使用 HTML、CSS 和 JavaScript 构建的。逻辑(后端)使用 Node.js 编写。
如果您是 C++ 开发人员,CEF 适合您。它允许您将 Chromium 嵌入到现有的 C++ 桌面应用程序中并创建 Electron C++ 跨桌面应用程序。
如果您是一名 JavaScript 开发人员,想要使用 HTML、CSS、JavaScript GUI 创建跨桌面应用程序,并且不想学习更高效的技术和框架,例如 Qt、Gtk、Cocoa、 Java Swing/JavaFX/SWT、Flutter等
【讨论】: