2014-05-07 5 views
50

Wir planen, plattformübergreifende Desktop-Anwendung zu erstellen. Wir haben festgestellt, dass Node-Webkit eine perfekte Wahl für uns ist. Aber GitHub entwickelte ein eigenes Framework mit dem Namen Electron anstelle von Node-Webkit.Node-Webkit vs Elektron

Was ist der Unterschied zwischen ihnen?

+2

** E ** lectron gegen ** N ** W.js (April'17). Stackoverflow Fragen [E: 2.630] (http:// Stackoverflow.com/questions/tagged/electron) vs [N: 269] (http:// Stackoverflow.com/questions/tagged/nw.js), Github ziehen Anfragen [E: 102] (https://github.com/electron/electron/pulse/monthly) gegen [N: 6] (https://github.com/nwjs/nw.js/pulse/monthly), Apps, die auf [Electron] (https://electron.atom.io/apps/) und [NW.js] (https://github.com/nwjs/nw.js/wiki/List-of-apps-and) gebaut wurden -companies-using-nw.js) und schließlich [Google Trends] (https://trends.google.com/trends/explore?q=nwjs,electron%20js) - Electron scheint die bessere Wahl zu sein. – wildloop

Antwort

61

Electron hat eine Seite erklärt die Unterschiede mit node-webkit:

https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md

Wie Node-Webkit stellt Electron eine Plattform Desktop Anwendungen mit JavaScript und HTML zu schreiben, und hat Knoten Integration zu Zugriff auf Low-Level-System in Webseiten gewähren.

Aber es gibt auch grundlegende Unterschiede zwischen den beiden Projekten , die ein völlig eigenständiges Produkt von Node-Webkit machen Electron:

1 - Eingabe von Anwendungs ​​

In NW.js den Haupteintrittspunkt einer Anwendung ist 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 ausgeführt.

Während in Electron ist der Einstiegspunkt ein JavaScript-Skript, anstatt eine URL direkt zur Verfügung zu stellen, müssen Sie manuell ein Browserfenster erstellen und html-Datei darin mit der entsprechenden API laden. Sie müssen auch auf Fensterereignisse hören, um zu entscheiden, wann die Anwendung beendet werden soll.

So funktioniert Electron mehr wie die Node.js Laufzeit und APIs sind niedriger Ebene können Sie auch Electron Zweck Web Test verwenden für wie PhantomJS,

2 - Bauen System

Um Um die Komplexität des Aufbaus des gesamten Chroms zu vermeiden, verwendet Electron libchromiumcontent, um auf die Inhalts-API von Chromium zuzugreifen. libchromiumcontent ist eine einzelne, gemeinsam genutzte Bibliothek, die das Chromium Content-Modul und alle zugehörigen Abhängigkeiten enthält. So brauchen Benutzer nicht eine leistungsfähige Maschine, um Atom-Shell zu bauen.

3 - Knoten Integration

In Node-Webkit erfordert die Knoten Integration in Web-Seiten Chromium zu arbeiten Patchen, während in Electron wählten wir eine andere Art und Weise zu libuv Schleife zu jeder Plattform der Nachrichtenschleife integriert zu vermeiden hacken Chromium, siehe den node_bindings Code für, wie das getan wurde.

4 - Multi-Kontext

Wenn Sie ein erfahrener Node-Webkit-Benutzer sind, sollten Sie mit dem Konzept der Knoten Kontext und Web-Kontext vertraut sein, waren diese Konzepte wegen erfunden, wie der Node-Webkit wurde implementiert.

Durch die Verwendung der Multi-Kontext-Funktion von Node stellt Electron keinen neuen JavaScript-Kontext in Webseiten .

Quellcode Schutz

Electron ist die Verpackung ihre Anwendungen mit asar, die die ungeschützte Quellcode der Anwendungen enthält. Dies ermöglicht es der Anwendung 1, die Anwendung 2 zu extrahieren und anfällige Skripts zu injizieren, ohne dass der Benutzer dies bemerkt. Sie können this project on GitHub to see an example of how to manipulate the Slack app für ein Beispiel auschecken. Bis jetzt, the Electron team don't have any plans to implement support for source code protection.

NW.js hat built in support for compiling your source code to protected binaries.

+1

Nun wurde Node-Webkit in NW umbenannt. –

+39

Dies könnte leicht in Richtung Electron verzerrt sein, da dieser Artikel aus dem Repo von Electron stammt. – gbmhunter

+2

In nw.js können Chrome-Apps sofort ausgeführt werden. Das ist wertvoll für die vielen Programmierer, deren Apps im Chrome Webstore bald verwaist sein werden. – marlar