Quelles sont les différences fonctionnelles entre NW.js, Brackets-Shell et Electron?

151

Maintenant que TideSDK est effectivement mort, j'ai cherché des «wrappers» alternatifs pour exécuter des applications HTML / CSS / JS en tant qu'applications de bureau autonomes. Les trois options viables que j'ai rencontrées jusqu'à présent sont NW.js (anciennement node-webkit), brackets-shell et Electron (anciennement atom-shell).

Le problème est qu'il ne semble pas y avoir de comparaison suffisamment complète entre les trois en termes d'ensemble de fonctionnalités, de compatibilité, etc. J'espère en faire un fil conducteur plus ou moins canonique sur les différences (objectives) entre les trois, notamment en ce qui concerne:

  • Support de plate-forme ; systèmes d'exploitation, dépendances, etc.
  • Prise en charge des fonctionnalités de langage , en ce qui concerne HTML5, CSS3 et JavaScript. Pensez à des choses comme "la vidéo HTML5 fonctionne-t-elle et si oui, quels codecs sont disponibles?"
  • Fonctionnalités supplémentaires non standard , telles que les icônes de la barre d'état, les notifications contextuelles et les barres de menus rendues par le système d'exploitation.
  • Extensibilité ; par exemple. possibilité de «brancher» du code natif, de parler à Node.js, etc.
  • L'architecture ; en particulier les différences architecturales qui affectent l'utilisation quotidienne en tant que développeur.
  • Débogage ; inclus des outils de développement, la compatibilité avec des outils couramment utilisés comme node-inspector, etc.
  • ... etc.

Quelles sont les différences objectives et techniques qui comptent pour faire un choix entre elles en tant que développeur d'applications?

Sven Slootweg
la source
Avez-vous eu de la chance en regardant les différences entre-temps? Pourrait faire un peu de fouille ce week
stefan
@stefan Pas encore, non: / J'ai un peu expérimenté node-webkit dans un sens pratique, mais je ne suis pas encore allé au-delà. Je n'ai pas cherché de documentation formelle sur les différences ...
Sven Slootweg
3
Eh bien, voici les principales différences entre node-webkit et atom-shell décrites par l'équipe atom-shell, github.com/atom/atom-shell/blob/master/docs/development/… .
sepulchered
2
Que diriez-vous de l'éléphant dans la pièce: débogage. J'utilise nw.js et j'ai trouvé que le débogage manquait beaucoup lors de l'utilisation de la plate-forme Linux pour développer. Pour développer des applications volumineuses, le débogage est une fonctionnalité essentielle de l'OMI. Pouvons-nous ajouter le débogage à la liste des fonctionnalités souhaitables auxquelles parler?
Timothy C. Quinn
@JavaScriptDude Merci, j'ai ajouté cela à la liste.
Sven Slootweg

Réponses:

42

J'ai fait des recherches similaires il y a environ deux mois et j'ai finalement opté pour node-webkit. Le plus gros avantage de node-webkit est node.js et npm. La gestion des paquets de npm est vraiment sympa, et le nœud a un accès au système de fichiers bien fait.

Brackets-shell avait l'air intéressant, mais à part un bel IDE, je n'ai pas vraiment compris ce qui rendait celui-ci aussi bon ou meilleur que les autres. Ils sont très clairs sur le fait que "La coque entre parenthèses n'est maintenue que pour être utilisée par le projet Brackets", ça me crie de s'enfuir.

https://github.com/adobe/brackets-shell#overview

Atom-shell semble être récemment actif, mais cela ressemble beaucoup à des crochets en ce sens qu'ils écrivent vraiment et un éditeur / IDE qui se trouve être attaché à un runtime webkit. Il est également construit au-dessus de node.js. Celui-ci a l'inconvénient d'être difficile à rechercher en ligne sans se souvenir de la chimie de votre collège.

Je ne veux vraiment pas d'un nouvel éditeur, et la plupart des programmeurs ont déjà leur favori. Pour le développement d'application proprement dit, ils fonctionnent à peu près de la même manière, et devraient, puisqu'ils utilisent tous webkit. En gros, vous en écrivez 90 à 95% comme un site Web, puis vous traitez les parties natives et certaines config.

Ces choses sont vraies pour les trois plates-formes - s'exécute sur la prise en charge des langues Windows, Mac et Linux - HTML5, CSS3 et Javascript: puisqu'elles exécutent javascript, vous pouvez télécharger et exécuter presque toutes les bibliothèques / frameworks de votre choix.

La grande mise en garde sur Webkit est la prise en charge du codec. En règle générale, vous rencontrez des problèmes avec les codecs vidéo non libres, sauf si vous reconstruisez la dll / so pour les prendre en charge. Par exemple, le node-webkit fourni ne lit pas la vidéo mp4.

John W. Clark
la source
Pourriez-vous préciser s'il y a une différence en ce qui concerne la lecture MP4 entre brackets-shell et atom-shell? Il n'est pas clair d'après votre réponse s'il s'agit d'une bizarrerie dans la plupart des distributions WebKit, ou simplement dans node-webkit.
Sven Slootweg
La lecture MP4 étant un problème est un problème de kit Web. Vous devez vous rappeler que le kit Web est vraiment du chrome dans l'âme, et à moins que la technologie audiovisuelle ne soit ouverte et gratuite, elle ne la prend pas en charge immédiatement. La réponse standard est de remplacer / reconstruire ffmpegsumo. Le remplacer par un de votre installation actuelle de Chrome semble fonctionner assez bien.
John
1
Il se trouve que Brackets est construit sur bracket-shellet Atom est construit sur atom-shell, mais vous pouvez utiliser n'importe quel éditeur ou IDE de votre choix pour créer du code avec eux. Je pense que ce que l'OP veut, c'est davantage sur les différences techniques entre les 3. Ce serait sympa de voir quelque chose comme TodoMVC dans les 3 environnements de type runtime.
Ehtesh Choudhury
@SvenSlootweg la prise en charge du codec concerne davantage les bibliothèques utilisées avec le kit Web que vous utilisez. Tous les trois utilisent Chromium comme base du kit Web, ils ont donc tous les mêmes problèmes de codec et peuvent être résolus de la même manière.
John W. Clark
40

J'ai joué avec Atom-Shell ces derniers jours, et j'adore ça jusqu'à présent.

La meilleure partie à ce sujet est qu'il est soutenu par GitHub .. ce qui devrait vous permettre de vous installer dans la plateforme sur le long terme, surtout si elle gagne un large public. Cela est également rendu possible par des améliorations directes de Node.js grâce à un contrat avec StrongLoop , qui est un contributeur majeur de Node.js (ils prétendent employer plus de développeurs Node.js que toute autre société, même Joyent).

J'ai également trouvé assez confortable de commencer. Il m'a fallu environ une journée pour apprendre la structure et faire fonctionner ma première preuve de concept. Très cool.


Points de balle:

  • Prise en charge de la plate-forme: Windows, Linux, Mac OSX ( plus d'informations ici )
  • Prise en charge des fonctionnalités linguistiques: HTML5, CSS3, JS via Chromium - jusqu'à présent, aucun problème, mais je n'ai pas testé la vidéo en particulier.
  • Fonctionnalités natives: menus d'applications natives, prise en charge de la barre des tâches, touches de raccourci globales, prise en charge du gestionnaire de protocole (que j'ai vu jusqu'à présent)
  • Extensibilité: Excellente intégration Node.js, le client et le serveur peuvent "exiger" des modules Node.js et des natifs. J'ai également testé avec succès les bibliothèques Bower (y compris jQuery) sans problème.
  • Architecture: Couvert dans les autres points, mais en général c'est très lisse.

Mise à jour (25/11/14): Je n'ai pas encore trouvé de cas d'utilisation pour Atom-Shell à quelque titre officiel que ce soit, mais je l'ai utilisé pour créer quelques petites applications pour mon propre usage, la plus complexe étant une application qui tire mon temps se connecte à partir de mon logiciel PM et crée des factures Paypal.

Mon opinion sur la plateforme reste positive. C'est assez génial.

Sur mon application de facturation du temps, j'ai introduit avec succès le modèle d'exemple de tableau de bord de Bootstrap 3 et quelques modules de nœuds (bluebird, Paypal SDK, Teamwork PM Client) pour créer une application légèrement complexe. Cela m'a pris quelques jours et fait bien son travail.

Je ne peux vraiment penser à rien de négatif à dire sur Atom-Shell, son solide, stable, rapide et facile à coder. J'espère que ça aidera quelqu'un.

Luke Chavers
la source
Pouvez-vous préciser les différences avec node-webkit en particulier? Pour autant que je sache, tous (la plupart?) De ces points sont également offerts par node-webkit, mais je ne suis pas sûr qu'il me manque quelque chose.
Sven Slootweg
salut luke est-il possible de mettre à jour l'application atom-shell elle-même ...?
Munish Kapoor
@SvenSlootweg Désolé, j'ai manqué votre commentaire d'il y a quelques mois; Malheureusement, je ne suis pas bien familiarisé avec node-webkit et je n'ai pas pu comparer les deux efficacement. Mais j'ai lu cet article StrongLoop , qui indique au moins qu'Atom-Shell a innové . : \
Luke Chavers
@MunishKapoor Pour le développement? Vous pouvez télécharger la dernière version .. Je renomme plus ou moins simplement l'ancien répertoire atom et le remplace par le nouveau. Ils peuvent avoir un processus élégant comme "npm update" - mais je ne l'ai pas étudié. Pour mettre à jour votre application + shell atom sur le client, je ne pense pas qu'ils abordent cela directement (du tout) et s'attendent probablement à ce que vous utilisiez un programme d'installation ou une autre plate-forme externe pour cela. J'ai cependant trouvé cet article dans leur documentation intéressant.
Luke Chavers
1
@Moonwalker Oui, il utilise une application appelée " Asar " pour l'empaquetage. (voir: "Application Packaging" ). Je viens également de trouver cette comparaison Node-Webkit / Atom-Shell .
Luke Chavers
22

En plus de prendre entièrement en charge les normes Web, NW.js prend en charge une liste de fonctionnalités non standard pour le développement d'applications natives, notamment:

Il y a beaucoup plus à voir dans le wiki, y compris Menu, Tray, etc.

Roger Wang
la source
3
+1 en mode Kiosque Roger. Je peux voir que c'est une fonctionnalité que j'utiliserai à l'avenir. J'espère que les capacités de débogage s'amélioreront pour que je puisse rester sur nw.js, mais pour le moment, j'envisage sérieusement de passer à Atom Electron pendant un certain temps pour tester les eaux. J'ai trouvé le débogage dans nw.js un peu insuffisant.
Timothy C. Quinn
Je suis un peu préoccupé par l'inclusion de la "protection de la source JS" ici - c'est dans la même classe que DRM, dans le sens où cela ne fonctionne pas. Il "protège" seulement de ceux contre lesquels vous n'aviez pas besoin de "protéger" pour commencer. Cela ne me semble pas quelque chose qui devrait être annoncé comme une fonctionnalité.
Sven Slootweg
1
Ce n'est pas comme DRM pour le Web - les programmeurs JS devraient être capables de faire tout ce que les programmeurs C ++ peuvent faire, y compris la compilation du code source en code machine, lorsqu'ils développent des applications natives.
Roger Wang
@JavaScriptDude voulez-vous dire les outils de développement? Dans la prochaine version (0.13), l'expérience sera presque la même que dans le navigateur Chrome.
Roger Wang
@Roger. Désolé pour la réponse tardive. Oui, devtools. J'ai trouvé que les limitations suivantes étaient présentes, dont certaines sont probablement dans les outils de développement eux-mêmes: 1) Aucun débogage des nouvelles fenêtres lancé. 2) Le débogage à distance n'a jamais fonctionné. 3) Incapacité à rappeler les points d'arrêt, les variables de surveillance et les sources ouvertes (à chaque redémarrage de l'application, tous les paramètres sont effacés) 4) (le vrai biggie) Incapacité à déboguer le code chargé avec require ().
Timothy C. Quinn
10

Je travaille avec brackets-shell depuis un certain temps maintenant, voici quelques-unes de mes découvertes:

  • brackets-shell est principalement développé comme un shell sous le projet IDE entre parenthèses, mais le projet peut exécuter n'importe quelle application Web. Il vous suffit de le pointer vers votre propre page html. Clint Berry a écrit un excellent tutoriel sur ce sujet: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • Le projet est soutenu par Adobe et a beaucoup d'activité
  • La documentation pourrait être meilleure

  • support de plate-forme Ils prennent en charge Windows, Mac et Linux. Un package d'installation peut également être créé. Je ne l'ai testé que sur Win et Mac, cela fonctionne très bien.

  • fonction prise en charge html5, css3, js. La vidéo Html5 ne fonctionne pas hors de la boîte, mais est très facile à activer (par défaut, ffmpegsumo.dll n'est pas copié dans le programme d'installation, si vous modifiez le script pour le copier, cela fonctionnera).
  • barre de menus des fonctionnalités natives , «ouvrir le fichier avec», accès au système de fichiers. Je n'utilise aucun de ceux-ci, car tout ce dont j'ai besoin est la communication avec le processus de nœud.
  • extensibilité un nodejs est intégré et vous pouvez communiquer avec node depuis votre application Web. De cette façon, vous pouvez utiliser node pour accéder au système de fichiers, etc.
  • architecture Le projet est bien mis en place, gardant une belle séparation entre le projet shell et votre propre application web exécutée à l'intérieur. Dans votre propre application, un objet Appshell global est disponible qui vous donne accès à la fonctionnalité des crochets (accès au système de fichiers, communication avec le processus du nœud, ...).
Karel Braeckman
la source
6
Ce qui m'a poussé à rester à l'écart de Brackes-shell était leur propre aperçu. github.com/adobe/brackets-shell "Remarque: Le shell brackets n'est maintenu que pour être utilisé par le projet Brackets. Bien que certaines personnes aient certainement réussi à l'utiliser comme shell d'application pour d'autres projets, nous ne fournissons aucun officiel support pour cela et nous n'avons pas fait une tonne de travail pour rendre le shell de l'application facilement réutilisable. Beaucoup de gens trouveront probablement plus facile d'utiliser un projet comme node-webkit, qui est plus générique de par sa conception. "
John W. Clark
5

Une chose à noter (si vous vous en souciez), c'est que l'Electron ne prend officiellement pas en charge Windows Vista. La part de marché de Vista est à mi-chemin entre OSX 10.9 et 10.10 (qui sont tous deux entièrement pris en charge par Electron). Vista est également toujours pris en charge par Microsoft jusqu'en 2017.

NW.js fonctionne très bien sous Vista, ainsi que sous OSX 10.9+. NW.js fonctionne sur Ubuntu, Debian, Zorin, Manjaro, Arch et la plupart des autres systèmes d'exploitation Linux basés sur Debian. Electron a refusé aux RP de corriger les bogues spécifiques d'Ubuntu sur leur plate-forme, ce qui est préoccupant.

NW.js fonctionne également sous XP. Actuellement, 18% du marché est toujours sous XP. Donc, si votre application de bureau est plus générale ou si vous souhaitez avoir accès aux derniers adoptants toujours sous XP, vous êtes probablement mieux avec NW.js (0.14.7) car Electron ne prend en charge que Win 7 et plus.

Si vous utilisez NW.js 0.12.3, vous pouvez également prendre en charge OSX 10.6+ et les très anciennes versions des systèmes d'exploitation Linux basés sur Debian comme Ubuntu et Win XP +. Il est recommandé de faire des versions spéciales uniquement pour ces systèmes hérités et d'utiliser les nouvelles versions de NW.js pour les systèmes d'exploitation plus récents.

Jaredcheeda
la source
1
Chrome n'a pas arrêté le support après que MS l'ait fait - le support a été prolongé jusqu'à la fin de 2015 - chrome.blogspot.com/2015/04
Karol Klepacki
electron (atom-shell) ne fonctionne pas sur RHEL 6.6 et versions antérieures, et le code source ne peut pas être compilé sur ces distributions.
Michael Kruglos
Vous pouvez utiliser nw-builder pour créer les versions MAS. Il y a bras construit pour NW.js aussi bien.
Jaredcheeda le