Empaquetar una aplicación web de node.js como una aplicación de escritorio normal [cerrado]

86

He buscado un poco, pero no puedo encontrar una herramienta existente para esto.

Tengo un servidor web node.js que está diseñado para ejecutarse en su propia computadora y que hace algunas cosas elegantes por usted. Sería bastante impresionante si pudiera hacer doble clic en MySnazzyThing.applugar de instalar nodejs y npm y ejecutarlo node mysnazzyapp.jsen la línea de comandos.

El .appejecutable pondría en cola el servidor de nodos y abriría una ventana de webkit nativa simple que mostraría lo que normalmente estaría encendido localhost:3000si estuviera ejecutando en la línea de comando.

Esta aplicación nativa podría, por ejemplo, distribuirse a través de la tienda de aplicaciones de mac. Y bam, una aplicación de escritorio de node.js.

¿Existe alguna herramienta de este tipo? ¿O hay alguna razón técnica por la que esto no funcionaría como lo imagino?

Alex Wayne
fuente

Respuestas:

90

Opción 1: electrón (también conocido como átomo-capa)

Este es el shell que usa el editor Atom de github. Es muy similar a node-webkit, aunque primero ejecutará el script y tendrá que crear una vista / ventana para el usuario. Hay algunas otras diferencias menores, pero vale la pena analizarlas.


Opción 2: NW.js anteriormente node-webkit

La esencia es que básicamente extiende el motor JS para que pueda escribir una aplicación basada en la web que admita el modelo de objeto extendido del nodo y los módulos ... luego empaqueta sus módulos package.json start.html y archivos js en un zip (con el .nw extensión) y ejecútelo con nw (.exe) .. hay versiones para Windows, Mac y Linux disponibles.


Opción 3: shell Carlo chrom (ium) de Node.

Esto le permitirá iniciar Chrome instalado localmente como un shell que puede conectarse a una aplicación de servidor que se ejecuta localmente. Requiere un cromo local, pero está muy cerca de lo que se pidió.


Opción 4: MacGapNode (solo OSX)

MacGap con integración de nodo (parece que se está volviendo obsoleto)


Aparte: Servicios ...

No puedo hablar por OSX sobre esto como una .App, pero bien podría ser posible crear una instalación de servicio en segundo plano en NodeJS y un enlace a un sitio "local" en el escritorio. La mayoría de los navegadores tienen la opción de no mostrar todas las funciones (sé que Firefox en particular sí).

Sé que su pregunta es para OSX en particular, pero en Windows puede usar NSSM para ejecutar cualquier cosa como un servicio, y lo he usado para servicios basados ​​en NodeJS en Windows. Sin embargo, creo que algunas de las otras opciones anteriores son mejores dependiendo de sus necesidades.


Remoto:


Esta respuesta se copia para múltiples preguntas, estas referencias son principalmente para la conveniencia de actualización.

Rastreador1
fuente
Para OSX y Linux, github.com/crcn/nexe también parece una solución.
robocat
Parece que node-webkit es el ganador entre estos. Gran base de desarrolladores, buena documentación, respaldada por Intel.
Dan
gerty, gracias ... Actualicé mi respuesta para incluir nexe, y también hice que node-webkit fuera el primer lugar ... parece que appjs puede estar un poco obsoleto.
Tracker1
Para OSX, realice el pago de Macgap para que pueda enviarlo a la tienda de aplicaciones. Node webkit es rechazado por usar una API potencialmente desactualizada en el futuro.
Michael J. Calkins
Hmm, ahora hay una idea. Ejecute la aplicación como servidor en segundo plano, luego simplemente abra una ventana del navegador (por ejemplo, ¿Cómo puedo iniciar un navegador sin marco de ventana o pestañas / barra de direcciones )? De esa manera, no obtiene tanto control sobre la ventana (por ejemplo, el navegador maneja los elementos del menú como archivo, edición, vista, etc., y el usuario aún tiene acceso a cosas como la impresión, el zoom y la entrada en la página del navegador). funciones de búsqueda), pero básicamente no se requiere un marco adicional.
Ajedi32
8

Sugiero mirar en Topcube, su objetivo es "Dar a los desarrolladores de nodos una forma de tener una GUI de escritorio para sus servidores de nodos utilizando HTML5 + CSS3 como plataforma de GUI". Topcube en github .

Brian Heese
fuente
1
Topcube no parece tener soporte por mucho más tiempo
Shamoon
Sí, sugiero mirar en Titanium. No es Node.js, pero está basado en JS y es multiplataforma para el desarrollo de aplicaciones móviles y de PC. appcelerator.com/products/…
Brian Heese
Ese enlace de titanio se ha podrido. Supongo que a este es a lo que te refieres: docs.appcelerator.com/titanium/2.0/index.html Su sitio web opaco con mucho marketing hace que sea difícil ver cuál es su producto, o qué le importa.
Grumdrig
Nota: Las piezas de escritorio de Titanium ya no se desarrollarán / admitirán.
Sri Kadimisetty
1
El desarrollo de Titanium Desktop ha sido asumido por un nuevo grupo de desarrolladores: tidesdk.org
Motin
-1

Actualmente hay una gran cantidad de formas de lograr esto.

El claro ganador en el espacio de empaquetar una aplicación node + html5, es actualmente Electron (utilizado por Atom, VSCode, Slack, Discord, etc.).

También puede usar cualquier otro idioma empaquetado como una aplicación (usando herramientas para esos idiomas / pilas), y verificar la instalación de un nodo, iniciar el script del "servidor" con el nodo, luego iniciar el navegador predeterminado (o algún componente de vista web, por algún otro medio), finalmente establezca la ubicación del servicio de nodo. Este es un método muy ligero y eficiente, sin embargo, no está tan bien integrado con el sistema operativo como una solución como Electron.

El principal competidor de Electron aquí es NW.js. Por lo que puedo decir, la característica principal que tiene NW.js que Electron no tiene (todavía) es la compilación / ofuscación. Mientras que Electron facilita las actualizaciones automáticas.

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

Devin McKeon
fuente