Electron hat eine Seite, auf der die Unterschiede zum Node-Webkit erläutert werden:
https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md
Wie Node-Webkit bietet Electron eine Plattform zum Schreiben von Desktop-Anwendungen mit JavaScript und HTML sowie eine Node-Integration, um den Zugriff auf ein Low-Level-System auf Webseiten zu ermöglichen.
Es gibt aber auch grundlegende Unterschiede zwischen den beiden Projekten, die Electron zu einem völlig separaten Produkt von Node-Webkit machen:
1 - Anmeldung
In NW.js ist der Haupteinstiegspunkt einer Anwendung eine Webseite oder ein JS-Skript. Sie geben eine HTML- oder JS-Datei in der Datei package.json an und sie wird in einem Browserfenster als Hauptfenster der Anwendung (im Fall eines HTML-Einstiegspunkts) geöffnet oder das Skript wird ausgeführt.
In Electron ist der Einstiegspunkt ein JavaScript-Skript. Anstatt eine URL direkt anzugeben, müssen Sie manuell ein Browserfenster erstellen und eine HTML-Datei mit der entsprechenden API darin laden. Sie müssen auch Fensterereignisse abhören, um zu entscheiden, wann die Anwendung beendet werden soll.
Damit Electron eher wie die Laufzeit von Node.js funktioniert und die APIs niedriger sind, können Sie Electron auch für Webtestzwecke wie Phantomjs verwenden.
2 - System erstellen
Um die Komplexität beim Erstellen des gesamten Chromiums zu vermeiden, verwendet Electron libchromiumcontent, um auf die Inhalts-API von Chromium zuzugreifen. Libchromiumcontent ist eine einzelne gemeinsam genutzte Bibliothek, die das Chromium-Inhaltsmodul und alle seine Abhängigkeiten enthält. Benutzer benötigen also keine leistungsstarke Maschine, um eine Atom-Shell zu erstellen.
3 - Knotenintegration
In Node-Webkit erfordert die Node-Integration in Webseiten das Patchen von Chromium, während wir in Electron eine andere Methode gewählt haben, um die libuv-Schleife in die Nachrichtenschleife jeder Plattform zu integrieren, um das Hacken von Chromium zu vermeiden. Informationen dazu finden Sie im Code node_bindings.
4 - Multi-Kontext
Wenn Sie ein erfahrener Node-Webkit-Benutzer sind, sollten Sie mit dem Konzept des Knotenkontexts und des Webkontexts vertraut sein. Diese Konzepte wurden aufgrund der Implementierung des Node-Webkit erfunden.
Durch die Verwendung der Multi-Kontext-Funktion von Node führt Electron keinen neuen JavaScript-Kontext in Webseiten ein.
Quellcode-Schutz
Electron verpackt seine Anwendungen mit asar , das den ungeschützten Quellcode der Anwendungen enthält. Auf diese Weise kann Anwendung 1 Anwendung 2 extrahieren und anfällige Skripts einfügen, ohne dass der Benutzer dies weiß. Sie können dieses Projekt auf GitHub auschecken, um ein Beispiel für die Bearbeitung der Slack-App zu sehen. Derzeit hat das Electron-Team keine Pläne, Unterstützung für den Quellcode-Schutz zu implementieren .
NW.js hat zum Kompilieren des Quellcodes zu geschützten Binärdateien zur Unterstützung gebaut .