Packen einer node.js-Webanwendung als normale Desktop-App [geschlossen]

86

Ich habe ein bisschen gesucht, kann aber kein vorhandenes Tool dafür finden.

Ich habe einen node.js-Webserver, der auf Ihrem eigenen Computer ausgeführt werden kann und einige pfiffige Dinge für Sie erledigt. Es wäre ziemlich fantastisch, wenn ich doppelklicken könnte, MySnazzyThing.appanstatt nodejs und npm zu installieren und in node mysnazzyapp.jsder Befehlszeile zu laufen .

Die .appausführbare Datei spoolt den Knotenserver auf und öffnet ein einfaches natives Webkit-Fenster, in dem angezeigt wird, was normalerweise aktiviert ist, localhost:3000wenn ich in der Befehlszeile ausgeführt werde.

Diese native App könnte dann beispielsweise über den Mac App Store verteilt werden. Und bam, eine Desktop-App von node.js.

Gibt es ein solches Tool? Oder gibt es technische Gründe, warum dies nicht so funktioniert, wie ich es mir vorstelle?

Alex Wayne
quelle

Antworten:

90

Option 1: Elektron (auch bekannt als Atom-Shell)

Dies ist die Shell, die der Atom-Editor von github verwendet. Es ist dem Node-Webkit sehr ähnlich, obwohl es zuerst das Skript ausführt und Sie eine Ansicht / ein Fenster für den Benutzer erstellen müssen. Es gibt noch einige andere kleine Unterschiede, aber es lohnt sich, sie sich anzusehen.


Option 2: NW.js früheres Node-Webkit

Das Wesentliche ist, dass es die JS-Engine im Grunde erweitert, damit Sie eine webbasierte App schreiben können, die das erweiterte Objektmodell und die Module des Knotens unterstützt. Anschließend packen Sie Ihre package.json start.html-Module und js-Dateien in eine Zip-Datei (mit der .nw-Erweiterung) und führen Sie es mit nw (.exe) aus. Es sind Windows-, Mac- und Linux-Builds verfügbar.


Option 3: Carlo- Chrom (ium) -Schale vom Knoten.

Auf diese Weise können Sie das lokal installierte Chrome als Shell starten, die eine Verbindung zu einer lokal ausgeführten Serveranwendung herstellen kann. Es erfordert ein lokales Chrom, kommt aber dem sehr nahe, was verlangt wurde.


Option 4: MacGapNode (nur OSX)

MacGap mit Knotenintegration (scheint veraltet zu sein)


Nebenbei: Dienstleistungen ...

Ich kann nicht für OSX als .App sprechen, aber es könnte durchaus möglich sein, eine Hintergrunddienstinstallation in NodeJS und einen Link zu einer "lokalen" Site auf dem Desktop zu erstellen. Die meisten Browser haben die Option, nicht alle Funktionen anzuzeigen (ich weiß, dass Firefox dies insbesondere tut).

Ich weiß, dass Ihre Frage insbesondere OSX betrifft, aber in Windows können Sie NSSM verwenden, um alles als Dienst auszuführen, und ich habe es für NodeJS-basierte Dienste in Windows verwendet. Ich denke, einige der anderen oben genannten Optionen sind je nach Ihren Anforderungen besser.


Entfernt:


Diese Antwort wird für mehrere Fragen kopiert. Diese Verweise dienen hauptsächlich der Aktualisierung.

Tracker1
quelle
Für OSX und Linux sieht github.com/crcn/nexe ebenfalls wie eine Lösung aus.
Robocat
Es sieht so aus, als ob Node-Webkit der Gewinner unter diesen ist. Große Entwicklerbasis, gute Dokumentation, unterstützt von Intel.
Dan
gerty, danke ... Ich habe meine Antwort aktualisiert, um nexe einzuschließen, und das Node-Webkit zum Spitzenplatz gemacht ... es sieht so aus, als ob AppJs etwas abgestanden sind.
Tracker1
Für OSX Checkout Macgap, damit Sie an App Store senden können. Das Node-Webkit wird für die Verwendung einer möglicherweise veralteten API in der Zukunft abgelehnt.
Michael J. Calkins
Hmm, jetzt gibt es eine Idee. Führen Sie die App als Server im Hintergrund aus und öffnen Sie einfach ein Browserfenster dafür (z. B. Wie kann ich einen Browser ohne Fensterrahmen oder Registerkarten / Adressleiste starten ). Auf diese Weise erhalten Sie nicht so viel Kontrolle über das Fenster (z. B. verarbeitet der Browser die Menüelemente wie Datei, Bearbeiten, Anzeigen usw., und der Benutzer hat weiterhin Zugriff auf Dinge wie Drucken, Zoomen und In-Page des Browsers Suchfunktionen), aber im Grunde ist kein zusätzliches Framework erforderlich.
Ajedi32
8

Ich schlage vor, sich mit Topcube zu befassen. Ziel ist es, "Knotenentwicklern die Möglichkeit zu geben, ihren Knotenservern eine Desktop-GUI mit HTML5 + CSS3 als GUI-Plattform zur Verfügung zu stellen." Topcube bei Github .

Brian Heese
quelle
1
Topcube scheint nicht mehr lange unterstützt zu werden
Shamoon
Ja, ich schlage vor, sich mit Titan zu befassen. Es ist nicht Node.js, sondern JS-basiert und plattformübergreifend für die Entwicklung von PCs und mobilen Anwendungen. appcelerator.com/products/…
Brian Heese
Diese Titanverbindung ist verfault. Ich nehme an, dies ist das, worauf Sie sich beziehen: docs.appcelerator.com/titanium/2.0/index.html Ihre undurchsichtige, marketingintensive Website macht es sicher schwer zu erkennen, was ihr Produkt ist, oder sich darum zu kümmern.
Grumdrig
Hinweis: Die Titanium-Desktop-Teile werden nicht mehr entwickelt / unterstützt.
Sri Kadimisetty
1
Die Entwicklung von Titanium Desktop wurde von einer neuen Gruppe von Entwicklern übernommen: tidesdk.org
Motin
-1

Derzeit gibt es eine Vielzahl von Möglichkeiten, dies zu erreichen.

Der klare Gewinner beim Packen einer Node + HTML5-App ist derzeit Electron (wird von Atom, VSCode, Slack, Discord usw. verwendet).

Sie können auch jede andere als App gepackte Sprache verwenden (mithilfe von Tools für diese Sprachen / Stapel) und nach einer Knoteninstallation suchen, das "Server" -Skript mit Knoten starten und dann den Standardbrowser (oder eine Webansichtskomponente von) starten andere Mittel), setzen Sie schließlich den Standort auf den Knotendienst. Dies ist eine sehr leichte und effiziente Methode, die jedoch nicht so gut in das Betriebssystem integriert ist wie eine Lösung wie Electron.

Der Hauptkonkurrent von Electron ist hier NW.js. Soweit ich das beurteilen kann, ist das Hauptmerkmal von NW.js, das Electron (noch) nicht hat, die Kompilierung / Verschleierung. Während Electron automatische Updates einfach macht.

https://electron.atom.io/ https://nwjs.io/

Devin McKeon
quelle