IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Rédacteur technique
    Inscrit en
    juin 2016
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2016
    Messages : 1 747
    Points : 40 250
    Points
    40 250
    Par défaut Svelte NodeGUI, une alternative à Electron, plus légère, avec une interface utilisateur native
    Svelte NodeGUI, une alternative à Electron, plus légère selon ses développeurs, avec une interface utilisateur native,
    pourrait-il vraiment concurrencer Electron ?

    Jamie Birch, développeur logiciel, a dévoilé Svelte NodeGUI, un outil permettant de créer des applications de bureau avec le framework JavaScript Svelte. L'auteur explique que vous pouvez le considérer comme une variante légèrement modifiée du runtime Node.js qui se concentre sur les applications de bureau plutôt que sur les serveurs Web. Il le décrit aussi comme une alternative légère à Electron, déjà très populaire pour créer des applications pour le bureau (Ex : VS Code, Slack, Facebook Messenger et Twitch). Alors, Svelte NodeGUI a-t-il ce qu'il faut pour concurrencer Electron ? Voici un aperçu des caractéristiques de l'outil.

    Birch explique que Svelte NodeGUI est un moteur de rendu Svelte pour NodeGUI, qui est une liaison JavaScript efficace à une bibliothèque Qt d'interface utilisateur graphique multiplateforme. Il note que Qt est l'une des bibliothèques les plus matures et les plus efficaces pour la création d'applications de bureau. Cela permettrait donc à Svelte NodeGUI d'être extrêmement efficace en termes de mémoire et de CPU par rapport à d'autres solutions populaires d'interface graphique JavaScript pour le bureau.

    Nom : logox200.png
Affichages : 19581
Taille : 6,6 Ko

    Rappelons que Svelte est un framework Web qui, selon son concepteur Rich Harris, a pour l'objectif de compilé du code JavaScript afin de produire un code de qualité, le plus léger possible, sans abstraction ou virtualisation du DOM, pour un chargement hyper court et des performances très rapides. Un des plus gros avantages qu'il cite à Svelte est le très faible poids de l’application une fois compilée. Ce qui promettrait une vitesse de chargement impossible à atteindre avec des frameworks comme Angular, Vue.js ou React, qui embarquent un « runtime » en plus du code logique de l’application.

    Selon la documentation de l'outil, Svelte NodeGUI utilise des composants natifs au lieu de composants basés sur le Web comme éléments de base. Pour comprendre la structure de base d'une application Svelte NodeGUI, vous devez donc être familier avec JavaScript ou TypeScript et Svelte. En ce qui concerne le développement, une application Svelte NodeGUI est essentiellement une application Node.js. Le point de départ est un "package.json" qui est identique à celui d'un module Node.js. En outre, Svelte NodeGUI utilise un système de mise en page qui permet de disposer automatiquement les éléments enfants au sein d'un composant.

    Cela permettrait de s'assurer qu'ils utilisent bien l'espace disponible. Svelte NodeGUI prend en charge les composants fixes et les composants dynamiques. Dans le premier cas, la hauteur et la largeur d'un élément déterminent sa taille à l'écran. La façon la plus simple de définir les dimensions d'un composant est d'ajouter une largeur et une hauteur fixes au style. Cette méthode est courante pour les composants qui doivent toujours rendre exactement la même taille, quelles que soient les dimensions de l'écran. Par contre, les mises en page dynamiques positionnent et redimensionnent automatiquement les composants lorsque l'espace disponible pour eux change.

    Nom : kitchen.png
Affichages : 2767
Taille : 43,3 Ko

    Cela garantit qu'ils sont disposés de manière cohérente et que l'interface utilisateur dans son ensemble reste utilisable. Svelte NodeGUI prend actuellement en charge la mise en page à l'aide de FlexLayout. Notons que FlexLayout permet aux composants enfants de s'agrandir et de se rétrécir de manière dynamique en fonction de l'espace disponible. Birch explique qu'ici, vous utiliserez normalement "flex : 1", qui indique à un composant de remplir tout l'espace disponible, partagé de manière égale entre les autres composants avec le même parent. Plus la flexibilité est grande, plus le ratio d'espace qu'un composant prendra par rapport à ses frères et sœurs sera élevé.

    Par ailleurs, Svelte NodeGUI vous permet d'écouter divers événements qui pourraient provenir des widgets Qt sous-jacents. Ces événements peuvent être soit un simple clic sur un bouton, soit un changement de texte sur un "LineEdit" ou même quelque chose comme une fenêtre cachée et affichée. Pour ce faire, il vous faut associer un auditeur d'événements au widget correspondant. Selon la documentation, techniquement, l'auditeur d'événements est une instance de "NodeJs EventEmitter" qui écoute les événements du widget Qt sous-jacent.

    D'autre part, de nombreuses applications doivent charger des ressources à partir d'une URL distante. Vous pouvez vouloir faire une requête POST à une API REST, ou vous pouvez avoir besoin de récupérer un morceau de contenu statique d'un autre serveur. Il est important de garder que les applications Svelte NodeGUI ne s'exécutent pas dans un navigateur et n'ont donc pas accès aux API du navigateur. L'application Svelte NodeGUI est essentiellement une application Node.js. Et dans une application Node.js typique, vous utiliseriez une bibliothèque tierce comme axios, node-fetch ou frisbee pour réaliser cette fonctionnalité.

    Enfin, selon le développeur de Svelte NodeGUI, une application "Hello World" construite avec Svelte NodeGUI fonctionne avec moins de 20 Mo de mémoire. En comparaison, une application "Hello World" construite avec Electron utiliserait environ 115 Mo de mémoire. En fait, ce code existe à la fois sur le disque et en mémoire : lorsque l'application Electron démarre, elle doit charger ces bibliothèques dans la RAM.

    Caractéristiques et fonctionnalités de Svelte NodeGUI

    Svelte NodeGUI est caractérisé par les éléments ci-après.

    • plateforme croisée : Svelte NodeGUI devrait fonctionner sur les principales saveurs de Linux, Windows et macOS.
    • faible encombrement du processeur et de la mémoire : le CPU actuel reste à 0 % en veille et l'utilisation de la mémoire est inférieure à 20 Mo pour un programme "Hello World" ;
    • design : stylisation avec CSS (y compris la mise en cascade réelle). Avec Svelte NodeGUI, vous pouvez créer un composant selon vos besoins. Si vous êtes familier avec les CSS dans le monde du Web, vous vous sentirez comme chez vous. Tous les composants acceptent le support de style pour la définition des styles en ligne. Les noms et les valeurs des styles correspondent généralement au fonctionnement du CSS sur le Web. Svelte NodeGUI prend également en charge la mise en page avec Flexbox (grâce à Yoga) ;
    • prise en charge complète de l'API Node.js (fonctionne actuellement sur Node v12.x, et peut être facilement mis à niveau). Il a donc accès à tous les modules npm compatibles avec Node.js ;
    • support natif des widgets pour l'écoute des événements : Svelte NodeGUI prend en charge tous les événements disponibles à partir de Qt/NodeJs ;
    • Svelte NodeGUI peut être utilisé pour des applications commerciales ;
    • Svelte NodeGUI a un "bon" support des Devtools ;
    • Svelte NodeGUI prend en charge le monde sombre (grâce à Qt) ;
    • Svelte NodeGUI prend en charge TypeScript de première classe. Il fonctionne également sur les projets JS réguliers.


    Rappelons que récemment, Tauri, une chaîne d'outils permettant de créer des applications natives pour le bureau, s'illustrait également comme une alternative sérieuse à Electron. Comme le décrit son site officiel, Tauri est une chaîne d'outils polyglotte permettant de créer des applications natives plus sûres avec des binaires à la fois minuscules et rapides. "Polyglotte" signifie que Tauri utilise plusieurs langages de programmation. Pour l'instant, Rust, JavaScript et TypeScript sont utilisés, mais les développeurs de la chaîne d'outils prévoient de vous permettre d'utiliser Go, C++, Python, et plus encore. Tauri permettrait d'utiliser n'importe quel framework frontal basé sur HTML et JavaScript, tel que Vue.js, React ou Angular, pour créer une application de bureau native.

    Source : Page GitHub de Svelte NodeGUI

    Et vous ?

    Que pensez-vous de Svelte NodeGUI ?
    Pensez-vous qu'il pourra s'imposer face à Electron ?
    20 Mo de mémoire est-elle normale ou trop grande pour une application "Hello World" ?

    Voir aussi

    La version 3 de Svelte, un framework JavaScript de composants graphiques, supporte officiellement le langage de programmation TypeScript depuis juillet 2020

    Electron, le framework pour le développement des apps multiplateformes de bureau avec HTML, CSS et JS, est disponible en version 11.0 et intègre désormais le support de l'architecture ARM64 d'Apple

    Faut-il utiliser Electron pour le développement d'applications de bureau ? Quels sont ses avantages et inconvénients ?
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    octobre 2011
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : octobre 2011
    Messages : 189
    Points : 188
    Points
    188
    Par défaut
    Dès que tu incorpore un navigateur ça devient lourd non ? donc si c'est toujours la même chose le gain en performance doit être minime

  3. #3
    Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    septembre 2020
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2020
    Messages : 18
    Points : 61
    Points
    61
    Par défaut
    Il faudrait vérifier mais QT... intègre un moteur javascript il me semble pour la gestion de son langage QML... pas de rapport mais c'est juste pour souligner l'étonnement de l'approche ;-)

    De plus c'est pouvoir faire du design desktop mais sans bénéficier des outils de design desktop de qT (Designer)... ce n'est pas revenir en arrière ? Oui je sais, on ne fait pas de Qt dans le navigateur, mais bon, si on cherche la performance sur le desktop ça peut être interessant...

    Embarqué un moteur d'éxecution javascript est peut être un peu plus lourd que faire du QT non ? Si c'est le C++ qui est derrière qui fait peur, il existe également les binding en python...

    Quid des licences lorsqu'on souhaite faire une application commerciale si QT est derrière ?

    Et enfin : Le monde n'a pas attendu javascript pour faire du multiplateforme (et Il n'y a pas que Qt...). N'est il pas interessant de faire un effort pour sortir de Javascript et aller explorer d'aures solutions comme GTK (binding python également et je crois javascript) ? Bien sur il n'y a pas le développement portable dans le navigateur... alors pourquoi ne pas tester Flutter ?

    Oui il y a plus de développeurs html5/Css/Javascript, oui. Avant il y avait plus de programmeur Cobol...

    Aller, c'est parti pour un débat !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    novembre 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2009
    Messages : 462
    Points : 1 115
    Points
    1 115
    Par défaut C'est pas la même chose
    Je n'ai lu que la news, pas suivi les liens.
    Mais si je comprends bien on est obligé d'utiliser svelte et on dispose seulement d'un subset de css, celui compris par le framework.
    Ça n'a rien à voir avec electron qui nous permet de tourner nos sites web tels quels en application desktop avec accès aux fichiers et exe locaux, avec le JavaScript qu'on veut et le css qu'on veut

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Technicien de maintenance / Developpeur PHP
    Inscrit en
    mai 2015
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien de maintenance / Developpeur PHP
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2015
    Messages : 346
    Points : 1 264
    Points
    1 264
    Par défaut
    Que pensez-vous de Svelte NodeGUI ?

    Pourquoi, après Electron qui est déjà pas la meilleur idée du siècle, vouloir reproduire le truc avec Tauri ou Svelte NodeGUI ?

    Pensez-vous qu'il pourra s'imposer face à Electron ?

    Honnêtement quand on voit qui il y a en face, je dirais non, mais en même temps, Electron cartonne alors qu'il est quand même loin d'être la panacée.

    20 Mo de mémoire est-elle normale ou trop grande pour une application "Hello World" ?

    C'est énorme pour un "Hello World", mais avec l'importance de l'application, ça sera forcement de moins en moins dérangeant.
    Il faut plutôt le prendre comme le fait que l'app prendra obligatoirement 20MB de RAM (sont runtime), mais si vous faites une appli métier, ça deviendra forcement moins dérangeant.

    Et dire qu'il y a pas si longtemps, les gens faisaient du Java ou du Delphi pour faire du multi (et encore, le multi consistait à faire du Windows et du Mac), c'est fous comme tout fout l'camps.
    Vouloir absolument faire des appli desktop avec des technos web, c'est chercher la m***e pour des gros projets, autant apprendre directement les techno native.

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : novembre 2006
    Messages : 587
    Points : 3 157
    Points
    3 157
    Billets dans le blog
    2
    Par défaut
    Je suis d'accord avec defZero.

    Juste une petite remarque, pour le multi avec Delphi, ça ne s'arrête pas à Windows et Mac. Il y a en plus Linux, Android et IOS.
    Voici une petite capture d'écran avec les consommations mémoires de différents IDE (ceux que j'ai sur mon pc) seulement lancés sans aucun projet ouvert.

    Nom : captureIDE.png
Affichages : 1283
Taille : 12,0 Ko

    VSCode est une très bonne application basée sur Electron, RAD Studio (Delphi ou C++ Builder en fonction du compilateur utilisé) est écrit avec Delphi.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre éclairé
    Femme Profil pro
    Inscrit en
    juillet 2012
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations forums :
    Inscription : juillet 2012
    Messages : 197
    Points : 707
    Points
    707
    Par défaut
    Pour mon compte je suis passée a Flutter...
    Example de base avec un compteur, executable de build windows en tous 18mb
    Et en plus cross-platform Linux, MacOs, Windows, Android, iOS

Discussions similaires

  1. Quel outils utiliser pour une interface utilisateur avec de gros icones
    Par touc66 dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 18/02/2015, 16h33
  2. Réponses: 4
    Dernier message: 04/04/2012, 10h15
  3. créer une interface utilisateur console pour requetes sur mysql
    Par begonia dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/03/2007, 15h16
  4. Réponses: 3
    Dernier message: 30/04/2006, 20h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo