Node-Webkit vs Electron

Nous prévoyons de créer une application de bureau multiplateforme. Nous avons constaté que Node-Webkit est un choix parfait pour nous. Mais GitHub a développé son propre framework appelé Electron au lieu d’utiliser Node-Webkit.

Quelle est la différence entre eux?

Electron a une page expliquant les différences avec node-webkit:

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

Comme Node-Webkit, Electron fournit une plate-forme pour écrire des applications de bureau avec JavaScript et HTML, et l’intégration des nœuds pour accorder l’access à un système de bas niveau dans les pages Web.

Mais il existe également des différences fondamentales entre les deux projets qui font d’Electron un produit complètement distinct de Node-Webkit:

1 – Inscription de la demande

Dans NW.js, le point d’entrée principal d’une application est une page Web ou un script JS. Vous spécifiez un fichier html ou js dans le package.json et il est ouvert dans une fenêtre de navigateur en tant que fenêtre principale de l’application (dans le cas d’un point d’entrée html) ou le script est exécuté.

Dans Electron, le point d’entrée est un script JavaScript, au lieu de fournir directement une URL, vous devez créer manuellement une fenêtre de navigateur et y charger le fichier HTML avec l’API correspondante. Vous devez également écouter les événements de la fenêtre pour décider à quel moment quitter l’application.

Ainsi, Electron fonctionne plus comme le runtime Node.js, et les API sont de bas niveau, vous pouvez également utiliser Electron à des fins de test Web comme phantomjs,

2 – Système de construction

Afin d’éviter la complexité de la construction de l’ensemble du chrome, Electron utilise libchromiumcontent pour accéder à l’API de contenu de Chromium, libchromiumcontent est une bibliothèque partagée unique qui inclut le module Chromium Content et toutes ses dépendances. Les utilisateurs n’ont donc pas besoin d’une machine puissante pour construire atom-shell.

3 – Intégration des nœuds

Dans Node-Webkit, l’intégration des nœuds dans les pages Web nécessite une mise à jour du chrome pour fonctionner, tandis qu’Electron a choisi une autre façon d’intégrer la boucle libuv à la boucle de messages de chaque plate-forme pour éviter le piratage du chrome.

4 – Multi-contexte

Si vous êtes un utilisateur expérimenté de Node-Webkit, vous devez vous familiariser avec le concept de contexte de nœud et de contexte Web. Ces concepts ont été inventés en raison de la manière dont Node-Webkit a été implémenté.

En utilisant la fonctionnalité multi-contexte de Node, Electron n’introduit pas de nouveau contexte JavaScript dans les pages Web.

Protection du code source

Electron conditionne ses applications avec asar , qui contient le code source non protégé des applications. Cela permet à l’application 1 d’extraire l’application 2 et d’injecter des scripts vulnérables, sans que l’utilisateur le sache. Vous pouvez extraire ce projet sur GitHub pour voir un exemple de manipulation de l’application Slack pour un exemple. Pour le moment, l’équipe Electron n’a pas l’intention de mettre en place un support pour la protection du code source .

NW.js prend en charge la compilation de votre code source en fichiers binarys protégés .