Erfahrungen mit Electron und Webview
In einigen Projekten konnten wir wertvolle Erfahrungen mit dem Electron Framework sammeln. In diesem Blogbeitrag gebe ich einen Überblick über meine Erkenntnisse.
Publiziert am von Anonymous
In einigen Projekten konnten wir wertvolle Erfahrungen mit dem Electron Framework sammeln. In diesem Blogbeitrag gebe ich einen Überblick über meine Erkenntnisse.
Publiziert am von Anonymous
Bei Anforderungen für eine Desktop Applikation werden oft folgende Punkte genannt:
Dabei ist eine der grössten Herausforderungen wohl die Navigation zwischen mehreren Seiten. Da die Applikation mit mehreren Tabs - wie in einem Browser - klarkommen sollte, haben wir zunächst mal etwas Recherche betrieben. Auf der offiziellen Electron-Webview Dokumentation erscheint zu Beginn dann aber leider folgende Warnung:
Der Webview-Tag von Electron basiert auf dem Webview von Chromium, dessen Architektur dramatischen Veränderungen unterworfen ist. Dies wirkt sich auf die Stabilität der Webansichten aus, einschliesslich Rendering, Navigation und Ereignis-Routing. Wir empfehlen derzeit, das Webview-Tag nicht zu verwenden und Alternativen wie iframe, Electron's BrowserView oder eine Architektur in Betracht zu ziehen, die ganz auf eingebettete Inhalte verzichtet.
Quelle: electronjs.org/Docs/API/Webview-Tag
Aufgrund dieser aktuellen Entwicklungen müsste man eigentlich auf Webview in Electron Apps verzichten. Allerdings haben iframe oder BrowserView ebenfalls ihre Nachteile, die dann wieder eher für den Einsatz von Webview sprechen. Auf diese Vor- und Nachteile möchte ich nun kurz eingehen.
Ein iframe kennt wohl jeder Entwickler und hat höchstwahrscheinlich Erfahrung damit. Der Vorteil liegt eigentlich nur darin, dass iframes schnell eingebunden werden können und man schnell zu Ergebnissen kommt. In einer Electron Applikation würden alle Frames im gleichen Prozess laufen. Bei der Verwendung von mehreren iframes könnte dies zu Problemen führen. Eine einzelne Webseite, die abstürzt, könnte somit die ganze Applikation zum Absturz bringen.
Das Hauptfenster wird in Electron in einer BrowserView gestartet. Meistens reicht dies aus und ist wohl die beste Wahl, Inhalte darzustellen. Wenn jedoch in diesem Hauptfenster andere Inhalte von anderen Webseiten dargestellt werden sollen, geht kaum ein Weg an iframes oder Webviews vorbei.
Der einzige Nachteil ist, dass die Webview unter Electron aktuell einschneidenden Veränderungen unterworfen ist. Dies fordert vom Entwickler mehr Aufwand und viel Flexibilität. Dennoch sind wir von der Apptiva überzeugt, dass Webview nach wie vor die qualitativ beste Lösung ist, und wir diesen Mehraufwand gerne auf uns nehmen.
Webview hat immer noch zahlreiche überzeugende Vorteile. Einer davon ist, dass jede Webseite, die in einer Webview geladen wird, in einem separaten isolierten Prozess läuft. Die Interaktionen zwischen der Anwendung und dem eingebetteten Inhalt erfolgen asynchron. Dies sollte sich auf die Stabilität der Applikation positiv auswirken, auch wenn eine eingebundene Webseite abstürzen sollte. Die Anwendung ist vor dem eingebetteten Inhalt geschützt. Ausserdem laufen gewisse Webseiten, die in iframes nicht alle Funktionalitäten haben, in Webview reibungslos.
Wenn wir mit der Electron Version >=5 arbeiten, müssen wir zuerst Webview zulassen. Dies können wir folgendermassen machen:
Anschliessend wird die eingebundene Webseite in unsere Electron Applikation geladen & angezeigt.
Mit Electron ist es auch möglich, authentifizierte Seiten anzuzeigen, ohne dass sich der Benutzer anmelden muss. Auch wenn ein Proxy dazwischensteht, ist es möglich, sich per Electron anzumelden. Dies wird folgendermassen realisiert:
Electron ist ein sehr mächtiges Framework, das eine Plattform-unabhängige Programmierung zulässt. Ausserdem ist die Dokumentation einfach und übersichtlich, und lässt schnelle Ergebnisse zu. In Verbindung mit React und Typescript macht es richtig Spass, damit zu arbeiten.
Gerne können Sie auf uns zukommen, wenn Sie einen ähnlichen Use Case wie unsere bisherigen Kunden haben. Egal ob Windows, Mac oder Linux - mit Electron können wir eine passgenaue Lösung bauen.