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 .