Hybride Desktop-Apps mit dem Framework Electron

Als Agentur setzen wir auf den Ansatz der hybriden (sprich Cross-Platform) Entwicklung. Mit Hilfe der von uns bereits vorgestellten Technologien, wie Cordova, PhoneGap und Ionic lassen sich mobile Apps für die bekanntesten mobilen Betriebssysteme mit Webtechnologien entwickeln. Diesen Ansatz hat auch Team rund um das Projekt GitHub aufgegriffen. Jedoch portieren sie die Idee von Web- und Mobile-Apps zu richtigen Desktop-Anwendungen. Aus ihrer Idee ist am Ende ein mächtiges, aber noch sehr junges, Framework mit dem Namen Electron entstanden.

Electron

Das Electron Framework kombiniert JavaScript, HTML und CSS zur Gestaltung der Benutzeroberfläche mit nativen Funktionalitäten, die mit Hilfe von Node.js erstellt oder angesprochen werden können. Das dieses Konzept sehr gut funktioniert hat das Team selbst mit ihrem sehr beliebten Text-Editor Atom unter Beweis gestellt. Dieser erfreut sich immer größerer Beliebtheit bei Programmierern und kommt unter anderem auch bei uns zum Einsatz. Über die einfachen Schnittstellen von Node.js können eigene Plugins mühelos umgesetzt und integriert werden.

Einrichtung

Electron wird wie ein normales Node-Modul über die Paketverwaltung NPM installiert. Daher sind Node.js und NPM Voraussetzung für die Einrichtung.
npm install electron-prebuilt 

Die erste Anwendung
Danach kann das eigene Projekt in einem Verzeichnis angelegt werden. Die einfachste Form einer Electron-App besteht aus drei Dateien.

  1. package.json
    • Informationen über das Projekt,
    • definiert zusätzliche Abhängigkeiten zu anderen Node-Module
    • legt Einstiegspunkt in die Anwendung fest
  2. main.js – Hauptdatei, verwaltet die Anwendungsfenster, reagiert auf System-Ereignisse
  3. index.html – Benutzeroberfläche als Webseite

Eine sehr einfache package.json sieht dann wie folgt aus:

{
  "name"    : "MeineTolleElectronApp",
  "version" : "0.0.1",
  "main"    : "main.js"
}

Der Schlüssel main stellt die Verbindung zum Einstiegspunkt der Anwendung dar. Natürlich kann daher auch die Hauptdatei main.js umbenannt und in der package.json angegeben werden.

Der Standartinhalte der main.js übernimmt das initiale Erstellen des Anwendungsfensters, das Reagieren auf das Schließen des Hauptfensters.

var app = require('app');  // Zugriff auf die Anwendung
var BrowserWindow = require('browser-window');  // Erzeugt native Browser-Fenster

// Sendet Fehlerberichte an Electron
require('crash-reporter').start();

// Hauptbrowserfenster
var mainWindow = null;

// App beenden, wenn alle Fenster geschlossen wurden.
app.on('window-all-closed', function() {
  // Falls nicht Mac OSX
  if (process.platform != 'darwin') {
    app.quit();
  }
});

// Initialisierung durch Electron ist abgeschlossen --> Browser-Fenster können erzeugt werden
app.on('ready', function() {
  // Erstellt Hauptfenster
  mainWindow = new BrowserWindow({width: 800, height: 600});

  // Lade die Startseite --> index.html
  mainWindow.loadUrl('file://' + __dirname + '/index.html');

  // Öffnet die Entwicklerwerkzeuge
  mainWindow.openDevTools();

  // Browserfenster wird geschlossen
  mainWindow.on('closed', function() {
    // Lösche Referenz zum Browserfenster
    mainWindow = null;
  });
});

Das Browserfenster lädt nach dem Erstellen unsere index.html. Hier können nach belieben weitere Frontend-Frameworks eingebunden und genutzt werden.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hallo Welt!</title>
  </head>
  <body>
    <h1>Hallo Welt!</h1>
    Benutzte Node.js Version: <script>document.write(process.version)</script>
    Electron Version: <script>document.write(process.versions['electron'])</script>.
  </body>
</html>

Über ein Terminal bzw. Kommandozeile kann dann die Anwendung über den Befehl electron . aufgerufen werden. Der ‘.’ steht hier für den Pfad zum Projekt. Befindet ihr euch bereits dort, dann reicht der Punkt vollkommen aus. Ist Electron bei euch nicht global installiert, müsst ihr noch den Pfad zum Modal angeben (./node_modules/.bin/electron .). Das Resultat sieht dann folgendermaßen aus.

HalloWelt Electron

Distribution

Um eure tolle Anwendung anderen bereitzustellen, müsste ihr einfach euer Projekt in den Resources-Ordner von Electron kopieren und in app umbenennen.

  • Mac – electron/Electron.app/Contents/Resources/app/ –> main.js, package.json, index.html
  • Windows, Linux – electron/resources/app/ –> main.js, package.json, index.html

Wenn ihr jetzt die Electron-App ausführt (electron.exe, Electron.app bzw. electron), sollte eure Anwendung starten.
Ihr könnt die Anwendung auch in ein spezielles Archiv verpacken und dann in den Resources-Ordner.
Eine genauere Anleitung findet ihr HIER.

Als kleines Hilfsmittel existiert auch ein Build-Tool für eigene Apps mit dem Namen Electron-Packager.

Das Build-Tool von FLYACTS

Wir bei FLYACTS haben uns natürlich auch schon ein wenig genauer mit Electron auseinandergesetzt. Dabei ist ein kleines Build-Tool für unsere Anwendungen entstanden. Dazu benutzen wir vor allem die GitLab-API, um unsere Projekte abzurufen und zu verarbeiten. Als Frontend Technologien kamen AngularJS und Bootstrap zum Einsatz. Es folgen ein paar kleine Einblicke.

Autorisierung mit Hilfe der GitLab-Zugangsdaten

Autorisierung mit Hilfe der GitLab-Zugangsdaten.

Eine Übersicht der Projekte, welche auch durchsucht werden kann.

Eine Übersicht der Projekte, welche auch durchsucht werden kann.

Ein Projekt wird von GitLab heruntergeladen und konfiguriert.

Ein Projekt wird von GitLab heruntergeladen und konfiguriert.

Der letzte Schritt ist dann das eigentliche Bauen der Anwendungen.

Gemeinsam etwas starten?
Einfach Kontakt aufnehmen:

FLYACTS Anne

NEUKUNDEN & ANFRAGEN

ANNE SCHULZE

+49 3641 55 987 92
hallo@flyacts.com

FLYACTS Christin

PR & MARKETING

CHRISTIN DOMIN

+49 3641 55 987 93
presse@flyacts.com

Share This