¿Cuáles son las diferencias funcionales entre NW.js, Brackets-Shell y Electron?


151

Ahora que TideSDK está efectivamente muerto, he estado buscando 'envoltorios' alternativos para ejecutar aplicaciones HTML / CSS / JS como aplicaciones de escritorio independientes. Las tres opciones viables con las que me he encontrado hasta ahora son NW.js (anteriormente node-webkit), brackets-shell y Electron (anteriormente atom-shell).

El problema es que no parece haber una comparación suficientemente completa entre los tres en términos de conjunto de características, compatibilidad, etc. Espero convertir esto en un hilo canónico más o menos en las diferencias (objetivas) entre los tres, en particular con respecto a:

  • Soporte de plataforma ; sistemas operativos, dependencias, etc.
  • Soporte de funciones de idioma , en lo que respecta a HTML5, CSS3 y JavaScript. Piense cosas como "¿funciona el video HTML5 y, en caso afirmativo, qué códecs están disponibles?"
  • Funciones adicionales no estándar , como iconos de bandeja, notificaciones emergentes y barras de menú representadas por el sistema operativo.
  • Extensibilidad ; p.ej. capacidad de 'enchufar' código nativo, hablar con Node.js, etc.
  • Arquitectura ; en particular las diferencias arquitectónicas que afectan el uso diario como desarrollador.
  • Depuración ; Incluye herramientas de desarrollo, compatibilidad con herramientas de uso común como node-inspector, etc.
  • ... y así.

¿Cuáles son las diferencias técnicas objetivas que importan al elegir entre ellos como desarrollador de aplicaciones?


¿Has tenido suerte mirando las diferencias mientras tanto? Podría cavar un poco este fin de semana
stefan

@stefan Todavía no, no: / He experimentado un poco con el kit de web de nodo en un sentido práctico, pero aún no he superado eso. No he llegado a buscar documentación formal de las diferencias ...
Sven Slootweg

3
Bueno, aquí están las principales diferencias entre node-webkit y atom-shell descritas por el equipo de atom-shell, github.com/atom/atom-shell/blob/master/docs/development/… .
Sepulché el

2
¿Qué tal el elefante en la habitación: depuración. He estado usando nw.js y descubrí que la depuración es bastante escasa cuando utilizo la plataforma Linux para desarrollar. Para desarrollar aplicaciones grandes, la depuración es una característica crítica de la OMI. ¿Podemos agregar depuración a la lista de características deseables para hablar?
Timothy C. Quinn

@JavaScriptDude Gracias, lo he agregado a la lista.
Sven Slootweg

Respuestas:


42

Hice una investigación similar hace unos dos meses, y al final elegí el kit web de nodos. La mayor ventaja de node-webkit es node.js y npm. La gestión de paquetes de npm es realmente agradable, y el nodo tiene un buen acceso al sistema de archivos.

Brackets-shell parecía interesante, pero aparte de un buen IDE, realmente no entendí lo que lo hacía tan bueno o mejor que el resto. Ellos tienen muy claro que "El soporte de los brackets solo se mantiene para su uso en el proyecto Brackets", que los gritos se me escapan.

https://github.com/adobe/brackets-shell#overview

Atom-shell parece estar activo recientemente, pero se parece mucho a los corchetes en el sentido de que realmente están escribiendo y editando / IDE que están conectados a un tiempo de ejecución de webkit. También está construido encima de node.js. Este tiene el inconveniente de ser difícil de buscar cosas en línea sin recordar la química de tu escuela secundaria.

Realmente no quiero un nuevo editor, y la mayoría de los programadores ya tienen su favorito. Para el desarrollo real de la aplicación, prácticamente funcionan igual, y deberían, ya que todos usan webkit. Básicamente, escribe 90-95% como un sitio web, y luego se ocupa de las partes nativas y algo de configuración.

Estas cosas son ciertas para las tres plataformas: se ejecuta en soporte de idiomas para Windows, Mac y Linux: HTML5, CSS3 y Javascript: dado que ejecutan JavaScript, puede descargar y ejecutar casi cualquier biblioteca / marco que desee.

La gran advertencia en webkit es el soporte de códec. Por lo general, tendrá problemas con los códecs de video no libres, a menos que reconstruya el dll / so para admitirlos. Por ejemplo, el nodo webkit enviado no reproducirá video mp4.


¿Podría explicar si hay alguna diferencia con respecto a la reproducción de MP4 en brackets-shell y atom-shell? No está claro en su respuesta si esto es una peculiaridad en la mayoría de las distribuciones de WebKit, o solo en el nodo-webkit.
Sven Slootweg

La reproducción de MP4 es un problema es un problema de webkit. Debe recordar que el kit web es realmente cromo en el fondo, y a menos que la tecnología AV sea abierta y gratuita, no lo admiten de inmediato. La respuesta estándar es reemplazar / reconstruir ffmpegsumo. Reemplazarlo con uno de su instalación actual de Chrome parece funcionar bastante bien.
John W. Clark

1
Resulta que Brackets está construido bracket-shelly Atom está construido atom-shell, pero puede usar cualquier editor o IDE de su elección para crear código con ellos. Creo que lo que quiere el OP es más sobre las diferencias técnicas entre los 3. Sería genial ver algo como TodoMVC en los 3 entornos de tiempo de ejecución.
Ehtesh Choudhury

@SvenSlootweg, el soporte de códec es más sobre las bibliotecas utilizadas con el kit web que está utilizando. Los tres están usando Chromium como la base del kit web, por lo que todos tienen los mismos problemas de códec y se pueden resolver de la misma manera.
John W. Clark el


40

He estado jugando con Atom-Shell en los últimos días, y hasta ahora me encanta.

La mejor parte es que está respaldado por GitHub ... que debería permitirle instalarse en la plataforma a largo plazo, especialmente si gana un gran número de seguidores. También es posible gracias a las mejoras directas de Node.js, cortesía de un contrato con StrongLoop , quien es un importante contribuyente de Node.js (afirman que emplean más desarrolladores principales de Node.js que cualquier otra compañía, incluso Joyent).

También me ha resultado bastante cómodo comenzar. Me llevó cerca de un día aprender la estructura y obtener mi primera prueba de concepto en funcionamiento. Muy genial.


Puntos de bala:

  • Soporte de plataforma: Windows, Linux, Mac OSX ( Más información aquí )
  • Soporte de funciones de idioma: HTML5, CSS3, JS a través de Chromium, hasta ahora, cero problemas, pero no he probado el video específicamente.
  • Características nativas: menús de aplicaciones nativas, soporte de bandeja de tareas, teclas de acceso rápido globales, soporte de controlador de protocolo (que he visto hasta ahora)
  • Extensibilidad: Excelente integración de Node.js, tanto el cliente como el servidor pueden "requerir" módulos Node.js y nativos. También probé con éxito las bibliotecas de Bower (incluido jQuery) sin problemas.
  • Arquitectura: Cubierta en los otros puntos, pero en general es muy suave.

Actualización (25/11/14): todavía no he encontrado un caso de uso para Atom-Shell en ninguna capacidad oficial, pero lo he usado para construir algunas aplicaciones pequeñas para mi propio uso, la más compleja es una aplicación que tira mi tiempo se registra desde mi software PM y crea facturas de Paypal.

Mi opinión sobre la plataforma sigue siendo positiva. Es bastante asombroso.

En mi aplicación de facturación de tiempo, traje con éxito la plantilla de ejemplo del tablero de Bootstrap 3 y algunos módulos de nodo (bluebird, Paypal SDK, Teamwork PM Client) para crear una aplicación ligeramente compleja. Me llevó unos días y hace bien su trabajo.

Realmente no puedo pensar en nada negativo que decir sobre Atom-Shell, es sólido, estable, rápido y fácil de codificar. Espero que esto ayude a alguien.


¿Puedes dar más detalles sobre las diferencias con node-webkit en particular? Por lo que puedo decir, todos los puntos (¿la mayoría?) Son ofrecidos por node-webkit también, pero no estoy seguro de si podría haber algo que me falta.
Sven Slootweg

hola luke, ¿es posible actualizar la aplicación atom-shell por sí misma ...?
Munish Kapoor

@SvenSlootweg Lo siento, me perdí tu comentario de hace unos meses; Desafortunadamente, no estoy bien versado con node-webkit y no pude comparar los dos de manera efectiva. Pero sí leí este artículo de StrongLoop , que al menos indica que Atom-Shell ha abierto nuevos caminos. : \
Luke Chavers

@MunishKapoor ¿Para el desarrollo? Puede descargar la última versión. Más o menos solo cambio el nombre del antiguo directorio de átomos y lo reemplace por el nuevo. Es posible que tengan algún proceso elegante como "actualización npm", pero no lo he investigado. Para actualizar su aplicación + atom shell en el cliente, no creo que aborden eso directamente (en absoluto) y presumiblemente espero que use un instalador u otra plataforma externa para eso. Sin embargo, este artículo en sus documentos me pareció interesante.
Luke Chavers

1
@Moonwalker Sí, utiliza una aplicación llamada " Asar " para empaquetar. (ver: "Empaquetado de la aplicación" ). También acabo de encontrar esta comparación Node-Webkit / Atom-Shell .
Luke Chavers

22

Además de admitir completamente los estándares web, NW.js admite una lista de características no estándar para el desarrollo de aplicaciones nativas que incluyen:

Hay mucho más para ver en la wiki, incluido Menú, Bandeja, etc.


3
+1 en modo quiosco Roger. Puedo ver que es una característica que usaré en el futuro. Espero que las capacidades de depuración mejoren para poder permanecer en nw.js, sin embargo, en este momento estoy considerando seriamente cambiarme a Atom Electron por un tiempo para probar las aguas. He encontrado que la depuración en nw.js es un poco deficiente.
Timothy C. Quinn

Estoy un poco preocupado por la inclusión de "proteger la fuente JS" allí; está en la misma clase que DRM, en el sentido de que no funciona. Solo "protege" de aquellos contra los que no necesita "proteger" para empezar. No parece algo que deba anunciarse como una característica para mí.
Sven Slootweg

1
No es como DRM para Web: los programadores de JS deberían poder hacer cualquier cosa como los programadores de C ++, incluida la compilación del código fuente al código de máquina, cuando desarrollan aplicaciones nativas.
Roger Wang

@JavaScriptDude, ¿te refieres a los devtools? En la próxima versión (0.13) la experiencia será casi la misma que en el navegador Chrome.
Roger Wang

@Roger. Lo siento por la respuesta demorada. Sí, devtools. Encontré que las siguientes limitaciones estaban allí, algunas de las cuales probablemente están en las propias herramientas de desarrollo: 1) No se inició la depuración de nuevas ventanas. 2) La depuración remota nunca funcionó. 3) Incapacidad para recuperar puntos de interrupción, ver variables y fuentes abiertas (cada vez que reinicia la aplicación, se borran todas las configuraciones) 4) (el problema real) Incapacidad para depurar el código cargado con require ().
Timothy C. Quinn

10

He estado trabajando con brackets-shell durante algún tiempo, estos son algunos de mis hallazgos:

  • brackets-shell se desarrolla principalmente como un shell bajo el proyecto IDE brackets, pero el proyecto puede ejecutar cualquier aplicación web. Solo necesita apuntarlo a su propia página html. Clint Berry escribió un excelente tutorial sobre cómo hacer esto: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • El proyecto está respaldado por Adobe y tiene mucha actividad.
  • La documentación podría ser mejor.

  • soporte de plataforma Admite Windows, Mac y Linux. También se puede crear un paquete de instalación. Solo lo probé en Win y Mac, funciona muy bien.

  • soporte de funciones html5, css3, js. El video html5 no funciona de fábrica, pero es muy fácil de habilitar (de manera predeterminada, ffmpegsumo.dll no se copia en el instalador, si cambia el script para copiarlo funcionará).
  • barra de menú de características nativas , 'abrir archivo con', acceso al sistema de archivos. No estoy usando ninguno de estos, ya que todo lo que necesito es la comunicación con el proceso del nodo.
  • extensibilidad a nodejs integrado, y puede comunicarse con node desde su aplicación web. De esta manera, puede usar el nodo para acceder al sistema de archivos, etc.
  • arquitectura El proyecto está bien configurado, manteniendo una agradable separación entre el proyecto de shell y su propia aplicación web que se ejecuta dentro de él. En su propia aplicación, está disponible un objeto global de aplicaciones que le brinda acceso a la funcionalidad de corchetes (acceso al sistema de archivos, comunicación con el proceso de nodo, ...).

66
Lo que me hizo alejarme de Brackes-shell fue su propia visión general. github.com/adobe/brackets-shell "Nota: Brackets -shell solo se mantiene para uso del proyecto Brackets. Aunque algunas personas definitivamente han tenido éxito al usarlo como un shell de aplicaciones para otros proyectos, no proporcionamos ningún oficial soporte para eso y no hemos hecho un montón de trabajo para hacer que el shell de la aplicación sea fácilmente reutilizable. A muchas personas probablemente les resulte más fácil usar un proyecto como node-webkit, que es más genérico por diseño ".
John W. Clark

5

Una cosa a tener en cuenta (si le importa), es que el Electron oficialmente no es compatible con Windows Vista. La cuota de mercado de Vista está a medio camino entre OSX 10.9 y 10.10 (los cuales son totalmente compatibles con Electron). Vista también es compatible con Microsoft hasta 2017.

NW.js funciona bien en Vista, así como en OSX 10.9+. NW.js funciona en Ubuntu, Debian, Zorin, Manjaro, Arch y la mayoría de los sistemas operativos Linux basados ​​en Debian. Electron ha rechazado las relaciones públicas para corregir errores específicos de Ubuntu en su plataforma, lo cual es preocupante.

NW.js también funciona en XP. Actualmente el 18% del mercado todavía está en XP. Por lo tanto, si su aplicación de escritorio tiene un propósito más general o desea tener acceso a los adoptadores tardíos que todavía están en XP, probablemente esté mejor con NW.js (0.14.7) ya que Electron solo admite Win 7 y versiones posteriores.

Si usa NW.js 0.12.3 también puede soportar OSX 10.6+ y versiones muy antiguas de sistemas operativos Linux basados ​​en Debian como Ubuntu y Win XP +. Sin embargo, se recomienda hacer compilaciones especiales solo para esos sistemas heredados y usar las versiones más nuevas de NW.js para los sistemas operativos más nuevos.


1
Chrome no detuvo el soporte después de que MS lo hizo - el soporte se extendió hasta finales de 2015 - chrome.blogspot.com/2015/04/…
Karol Klepacki

electron (atom-shell) no se ejecuta en RHEL 6.6 y versiones inferiores, y el código fuente no se puede compilar en esas distribuciones.
Michael Kruglos


Puede usar nw-builder para crear las versiones MAS. Hay brazo construye para NW.js también.
Jaredcheeda
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.