Quelle est la meilleure alternative à Electron ? Découvrons-le.

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

스크립트

00:00:00Construire des applications de bureau multiplateformes signifiait autrefois se tourner vers Electron, mais aujourd'hui, nous avons
00:00:04l'embarras du choix. Pour dissiper toute confusion, nous comparons aujourd'hui les trois meilleures options pour
00:00:09créer des applications de bureau multiplateformes : Tauri, écrit en Rust, Electro-Bun de l'équipe Bun,
00:00:14Deno Desktop, la nouvelle offre de Deno. Nous utiliserons également Electron comme référence. Si vous souhaitez
00:00:20voir un autre outil couvert sur cette chaîne, faites-le-moi savoir dans les commentaires.
00:00:23Nous comparerons quatre éléments : la taille du bundle, la performance au démarrage, la performance d'exécution et l'expérience
00:00:29développeur. J'ai créé la même application quatre fois : un outil d'enregistrement d'écran qui permet d'éditer les résultats
00:00:35sur une timeline et d'exporter en MP4. J'ai spécifiquement choisi ce type d'application car le traitement vidéo
00:00:40peut pousser ce genre d'outils à leurs limites. Bien sûr, tout ne dépend pas de la performance.
00:00:44Les compétences de votre équipe et le type de produit que vous construisez influenceront le type de
00:00:49framework que vous choisissez, mais j'espère que cela pourra vous guider sur ce à quoi vous attendre.
00:00:58Passons donc rapidement à une démo de l'application que nous avons construite. Nous commençons par lancer
00:01:03notre application, nous pouvons choisir quel écran enregistrer puis appuyer sur le bouton d'enregistrement. Maintenant, nous pouvons faire un court enregistrement
00:01:08de l'écran. Une fois terminé, nous appuyons sur stop, puis une fenêtre apparaîtra avec notre enregistrement sur la
00:01:12timeline. Nous pouvons ensuite couper cela pour supprimer les temps morts, puis cliquer sur exporter pour sortir un MP4. L'application est
00:01:18en fait incroyablement simple, mais comme nous utilisons plusieurs API, l'enregistrement, le traitement vidéo et
00:01:24le rendu de l'interface utilisateur, cela devrait être un test décent. La première chose que nous allons vérifier est la
00:01:28taille du bundle. N'oubliez pas que ces applications offrent toutes des fonctionnalités identiques. Electron, comme référence, fait 323
00:01:35mégaoctets. Tauri arrive à seulement 57 mégaoctets, Electro-Bun fait 418 mégaoctets et Deno fait 111 mégaoctets.
00:01:44Tous intègrent également ffmpeg pour les exports en MP4, ce qui ajoute 45 mégaoctets à lui seul. Electro-Bun est si
00:01:52grand parce que j'ai dû livrer Chromium avec. J'ai essayé très fort, mais je n'ai littéralement pas pu faire
00:01:56fonctionner l'enregistrement d'écran avec la vue web native du système, spécifiquement pour enregistrer depuis JavaScript.
00:02:01Vous avez besoin de l'API de capture d'écran et de la fonction getDisplayMedia. Vous demandez à l'écran au navigateur
00:02:06il vous donne un flux, le MediaRecorder l'encode, et c'est comme ça qu'Electron et Deno le font. Electro-Bun
00:02:12n'inclut pas du tout cette API, donc le seul moyen d'y accéder est de réintroduire Chromium, et cela
00:02:17ajoute 200 mégaoctets supplémentaires de lourdeur. L'API de Deno l'a implémentée, donc c'est le même code
00:02:24mais sans Chromium, et c'est pourquoi la taille du bundle de Deno finit par être d'environ 100 mégaoctets, et Electro-Bun
00:02:30finit par être plus proche de 400. Rust n'avait besoin de rien de tout cela car Tauri n'enregistre pas depuis
00:02:35la vue web du tout ; il le fait entièrement par le backend via le kit de capture d'écran natif. C'est
00:02:40le même framework macOS que QuickTime utilise, et tout est enregistré directement depuis le backend. Vous lui donnez
00:02:46un affichage, un codec et un chemin de fichier, et il écrit le fichier lui-même. La vue web n'est que l'interface utilisateur, elle ne touche jamais
00:02:52une seule image. Et vous obtenez aussi des choses gratuitement que la version JavaScript doit gérer.
00:02:56Le kit de capture d'écran mixe lui-même votre micro et l'audio système, et il finalise un MP4 correct. J'ai
00:03:02aussi laissé ffmpeg dans l'application Tauri pour pouvoir exporter vers différents formats, mais techniquement, c'est
00:03:07en fait optionnel. Okay, maintenant nous pouvons lancer ces applications pour détecter le temps de démarrage. J'ai écrit un script
00:03:13qui fait cela 10 fois pour pouvoir prendre la médiane. Electron, comme référence, était à 273 millisecondes, Tauri
00:03:19est en fait arrivé à 311 millisecondes, Electro-Bun était à 773 millisecondes et Deno à 242 millisecondes.
00:03:29La surprise ici pour moi a été que Tauri n'était pas le plus rapide, il est juste un cheveu derrière Electron, et Deno
00:03:34a en fait battu tout le monde. L'hypothèse serait que Rust plus la vue web système signifierait des démarrages
00:03:39instantanés, mais comme le moteur de rendu doit quand même démarrer dans tous les cas, c'est probablement ce qui contribue à
00:03:44la vitesse de démarrage légèrement plus lente. Electro-Bun est l'exception, presque trois fois Electron ; il lance
00:03:50un lanceur qui démarre Bun qui démarre Chromium, trois runtimes en chaîne, et on peut vraiment le sentir.
00:03:56Maintenant, regardons la mémoire après le lancement. Une fois que l'application est réellement en cours d'exécution, Electron est la référence
00:04:01encore, et c'était 128 mégaoctets. Tauri est arrivé à 109 mégaoctets, Electro-Bun à 208 mégaoctets et Deno à 98
00:04:10mégaoctets. Donc Deno et Tauri étaient pratiquement égaux, et Electro-Bun était pratiquement le double de tout le
00:04:15reste. Pour Tauri, ce n'est pas du tout l'amélioration x10 que le marketing suggère. Sur disque, oui, c'est beaucoup
00:04:21plus petit, mais l'empreinte mémoire réelle quand l'application tourne est beaucoup plus similaire aux autres
00:04:26outils. Et une chose à surveiller quand vous faites ces vérifications vous-même : Tauri utilise le
00:04:31système webview, et ces processus ne sont pas des enfants de votre application ; macOS les lance séparément, donc
00:04:36le moniteur d'activité montre Tauri à environ 36 mégaoctets, et on dirait qu'il bat Electron trois fois,
00:04:42mais ce n'est pas le cas. Donc, quand vous additionnez tous ces processus, les 36 mégaoctets deviennent plus proches de 109 mégaoctets,
00:04:48ce qui est ce que nous avons enregistré lors du test. En termes d'enregistrement d'écran lui-même, j'ai remarqué une bien meilleure
00:04:53performance de l'application Tauri, et c'est probablement parce que nous n'enregistrons pas les données dans la webview
00:04:58pour ensuite les transférer via un pont ; au lieu de cela, tout est enregistré avec le SDK natif qui vient
00:05:04avec le système. Si vous voulez vous rapprocher de captures à 60 fps, alors Rust et Tauri seront le
00:05:10chemin à suivre. Maintenant, regardons l'expérience développeur. En raison des différences de chaque plateforme, cette application simple
00:05:15n'était en fait pas du tout simple à construire. Globalement, Electron et Tauri étaient les plus faciles à
00:05:20implémenter, mais Deno et Electro-Bun ont en fait eu énormément de problèmes et de crashs système. Dans Deno, quand nous
00:05:26commencions un enregistrement puis cachions l'application, l'application entière se fermait simplement. Je pense que c'est parce que
00:05:30quand aucun écran ne reste visible, Deno suppose simplement que l'application est terminée, et il a donc terminé
00:05:36le processus entier. Donc, la solution de contournement était simplement de cacher la vue hors de l'écran à la place.
00:05:41Electro-Bun avait tous ces problèmes autour du besoin de bundler Chromium pour l'enregistrement d'écran, et pour une certaine
00:05:46raison, le paquet dépend en fait de 3js et BabylonJS, qui sont pour le rendu 3D, ce qui a contribué à la
00:05:53taille gonflée du bundle. Donc, dans l'ensemble, personnellement, je choisirais Tauri. Mais si vous ne voulez vraiment pas programmer
00:05:58en Rust, alors Electron reste la plateforme mature pour les développeurs TypeScript. Deno a l'air bien, mais je pense que
00:06:04la plateforme a encore besoin d'un peu de temps pour arriver à maturité. Et Electro-Bun, pour moi, était la pire de toutes.
00:06:09J'espère donc que vous pourrez vous faire votre propre avis. Dites-moi ce que vous en pensez dans les commentaires. Et nous avons aussi
00:06:13fait une vidéo entièrement sur Deno Desktop, donc si vous voulez en apprendre plus à ce sujet, alors vous pouvez cliquer sur cette
00:06:18vidéo ici. Sinon, c'était Warren de Betterstack. Merci d'avoir regardé, et je vous dis à la prochaine.

핵심 요약

Pour le développement d'applications de bureau, Tauri offre le meilleur équilibre entre taille de bundle réduite (57 Mo) et performance d'exécution native, bien qu'Electron reste l'option la plus stable pour les équipes TypeScript.

하이라이트

  • Tauri produit un bundle de 57 Mo contre 323 Mo pour Electron, soit une réduction significative de la taille sur disque.

  • Deno Desktop affiche le temps de démarrage le plus rapide avec 242 ms, devançant Electron (273 ms) et Tauri (311 ms).

  • L'utilisation de Rust et du SDK de capture d'écran natif permet à Tauri d'enregistrer l'écran sans solliciter la vue web, offrant de meilleures performances.

  • Electro-Bun nécessite l'inclusion de Chromium pour la capture d'écran, portant la taille de son bundle à 418 Mo.

  • L'empreinte mémoire en exécution est similaire pour tous les frameworks : 109 Mo pour Tauri, 98 Mo pour Deno et 128 Mo pour Electron.

  • Tauri est le choix recommandé pour la performance, tandis qu'Electron reste la plateforme la plus mature pour les développeurs TypeScript.

타임라인

Comparaison de la taille des bundles

  • Electron occupe 323 Mo, Tauri 57 Mo, Deno 111 Mo et Electro-Bun 418 Mo.
  • L'intégration de l'API de capture d'écran via Chromium alourdit considérablement Electro-Bun.
  • Tauri utilise le kit de capture natif du système, évitant l'inclusion de Chromium.

La taille du bundle est mesurée pour des applications identiques intégrant ffmpeg pour l'exportation. La dépendance d'Electro-Bun à Chromium pour accéder à l'API getDisplayMedia génère un surcoût de 200 Mo. Tauri, écrit en Rust, délègue l'enregistrement au backend natif, ce qui permet de maintenir la webview pure et légère.

Performance au démarrage et mémoire

  • Deno Desktop obtient le temps de démarrage le plus rapide avec 242 ms.
  • Tauri atteint une empreinte mémoire de 109 Mo, proche des 128 Mo d'Electron.
  • Les processus de webview sur macOS sont lancés séparément, ce qui peut fausser les mesures de mémoire individuelles.

Les mesures médianes sur 10 lancements révèlent que le démarrage de Tauri est légèrement plus lent qu'Electron (311 ms contre 273 ms). En cours d'exécution, l'avantage de Tauri ne se traduit pas par une réduction par dix de la mémoire, comme le suggère parfois le marketing, mais reste efficace. Le SDK natif utilisé par Tauri offre cependant une fluidité supérieure pour la capture vidéo.

Expérience développeur et conclusions

  • Electron et Tauri présentent la meilleure stabilité lors de la construction de l'application.
  • Deno et Electro-Bun rencontrent des problèmes fréquents de crash système lors de la manipulation de fenêtres.
  • Tauri est préféré pour sa performance, tandis qu'Electron reste la référence pour l'écosystème TypeScript.

La complexité d'implémentation varie fortement entre les plateformes. Deno nécessite des solutions de contournement pour éviter la fermeture du processus lors de la réduction de la fenêtre. Electro-Bun, en plus de sa taille excessive, comporte des dépendances inutiles comme 3js. L'expertise technique en Rust est le facteur déterminant pour choisir Tauri.

커뮤니티 글

모든 글 보기