流行前端桌面端框架对比和核心概念

145 阅读3分钟

Tauri 和 Electron 都是用于构建跨平台桌面应用的技术框架,它们有一些相似之处,但也存在一些重要的区别。 掌握三个核心概念即可:

主进程(main)

每个Electron应用都有一个单一的主进程,作为应用程序的入口点。主进程运行在Node.js 环境,因此可以使用Node.js的所有API能力。主进程并不在浏览器环境中运行,因此不进行页面渲染。

渲染进程(renderer)

渲染进程说白了就是平时的Web页面前端开发。每个Electron应用都会为每个打开的BrowserWindow生成一个单独的渲染器进程。但是渲染进程是无法直接调用Node.js的API的。

预加载脚本(preload)

为了让渲染进程与主进程进行通信从而形成一个整体,预加载脚本的作用就是他们之间的桥梁。预加载脚本与渲染进程共享同一个全局window,因此可以通过window来传递数据。但并不是简单地通过给window添加属性就能使用,以下方式是无法把preload.js共享给渲染进程使用的

image.png

一、相似之处

  1. 跨平台性:两者都可以让开发者使用 Web 技术(HTML、CSS、JavaScript)来构建适用于多个操作系统(如 Windows、macOS、Linux)的桌面应用程序。

  2. 基于 Web 技术栈:允许开发者利用熟悉的前端开发工具和技术进行开发,降低了学习成本和开发难度。

二、不同之处

  1. 性能和安全性

    • Tauri:声称具有更高的性能和更好的安全性。它通过使用系统原生的 WebView 组件和后端语言(如 Rust)来减少资源占用和提高安全性。Tauri 的后端使用 Rust 语言,这使得应用在安全性方面可能更有优势,因为 Rust 具有严格的内存安全和类型安全特性。
    • Electron:虽然也很强大,但由于其基于 Chromium 和 Node.js,可能会占用较多的系统资源。不过,Electron 拥有庞大的社区和丰富的生态系统,这在一定程度上弥补了性能方面的不足。
  2. 打包大小

    • Tauri:通常可以生成较小的安装包。因为它只包含必要的组件,而不是像 Electron 那样打包整个 Chromium 浏览器。
    • Electron:由于包含了 Chromium 浏览器,应用的安装包可能相对较大。
  3. 社区和生态系统

    • Electron:拥有非常庞大的社区和丰富的第三方库、插件。开发者可以很容易地找到各种解决方案和资源,加快开发进度。
    • Tauri:相对较新,社区和生态系统正在不断发展壮大中。虽然目前资源可能不如 Electron 丰富,但随着时间的推移,可能会逐渐改善。
  4. 开发难度

    • Electron:开发相对容易上手,文档丰富,教程众多。由于其广泛的使用,开发者遇到问题时更容易找到解决方案。
    • Tauri:由于使用 Rust 作为后端语言,对于不熟悉 Rust 的开发者来说,可能会有一定的学习曲线。但一旦掌握,也可以发挥 Rust 的强大优势。

总的来说,选择 Tauri 还是 Electron 取决于你的具体需求和开发团队的技术栈。如果你对性能和安全性有较高要求,并且愿意学习 Rust,那么 Tauri 可能是一个不错的选择。如果你更注重开发的便捷性和丰富的社区资源,Electron 可能更适合你。

预加载脚本会在渲染器的网页加载之前注入,预加载脚本的作用:

  • 增强渲染器:预加载脚本运行在具有 HTML DOM APIs 和 Node.js、Electron APIs 的有限子集访问权限的环境中。
  • 在主进程和渲染进程之间通信:使用 Electron 的 ipcMain 和 ipcRenderer 模块进行进程间通信(IPC)。

image.png