Node-Webkit vs Electron [geschlossen]

80

Wir planen die Erstellung einer plattformübergreifenden Desktop-Anwendung. Wir haben festgestellt, dass Node-Webkit die perfekte Wahl für uns ist. GitHub entwickelte jedoch ein eigenes Framework namens Electron, anstatt Node-Webkit zu verwenden.

Was ist der Unterschied zwischen ihnen?

Fizer Khan
quelle
2
E Lectron gegen N W.js (17. April). Stackoverflow-Fragen E: 2.630 vs N: 269 , Github-Pull-Anfragen E: 102 vs N: 6 , Apps, die auf Electron vs NW.js und schließlich Google Trends - Electron basieren, scheinen die bessere Wahl zu sein.
Kinjelom
Ich habe 'nw.js' gewählt, da ich es einfach auf meine 'index.html' verweisen kann und es einfach funktioniert. Mit 'nw.js' habe ich das Gefühl, ich programmiere für einen Browser mit 'node.js' anstelle von 'node.js' mit einem Browser, der auf den Top-Ansatz von 'Electron' geschraubt ist - und das ist meiner Meinung nach das bessere Paradigma und Ansatz.
Daniel Sokolowski

Antworten:

78

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 .

max collomb
quelle
3
Jetzt wird Node-Webkit in NW umbenannt
Marwen Trabelsi
68
Dies könnte leicht auf Electron ausgerichtet sein, da dieser Artikel aus dem Repo von Electron stammt.
Gbmhunter
7
nw.js kann Chrome-Apps sofort ausführen. Das ist wertvoll für die vielen Programmierer, deren Apps im Chrome Webstore bald verwaist sein werden.
Marlar
16
Ich habe kürzlich versucht, beide zu verwenden, und ich habe einen Blog-Beitrag darüber geschrieben. Ich fand, dass nw.js tatsächlich einfacher und benutzerfreundlicher ist als Electron. Es ist ziemlich einfach, einige Webseiten in nw.js abzulegen und loszulegen. Die Einrichtung von Elektronen ist unübersichtlicher und aufgrund ihres Multiprozess-Designs müssen Sie durch die Reifen springen, um einfache Aufgaben zu erledigen. Electron verfügt jedoch über eine viel umfangreichere Plattformintegrations-API, mit der Sie native Mac / Windows / Linux-Funktionen in Ihrer Anwendung umfassender nutzen können.
Ming-Yee Iu
3
Ich habe auch festgestellt, dass NW.js Browser zuerst mit Node.js hinzugefügtem Design viel vernünftiger und einfacher zu arbeiten ist als Electron's Ansatz von Node.js mit Browser-Unterstützung. Mit NW.js codiere ich für den Browser, mit Electron codiere ich für Node.js.
Daniel Sokolowski