GitHub Electron (dříve Atom Shell) umožňuje vytvářet cross-platform desktopové aplikace v HTML, CSS a JavaScriptu. VS Code, Slack i Atom — všechny běží na Electronu.
Web technologie na desktopu¶
Electron kombinuje Chromium renderer s Node.js runtime. Výsledek? Plnohodnotná desktopová aplikace s přístupem k file systému, systémovým notifikacím, nativním menu a tray ikonám — vše v JavaScriptu.
GitHub vyvinul Electron pro svůj editor Atom a následně ho open-sourcoval. Dnes na Electronu běží VS Code, Slack, Discord, WhatsApp Desktop a stovky dalších aplikací.
Architektura: Main a Renderer process¶
Electron má dva typy procesů:
// Main process (main.js)
const { app, BrowserWindow } = require('electron');
app.on('ready', () => {
const win = new BrowserWindow({ width: 1200, height: 800 });
win.loadURL('file://' + __dirname + '/index.html');
});
Main process — spravuje okna, systémové interakce, lifecycle aplikace. Jeden per aplikace.
Renderer process — každé okno je separátní Chromium renderer. Může používat Node.js API přes IPC komunikaci s main procesem.
Výhody a kritika¶
Výhody Electronu jsou zřejmé:
- Jeden kód pro Windows, macOS a Linux
- Obrovský ekosystém npm balíčků
- Rychlý prototyping — web vývojář zvládne desktop app
- Chromium DevTools pro debugging
Kritika je také oprávněná:
- Vysoká spotřeba RAM (každá app = Chromium instance)
- Velká velikost distribuce (~100MB minimum)
- Pomalejší start oproti nativním aplikacím
- Nekonzistentní look & feel s platformou
Distribuce a aktualizace¶
Electron poskytuje nástroje pro profesionální distribuci:
- electron-packager** — zabalení do platform-specific binárky
- electron-builder** — instalátory pro Windows (NSIS), macOS (DMG), Linux (deb/rpm)
- autoUpdater** — automatické aktualizace (Squirrel framework)
- Code signing pro důvěryhodnou distribuci
Závěr: pragmatická volba¶
Electron není ideální pro každou desktopovou aplikaci, ale je pragmatická volba pro týmy s webovými zkušenostmi. Pokud vaše aplikace nevyžaduje extrémní výkon nebo minimální footprint, Electron vám ušetří měsíce vývoje oproti nativním alternativám.