Some of the options I know,
- Deliver HTML/CSS/JS directly, without a backend
- Electron builder + MacOS + Docker with Wine
- Build for Window with Docker Wine
- Deliver shadow JAR / fat JAR
- Build on Travis CI / Appveyor + GH_TOKEN (I don't know how to do this)
What are other options, if I want to use web framework, but want to avoid Electron?
Top comments (6)
I have been using eel.js.
Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries.
Its pretty lightweight.
are you using eel with frontend framework js?
I've been using Proton Native, recently. It's not ready for general use---you can't set the window title/icon, the it doesn't know about word wrap, you can't disable controls, there's no easy way to package it for a non-technical user, and so forth---but if you're looking at this for a simple project and are willing to work with React (it's based on React Native), it has been working pretty well for me.
The only other decent "solution" I've found is to find a library for your language that lets you use a portable "widget toolkit," like wxWidgets, YUE, GTK, QT, or probably a bunch of others I'm forgetting. Those work well enough, but you usually end up writing code to lay out your window and need to get the toolkit installed on the user's machine.
Depending in the language you want to use as a backend, you have quite alot of options.
Electron- compatible with python, golang, node.js (from my expirience)
Qt framework - can work with python(pyQt5, pyQt4), and can also go with c++/C if you are hardcore.
Tkinter- for python, as far as i know, i havent used it.
Java - Java Swing, JavaFX, and the old awt as far as i remember.
There is Proton, similar to electron, but it is not production ready, as mentioned in other comments.
I hope i gave you some options :)
I still prefer NWjs. I can use node modules anywhere in my code without worrying about the server/client split.
I am sorta new at this so I'm not 100% sure but I think react is one.