3 ms·
Electron is cancer. The last time I tried vue+electron was about two years ago: https://gitlab.com/djsumdog/tagster https://gitlab.com/djsumdog/tagster Over
by djsumdog 7y ago
Electron is cancer.
The last time I tried vue+electron was about two years ago:
https://gitlab.com/djsumdog/tagster https://gitlab.com/djsumdog/tagster
Over half, HALF of that code is electon boiler plate:
https://github.com/SimulatedGREG/electron-vue https://github.com/SimulatedGREG/electron-vue
That's worse than Rails back in the 2000s. It's a bad pattern and a code smell.
Electron doesn't contain a toolkit of components. Last time I check, Atom's UI wasn't broken apart into its own package (it might be now). That's part of why all electron apps look entirely different .. and bundling each set of HTML components with an electron web browser involves insane amount of packing tools.
I rewrite that app and others in PyQT5. Here's one of them:
https://gitlab.com/djsumdog/mpvbuddy https://gitlab.com/djsumdog/mpvbuddy
So much cleaner. The code in the project is almost all my code. There's very little boiler plate. The dependencies can easily be updated. The Qt5 layer is entirely abstracted by its Python packages or the system Qt5 packages.
I like Qt5 but I can understand the frustration. Your model isn't tied to your data. You have to tell Qt when your data has changed and emit those changes because it's all Retained Mode. Web web browser frameworks like React/Vue and others, you get system where the data is updated with the model (thanks to Shadowdoms or other tricks) and that is something missing in the native toolkit space. Most of the immediate mode GUI toolkits are minimalist and meant for games.
Divinci Resolve is made in Qt5 and is cross platform (I think they even have a Linux port now).
I know Qt5 has its own issues with portability and packaging, but I still prefer to build Qt5 apps over anything in electron. There's no reason to package an entire fucking web browser and rendering image for each application you build. Electron is cancer.