👓 超棒的 Electron.js 替代方案
Electron 替代方案的精选列表。
Electron 是一个开源框架,用于使用 JavaScript、HTML 和 CSS 等 Web 技术创建桌面应用程序。它结合了 Chromium 渲染引擎和 Node.js 运行时。 避免使用Electron或考虑其他替代方案的一些充分理由:
- 体积庞大
- 资源(内存)占用高
- 源代码保护问题
- 系统中可能已有可用的Web组件
- Electron应用无法提交到Apple应用商店
- 资源占用最小化
- 开发平台如Kodular的无代码平台、Outsystems的低代码平台、Astra DB的数据库即服务、后端即服务、移动即服务、Figma的前端即服务、银行即服务等
- 可视化编程范式(包括开发平台、Blockly、无服务器、dbdiagram以及elm、Python、V等编程语言的解决方案或技术)
- 虽然可以用Electron-js开发游戏,但不推荐用于正式的游戏开发
- 可以使用JS库和Electron-js创建数据分析和统计仪表盘,但也不推荐
👓 Electron.js的替代方案 ⚛
C#(.Net)
- Orleans:.NET的云原生应用框架
- Avalonia:Avalonia UI创建像素完美的原生多平台.NET应用
- Uno:使用C#和WinUI创建像素完美的多平台应用
- Chromely:使用原生GUI、HTML5、JavaScript和CSS在.NET/.NET Core/.NET 5上构建HTML桌面应用
- SpiderEye:使用webview UI的跨平台.Net Core应用
- Photino.NET:Photino使用操作系统内置的基于WebKit的浏览器控件,适用于Windows、macOS和Linux。Photino是最轻量级的跨平台框架。与Electron相比,Photino应用最多可小110倍!同时系统内存占用也大大降低
- foton:由Integrative Software LLC及贡献者用C#编写的Electron替代方案原型
C/C++
- Qt:Qt(发音为"cute")是免费开源的跨平台软件,用于创建图形用户界面和跨平台应用
- wxWidgets:wxWidgets是一个C++库,允许开发者使用单一代码库为Windows、macOS、Linux和其他平台创建应用。它有流行的Python、Ruby、Lua、Perl等多种语言绑定
- sciter:用于现代UI开发的可嵌入HTML/CSS/JavaScript引擎
- Ultralight:适用于应用和游戏的超快速、超轻量、符合标准的HTML渲染器。基于WebKit,支持大多数现代HTML5、CSS和JavaScript功能,同时保持轻量和可配置
- Webview:小型跨平台webview库,在macOS上使用Cocoa/WebKit,在Linux上使用gtk-webkit2,在Windows 10上使用Edge
- Molybden:用于使用HTML/CSS/JavaScript GUI构建现代安全的跨桌面应用的SDK
- Saucer:🛸 使用C++的Web前端构建下一代桌面应用
- tiny:Electron的一个小型替代方案
- UnityHubNative:用C++编写的Unity Hub原生替代方案。UnityHubNative是一个轻量级的C++ / wxWidgets替代方案,替代了不必要的重量级官方Unity Hub。它使用wxWidgets构建,这意味着它使用所有平台上的原生GUI组件,而不是像官方Electron hub那样使用重量级Web组件。它启动速度快得多,内存和CPU占用更少,总大小只是官方Unity Hub的一小部分
Crystal
- Crystal Webview:Crystal语言对webview的绑定,webview是一个小型跨平台webview库,在macOS上使用Cocoa/WebKit,在Linux上使用gtk-webkit2,在Windows 10上使用Edge
Dart
- flutter:Flutter是Google的开源框架,用于从单一代码库构建美观、原生编译的多平台应用
Delphi
- FMX (FireMonkey):FireMonkey®框架是RAD Studio、Delphi和C++Builder背后的应用开发和运行时平台。FireMonkey专为团队构建适用于Windows、OS X、Android和iOS的多设备真正原生应用而设计,可快速将应用推向应用商店和企业
Elm
- Elm UI:用于使用Elm制作Web应用的UI库
Go
- lorca:使用 Go + HTML5 构建跨平台现代桌面应用程序。
- wails:使用 Go 创建漂亮的应用程序。
- muon:用 Golang 编写的 Electron 轻量级替代品,约 300 行代码,使用 Ultralight 替代 Chromium。
Guile
- guile-pstk:修复以在现代 GNU Guile 上正常工作的 PS/TK 版本。
- guile-webview:用于在 GNU Guile 中使用 libwebview 的包装器。
Haskell
- Fudgets:Fudgets 主要是用于 Haskell 和 X Windows 系统的图形用户界面工具包。Fudgets 还可以轻松创建通过互联网通信的客户端-服务器应用程序。它在 Unix 上运行,但不在 Windows 上运行。
- Keera Hails:Keera Hails 是一个使用规则或关系连接变化值的库。Keera Hails 与后端无关,不专用于 GUI;它有 Gtk+ 的后端,也有硬件(Wiimote)、文件、套接字和 FRP 驱动的网络(使用 Yampa)的后端,以及 wx、qt、HTML DOM(使用 GHCJS)和 Android 小部件工具包的实验性后端。它已在中等规模(10K-20K 行代码)的应用程序中商业生产使用。
- Threepenny-gui:Threepenny-gui 是一个使用网络浏览器作为显示的 GUI 框架。它支持函数式响应式编程。
- webviewhs:webviewhs 是 Serge Zaitsev 创建的 webview 库的 Haskell 绑定。这个绑定允许创建丰富的基于 Web 的 UI 体验,并包裹在 Haskell 强大的类型安全拥抱中。它使用 macOS 上的 Cocoa/WebKit、Linux 上的 gtk-webkit2 和 Windows 上的 MSHTML(IE10/11)来渲染 UI。
- Monomer:Monomer 是一个易于使用的跨平台 GUI 库,用于编写原生 Haskell 应用程序。它提供了类似于 Elm 架构的框架,允许使用可扩展的小部件集合用纯 Haskell 创建 GUI。
Java
- Swing:Swing 是 Java 的 GUI 小部件工具包。它是 Oracle 的 Java 基础类(JFC)的一部分 – 为 Java 程序提供图形用户界面(GUI)的 API。
- OpenJFX 或 JavaFX:JavaFX 是一个开源的、下一代客户端应用平台,适用于基于 Java 构建的桌面、移动和嵌入式系统。它是由许多个人和公司合作努力的结果,目标是为开发丰富的客户端应用程序提供现代、高效和功能齐全的工具包。
- webview:Android Studio 的模板项目,允许您在几分钟内创建 Android webview 应用程序。您可以使用它为您的网站创建一个简单的应用程序,或作为基于 HTML5 的 Android 应用程序的起点。
JavaScript
- Sciter.JS:是一个5MB的HTML/CSS/JS(ES6)运行时,旨在直接替代Electron。
- electrino:基于Web技术构建的桌面应用运行时,使用系统自带的Web浏览器引擎。
- nidium:一个强大的现代移动应用渲染引擎。与许多解决方案不同,nidium不依赖WebView或原生操作系统组件。相反,它使用自己的高性能渲染引擎来绘制自定义组件。
- modern-hta:在HTML应用程序中运行现代代码。
- React Native Desktop:基于Qt框架的跨平台React Native桌面版。
- NodeGui:由Qt5驱动,包括NodeGui-React、Vue NodeGui、Svelte-NodeGui。
- Astrodon:基于Tauri的Deno桌面应用框架(尚未完成)目前未维护。
- webview_deno:🌐 webview的Deno绑定,用于创建基于Web的桌面GUI的小型库。
- DeskGap:捆绑Node.js运行时,并将HTML渲染留给操作系统的WebView。
- NW.js:类似于Electron,提供源代码保护。
- Neutralinojs:将Chromium模块替换为用户的Web浏览器或内置浏览器组件。Node运行时被替换为轻量级Web服务器,暴露原生操作系统功能。
- Proton Native:对桌面应用做了React Native对移动应用所做的事,基于libui-node。
- Graffiti:node.js和deno的HTML/CSS引擎。
- Gluon:使用系统安装的普通浏览器(非WebView)和NodeJS,还支持Firefox。
- Avernakis:Avernakis SDK的Node.js插件,使用TypeScript开发具有强大UI套件的现代桌面应用。
- WelsonJS:使用JavaScript、HTML和CSS基于WSH/HTA或GTK构建Windows桌面应用。
- Vuido:基于Vue.js创建原生桌面应用,使用libui-node。
- quasar:基于Vue.js的框架,让Web开发者能快速创建响应式网站/应用。
Julia
- MouseTrap:为Julia设计的GUI引擎。
Kotlin
- Compose Multiplatform:用于在多个平台上共享UI的声明式框架。基于Kotlin和Jetpack Compose。由JetBrains和开源贡献者开发。
Nim
- nimx:Nim语言的桌面、移动和Web GUI框架。
- NiGui:跨平台的桌面GUI工具包。
- ui:libui的封装。可能成为Nim官方UI库的起点。
- iup:IUP的封装。可能成为Nim官方UI库的起点。
- SDL2:SDL 2.x的官方封装。
- SDL2:SDL 2的封装。
- Owlkettle:基于GTK的声明式用户界面框架。
- wNim:Nim的Windows GUI框架。
- gintro:基于GObject-Introspection的高级GTK3/GTK4绑定,适用于Nim。
- nimqml:Nim编程语言的Qt QML绑定。
- Neel:用于创建类似Electron的HTML/JS GUI应用的库。
- nimview:基于Nim/Webview的辅助工具,用于使用Nim和HTML/CSS创建桌面/服务器应用。
- webgui:基于Web技术的跨平台GUI框架,带有暗色主题。
- fidget:基于Figma的UI库,适用于Nim,具有HTML和OpenGL后端。
- nsciter:https://sciter.com 的高级和低级Nim封装。
- imgui:通过cimgui为Nim提供的ImGui绑定。
- nimAntTweakBar:AntTweakBar的封装。
- ggplotnim:ggplot2在Nim中的移植版本。
- plotly:Nim的plotly封装。
- graph:Nim中的基础绘图库。
- nimetry:纯Nim实现的简单绘图库。
- nimgraphviz:用于使用GraphViz和DOT创建图形的Nim库。
无代码/低代码
Perl
- Gtk:Gtk3 - Perl对gtk+工具包3.x系列的接口。
- Prima:Prima - 一个Perl图形工具包。
- Perl Executing Browser:Perl执行浏览器(PEB)是Perl 5桌面应用程序的HTML用户界面。它是一个C++ Qt 5应用程序,将本地Perl脚本作为子进程运行,无需服务器。受Electron和NW.js启发,PEB是另一种在桌面应用程序中重用Web技术的方式,使用Perl而不是Node.js来完成繁重的工作。
- Tk:Perl/Tk是一个用于在Unix和Windows 95/NT上编写带有图形用户界面(GUI)的Perl程序的扩展。Tk最初是作为Tcl语言的扩展开发的,用于Unix上的X Window系统。
- Tkx:Tkx - 又一个Tk接口。
- Wx:Wx模块是wxWidgets(以前称为wxWindows)GUI工具包的封装。
PHP
- NativePHP:NativePHP是一个新框架,用于使用PHP、HTML、CSS和JavaScript快速构建丰富的原生桌面应用程序。
- PHP TkUI:使用PHP和Tcl/Tk构建原生桌面应用程序。
Python
- fbs:Python和Qt非常适合编写轻量级桌面应用程序。但打包、安装程序、代码签名和自动更新却很麻烦。fbs解决了这些问题,为你节省数月的开发时间。
- PyQt:PyQt是跨平台GUI工具包Qt的Python绑定,以Python插件形式实现。PyQt是由英国Riverbank Computing公司开发的自由软件。
- PySide:PySide是跨平台GUI工具包Qt的Python绑定。
- Kivy:开源Python应用开发框架。轻松构建和分发漂亮的Python跨平台GUI应用。Kivy可在Android、iOS、Linux、macOS和Windows上运行。
- PyGUI:开发跨平台Python风格GUI API的项目。
- Flet:用Python构建Flutter应用的最快方法。
- Eel:一个小型Python库,用于创建简单的类Electron HTML/JS GUI应用。
- wxPython:Python语言的跨平台GUI工具包。使用wxPython,软件开发人员可以为其Python应用创建真正的原生用户界面,几乎无需修改即可在Windows、Mac和Linux或其他类Unix系统上运行。
- Tkinter:Tkinter模块或"Tk接口"是Python与Tk GUI工具包的标准接口。Tk和Tkinter在大多数Unix平台以及Windows系统上都可用。Tk本身不是Python的一部分;它由ActiveState维护。
- pywebview:使用JavaScript、HTML和CSS为Python程序构建GUI。
- Pysimplegui:PySimpleGUI使用Python快速轻松地创建图形用户界面(GUI)!
- NiceGUI:NiceGUI是一个易于使用的基于Web的Python UI工具包,可以自托管并在更新源代码时自动刷新,提供丰富的UI小部件集。
R
- gWidgets:在R中编写图形用户界面(GUI)的API。该包是跨平台(Linux/Mac/Windows)和跨工具包(RGtk2、qtbase、tcltk)的。
- fGui:通过自动为函数参数创建小部件,快速为你创建的函数创建GUI界面。自动解析帮助例程,为这些参数提供上下文相关的帮助。该界面本质上是对一些Tcl/Tk例程的包装,以简化和促进GUI创建。更高级的Tcl/Tk例程/GUI对象可以被整合到界面中,以便更有经验的用户进行更大程度的定制。
- Shiny:轻松创建数据科学Web应用,无需妥协
Rebol
- Native Gui:R3 GUI的主要目标在先前文档中已明确说明。但为确保我们都保持同步:GUI旨在使简单的应用变得简单,复杂的应用成为可能。也就是说,你真的可以用几行GUI方言编写一个有用的应用,而一个全面的应用可能只需要几十页代码。
Red
- Drawing:Draw是Red语言的一种方言(DSL),提供了一种简单的声明式方法来指定2D绘图操作。这些操作以有序命令列表(使用值块)表示,可以在运行时自由构建和更改。
- Native GUI:Red/View(或简称View)组件是Red编程语言的图形系统。
- Layout:VID代表可视化界面方言。其目的是在Red View引擎之上提供一种简单的方言(DSL)来描述图形用户界面。
Ruby
- Glimmer:用于使用Ruby构建GUI应用的领域特定语言和元框架,支持各种GUI库以及Web绑定。
- qtbindings:Qt的Ruby绑定。
- tk:Tcl/Tk的Ruby绑定。
- ruby-gnome:GNOME/GTK3的Ruby绑定。
- JRubyFX:JavaFX的JRuby包装器。
- traveling-ruby:将Ruby应用打包成可执行文件的运行时。
Rust
V
- ui:Isaiah 为 V 语言开发的跨平台 GUI 库。其语法灵感来源于 Java 的 Swing。
- mui:V 语言的跨平台 UI 库
- viup:跨平台 UI 库 IUP 的 V 语言封装。
- vi-v:Vi-v 是 V 语言的可视化脚本 UI。它允许任何人无需extensive编程技能即可轻松创建自己的程序。
- vxui:vxui 是一个跨平台桌面 UI 框架,使用浏览器作为屏幕,使用 V 语言作为后端。它依赖于 Websocket,无需 http/https,无需 web 服务器!
可视化编程
- Blockly:Blockly 是 Google 开发的可视化编程编辑器,使用拖放块。它是驱动世界上最流行的编程教育程序的引擎。
📖 相关工作
- Livecode:轻量级语言,具有原生 GUI、集成 IDE 和可视化界面构建器。
- Positron:Electron 应用列表,用于避免使用它们,以及一些替代方案。
- Awesome Alternatives to Electron Apps:Electron 是一个应用平台,在软件开发世界中像癌症一样蔓延,使你强大的计算机变得缓慢和卡顿。有时用 Electron 制作的应用很有用。这个列表包含了替代内存消耗大、不环保的 Electron 软件的好选择。
- 浏览器引擎比较:浏览器引擎(也称为布局引擎或渲染引擎)是每个主要网络浏览器的核心软件组件。浏览器引擎的主要任务是将 HTML 文档和网页的其他资源转换为用户设备上的交互式可视化表示。除了"浏览器引擎"外,还常用两个相关术语:"布局引擎"和"渲染引擎"。理论上,布局和渲染(或"绘制")可以由不同的引擎处理。但实际上,这些组件紧密耦合,在浏览器引擎之外很少单独遇到。
- Web 到桌面框架比较:这个仓库旨在客观比较多个允许我们将网络应用"转换"为桌面应用格式的框架。
- Awesome-electronjs-hacking:关于 Electron.js(不)安全性的精选资源列表。
- Qt:Qt(发音为"cute")是免费开源的跨平台软件,用于创建图形用户界面以及跨平台应用程序。
- jscherer92/Quark:使用操作系统中的原生引擎创建浏览器技术应用程序。
- Xojo:构建原生、跨平台应用程序。适用于桌面、Web、移动和树莓派的快速应用程序开发。
- LambdaNative:LambdaNative 在 BSD 许可下免费提供,有extensive文档,托管在 GitHub 上。LambdaNative 可以从单一源代码构建在广泛平台上的原生应用程序,包括 iOS、Android、黑莓、OS X、Linux、Windows、OpenBSD、NetBSD、FreeBSD 和 OpenWrt。
- REVERY:快速、原生、跨平台 UI。
- 8th:8th 让你使用你喜欢的平台来编写和测试代码。只需一次点击,你就可以在任何 8th 支持的平台上生成适用于任何它支持的平台的可执行文件!
- CEF:Chromium Embedded Framework (CEF)。一个用于将基于 Chromium 的浏览器嵌入其他应用程序的简单框架。
- yue/yue:用于创建原生跨平台 GUI 应用的库。
- Godot:Godot 引擎 - 多平台 2D 和 3D 游戏引擎。
- HaxeUI:基于 Haxe 的跨平台(桌面、移动、网页)UI 框架
- HTA/HTML 应用程序:HTML 应用程序或"HTA"是一种 Microsoft Windows 程序,其源代码由 HTML、动态 HTML 和 Internet Explorer 支持的一种或多种脚本语言(如 VBScript 或 JScript)组成。HTML 用于生成用户界面,脚本语言用于程序逻辑。HTA 在没有互联网浏览器安全模型限制的情况下执行;事实上,它作为"完全受信任"的应用程序执行。
📚 注意事项
如果你的应用不需要任何平台交互,可以考虑使用渐进式 Web 应用PWA。
"渐进式 Web 应用可能无法取代所有类型的原生应用,但它们可以成为一些使用 Electron web 包装器技术编写的应用的可行替代品"。更多信息请参见: https://www.androidpolice.com/2020/05/27/google-chats-desktop-application-is-now-a-progressive-web-app/ 请看这里:Blazor,ElectronCGI。
❤ 贡献
awesome-electron-alternatives 欢迎贡献,但我建议先创建一个问题或在评论中回复,让我知道你正在做什么,这样我们就不会互相覆盖。
请阅读 CONTRIBUTING.md 了解本项目的详细信息。如果你有任何问题,请随时提出问题。欢迎通过贡献来改进这个列表!
📑 许可证
- 灵感来自 awesome 列表。
- Electron-alternatives 由 sudhakar3697 和贡献者以 MIT 许可证授权。
- 本项目的标志由 Electron-js 社区(品牌、开源项目)创作、创建或授权,但与本仓库没有直接关系。