web-dev-qa-db-fra.com

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?

71
Fizer Khan

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 possède une intégration Node) permettant d’accéder au 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 totalement distinct de Node-Webkit:

1 - Entrée de candidature

Dans NW.js, le point d’entrée d’une application est une page Web ou un script JS. Vous spécifiez un fichier html ou js dans le package.json et celui-ci s'ouvre dans une fenêtre du 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 fenêtre pour décider quand quitter l'application.

Donc Electron fonctionne plus comme le runtime Node.js, et les APIs sont plus bas niveau, vous pouvez aussi utiliser Electron à des fins de test web comme phantomjs,

2 - Construire le système

Pour é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 comprenant le module Contenu de Chromium et toutes ses dépendances. Les utilisateurs n'ont donc pas besoin d'une machine puissante pour construire Atom-Shell.

3 - Node integration

Dans Node-Webkit, l’intégration Node dans les pages Web nécessite l’application de correctifs à Chromium, tandis que dans Electron, nous avons choisi une méthode différente pour intégrer la boucle libuv à la boucle de message de chaque plate-forme afin d’éviter le piratage de Chromium. node_bindings code expliquant comment cela a été fait.

4 - Multi-contexte

Si vous êtes un utilisateur expérimenté de Node-Webkit, vous devez connaître le concept de contexte Node et 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 compresse 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 ne le sache. Vous pouvez payer ce projet sur GitHub pour voir un exemple de la façon de manipuler l'application Slack pour un exemple. Pour le moment, l'équipe Electron ne prévoit pas de mettre en place un support pour la protection du code source .

NW.js a support intégré pour la compilation de votre code source en fichiers binaires protégés .

71
max collomb