Node-Webkit vs Electron [cerrado]

81

Estamos planeando construir una aplicación de escritorio multiplataforma. Descubrimos que Node-Webkit es una opción perfecta para nosotros. Pero GitHub desarrolló su propio marco llamado Electron en lugar de usar Node-Webkit.

¿Cuál es la diferencia entre ellos?

Fizer Khan
fuente
2
E lectron contra N W.js (abril de 2017). Stackoverflow preguntas E: 2,630 vs N: 269 , solicitudes de extracción de Github E: 102 vs N: 6 , aplicaciones creadas en Electron vs NW.js y finalmente Google Trends - Electron parece ser la mejor opción.
kinjelom
Elegí 'nw.js' ya que puedo apuntarlo a mi 'index.html' y simplemente funciona. Con 'nw.js' siento que estoy programando para un navegador con 'node.js' agregado en lugar de 'node.js' con un navegador atornillado en el enfoque superior de 'Electron', y ese en mi opinión es el mejor paradigma y acercamiento.
Daniel Sokolowski

Respuestas:

79

Electron tiene una página que explica las diferencias con node-webkit:

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

Al igual que Node-Webkit, Electron proporciona una plataforma para escribir aplicaciones de escritorio con JavaScript y HTML, y tiene integración de Node para otorgar acceso al sistema de bajo nivel en las páginas web.

Pero también hay diferencias fundamentales entre los dos proyectos que hacen de Electron un producto completamente separado de Node-Webkit:

1 - Entrada de solicitud

En NW.js, el principal punto de entrada de una aplicación es una página web o un script JS. Usted especifica un archivo html o js en package.json y se abre en una ventana del navegador como la ventana principal de la aplicación (en el caso de un punto de entrada html) o se ejecuta el script.

Mientras está en Electron, el punto de entrada es un script JavaScript, en lugar de proporcionar una URL directamente, debe crear manualmente una ventana del navegador y cargar el archivo html con la API correspondiente. También debe escuchar los eventos de la ventana para decidir cuándo salir de la aplicación.

Entonces, Electron funciona más como el tiempo de ejecución de Node.js, y las API son de nivel más bajo, también puede usar Electron para fines de prueba web como phantomjs,

2 - Sistema de construcción

Para evitar la complejidad de construir todo Chromium, Electron utiliza libchromiumcontent para acceder a la API de contenido de Chromium, libchromiumcontent es una biblioteca única y compartida que incluye el módulo de contenido de Chromium y todas sus dependencias. Entonces, los usuarios no necesitan una máquina poderosa para construir atom-shell.

3 - Integración de nodos

En Node-Webkit, la integración de Node en páginas web requiere parchear Chromium para que funcione, mientras que en Electron elegimos una forma diferente de integrar el bucle libuv en el bucle de mensajes de cada plataforma para evitar piratear Chromium, consulte el código node_bindings para saber cómo se hizo.

4 - Contexto múltiple

Si usted es un usuario experimentado de Node-Webkit, debe estar familiarizado con el concepto de contexto de Node y contexto web, estos conceptos se inventaron debido a cómo se implementó Node-Webkit.

Al utilizar la función multicontexto de Node, Electron no introduce un nuevo contexto de JavaScript en las páginas web.

Protección de código fuente

Electron está empaquetando sus aplicaciones con asar , que contiene el código fuente desprotegido de las aplicaciones. Esto hace posible que la aplicación 1 extraiga la aplicación 2 e inyecte scripts vulnerables, sin que el usuario lo sepa. Puedes consultar este proyecto en GitHub para ver un ejemplo de cómo manipular la aplicación Slack . Por ahora, el equipo de Electron no tiene planes de implementar soporte para la protección del código fuente .

NW.js ha incorporado soporte para compilar su código fuente en binarios protegidos .

max collomb
fuente
3
Ahora node-webkit cambia de nombre a NW
Marwen Trabelsi
70
Esto podría estar ligeramente sesgado hacia Electron ya que este artículo proviene del repositorio de Electron.
gbmhunter
7
nw.js puede ejecutar aplicaciones de Chrome listas para usar. Eso es valioso para los muchos programadores cuyas aplicaciones en Chrome Webstore pronto quedarán huérfanas.
marlar
16
De hecho, recientemente intenté usar ambos y escribí una publicación de blog al respecto. Descubrí que nw.js es en realidad más simple y fácil de usar que Electron. Es bastante fácil simplemente tomar algunas páginas web y colocarlas en nw.js y listo. Electron es más complicado de configurar y su diseño multiproceso significa que tienes que pasar por aros incluso para hacer cosas sencillas. Sin embargo, Electron tiene una API de integración de plataforma mucho más rica, lo que le permite utilizar funciones nativas de Mac / Windows / Linux de manera más amplia en su aplicación.
Ming-Yee Iu
3
También encontré el navegador NW.js primero con el diseño agregado de Node.js mucho más sano y más fácil de trabajar que el enfoque de Electron de Node.js con el soporte del navegador atornillado en la parte superior. Con NW.js estoy codificando para el navegador, con Electron estoy codificando para Node.js.
Daniel Sokolowski