Creazione di un pacchetto di un'app web node.js come una normale app desktop [chiusa]


86

Ho cercato un po 'ma non riesco a trovare uno strumento esistente per questo.

Ho un server web node.js progettato per funzionare sul tuo computer che fa alcune cose interessanti per te. Sarebbe fantastico se potessi fare doppio clic MySnazzyThing.appinvece di installare nodejs e npm e in esecuzione node mysnazzyapp.jssulla riga di comando.

L' .appeseguibile eseguirà lo spooling del server del nodo e aprirà una semplice finestra webkit nativa che mostrerebbe cosa sarebbe normalmente localhost:3000attivo se fossi in esecuzione sulla riga di comando.

Questa app nativa potrebbe quindi, ad esempio, essere distribuita tramite l'app store del Mac. E bam, un'app desktop node.js.

Esiste uno strumento del genere? O ci sono ragioni tecniche per cui non funzionerebbe come immagino?

Risposte:



90

Opzione 1: elettrone (aka atom-shell)

Questa è la shell utilizzata dall'editor Atom di GitHub. È molto simile a node-webkit, sebbene eseguirà prima lo script e dovrai creare una visualizzazione / finestra per l'utente. Ci sono altre piccole differenze, ma vale la pena esaminarle.


Opzione 2: NW.js precedentemente node-webkit

Il succo è che fondamentalmente estende il motore JS in modo che tu possa scrivere un'app basata sul web che supporti il ​​modello a oggetti estesi del nodo e i moduli ... quindi impacchetterai i tuoi moduli package.json start.html e i file js in uno zip (con il .nw extension) ed eseguirlo con nw (.exe) .. sono disponibili build per Windows, Mac e Linux.


Opzione 3: shell Carlo chrom (ium) di Node.

Ciò ti consentirà di avviare Chrome installato localmente come una shell che può connettersi a un'applicazione server in esecuzione localmente. Richiede un cromo locale, ma è molto vicino a quanto richiesto.


Opzione 4: MacGapNode (solo OSX)

MacGap con integrazione dei nodi (sembra stantio)


A parte: servizi ...

Non posso parlare per OSX su questo come .App, ma potrebbe essere possibile creare un'installazione del servizio in background in NodeJS e un collegamento a un sito "locale" sul desktop. La maggior parte dei browser ha un'opzione per non mostrare tutte le funzionalità (so che Firefox in particolare lo fa).

So che la tua domanda è rivolta a OSX in particolare, ma in Windows puoi usare NSSM per eseguire qualsiasi cosa come servizio e l'ho usato per i servizi basati su NodeJS in Windows. Penso che alcune delle altre opzioni di cui sopra siano migliori a seconda delle tue esigenze.


Rimosso:


Questa risposta viene copiata per più domande, questi riferimenti sono principalmente per comodità di aggiornamento.


Per OSX e Linux github.com/crcn/nexe sembra anche una soluzione.
robocat

Sembra che node-webkit sia il vincitore tra questi. Ampia base di sviluppatori, buona documentazione, supportata da Intel.
Dan

gerty, grazie ... ho aggiornato la mia risposta per includere nexe, oltre a rendere node-webkit il primo posto ... sembra che appjs stia diventando un po 'stantio.
Tracker1

Per il checkout OSX Macgap in modo da poterlo inviare all'app store. Il webkit del nodo viene negato per l'utilizzo di un'API potenzialmente obsoleta in futuro.
Michael J. Calkins,

Hmm, ora c'è un'idea. Esegui l'app come server in background, quindi apri una finestra del browser (ad esempio, come posso avviare un browser senza cornice della finestra o schede / barra degli indirizzi ). In questo modo non hai lo stesso controllo sulla finestra (ad es. Il browser gestisce le voci di menu come file, modifica, visualizzazione, ecc. E l'utente ha ancora accesso a cose come la stampa del browser, lo zoom e in-page funzioni di ricerca), ma in pratica non è richiesto alcun framework aggiuntivo.
Ajedi32

8

Suggerisco di esaminare Topcube, il suo obiettivo è "Fornire agli sviluppatori di nodi un modo per avere una GUI desktop per i loro server di nodi utilizzando HTML5 + CSS3 come piattaforma GUI". Topcube su GitHub .


1
Topcube non sembra essere supportato a lungo
Shamoon

Sì, suggerisco di esaminare Titanium. Non è Node.js ma è basato su JS e multipiattaforma per PC e sviluppo di applicazioni mobili. appcelerator.com/products/…
Brian Heese

Quel collegamento in titanio è marcito. Suppongo che questo sia ciò a cui ti riferisci: docs.appcelerator.com/titanium/2.0/index.html Il loro sito Web opaco e pesante di marketing rende sicuramente difficile vedere quale sia il loro prodotto o preoccuparsene.
Grumdrig

Nota: le parti del desktop Titanium non saranno più sviluppate / supportate.
Sri Kadimisetty

1
Lo sviluppo di Titanium Desktop è stato ripreso da un nuovo gruppo di sviluppatori: tidesdk.org
Motin

-1

Attualmente ci sono molti modi per farlo.

Il chiaro vincitore nello spazio di impacchettare un'app node + html5, è attualmente Electron (utilizzato da Atom, VSCode, Slack, Discord, ecc.).

È inoltre possibile utilizzare qualsiasi altro pacchetto di lingue come app (utilizzando gli strumenti per tali lingue / stack) e verificare l'installazione di un nodo, avviare lo script "server" con node, quindi avviare il browser predefinito (o qualche componente di visualizzazione Web, alcuni altri mezzi), infine impostare la posizione sul servizio del nodo. Questo è un metodo molto leggero ed efficiente, tuttavia non così integrato con il sistema operativo come una soluzione come Electron.

Il principale concorrente di Electron qui, è NW.js. Per quanto ne so, la caratteristica principale di NW.js che Electron non ha (ancora) è la compilazione / offuscamento. Mentre Electron semplifica gli aggiornamenti automatici.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.