que nwjs electronjs node-webkit electron

node-webkit - electronjs - nwjs process



Node-Webkit vs Electron (1)

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 Nodos para otorgar acceso a sistemas de bajo nivel en 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 punto de entrada principal de una aplicación es una página web o un script JS. Especifica un archivo html o js en package.json y se abre en una ventana del navegador como ventana principal de la aplicación (en caso de un punto de entrada html) o se ejecuta el script.

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

Así que Electron funciona más como el tiempo de ejecución Node.js, y las API son más bajas, también puedes usar Electron para pruebas 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. Así que los usuarios no necesitan una máquina poderosa para construir un shell atómico.

3 - Integración de nodos

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

4 - Multi-contexto

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

Al utilizar la función de contexto múltiple 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 ver este proyecto en GitHub para ver un ejemplo de cómo manipular la aplicación Slack para obtener un ejemplo. Por ahora, el equipo de Electron no tiene ningún plan para implementar soporte para la protección del código fuente .

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

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

¿Cuál es la diferencia entre ellos?