Developpez.com

Le Club des Développeurs et IT Pro

Mithril : un framework JavaScript moderne, simple, rapide et léger comparé à React ou Angular

Pour ceux qui privilégient la facilité d'intégration

Le 2018-08-21 16:41:30, par Christian Olivier, Expert éminent sénior
La plupart des frameworks modernes sont rapides et bien adaptés pour créer des applis complexes si vous savez les utiliser efficacement.


Mithril.js est un framework JavaScript moderne qui permet notamment de concevoir des applications monopage (single-page application ou SPA). Il est petit (moins de 8 Ko pour son archive gzip), rapide et fournit des utilitaires XHR et de routage prêts à l’emploi. Il bénéficie, en outre, du soutien d’une communauté active qui contribue depuis quelques années déjà à son évolution.

Mithril offre des possibilités similaires à Angular.js (support de la « ;composantisation ;» par exemple) tout en étant beaucoup plus simple à manipuler. Il utilise aussi une représentation interne du DOM (ou Virtual DOM) et se sert de JavaScript comme d’un mécanisme de contrôle de flux dans les vues comme React.js. Ce framework a l’avantage d’être plus léger que React ou Angular et évite d’avoir recours à des librairies tierces telles que jQuery.


Habituellement, un composant fait référence à une partie bien précise et autonome d’une interface utilisateur. Un composant Mithril pour sa part peut se décomposer en deux parties : un contrôleur et une vue. C’est juste un objet avec une fonction de vue. Les composants Mithril facilitent l’écriture de code modulaire. Signalons au passage que Mithril.js identifie automatiquement le moyen le plus efficace pour mettre à jour un code, plutôt que de le recréer aveuglément à partir de zéro.

Mithril pourrait être considéré comme la solution idéale pour créer des widgets JavaScript intégrés et des interfaces utilisateur ayant des exigences de performances élevées. Il permet aussi d’améliorer les performances des applications conçues pour la communication interactive en temps réel entre différents interlocuteurs. De plus, ce framework de développement est supporté par un très grand nombre de navigateurs (incluant Internet Explorer 9) et par toutes leurs versions mobiles.

Mithril est utilisé par de nombreuses sociétés reconnues (Vimeo, Nike ou encore Fitbit) et alimente également de grandes plateformes open source comme Lichess ou Flarum. Ce framework a même déjà permis de concevoir l’application de jeu Guild Wars 2. Son approche pragmatique de la création d’applications le destinerait aux développeurs qui privilégient la cohérence et la facilité d’intégration.

Pour plus d’information sur ce framework et pour avoir la liste exhaustive de toutes ses fonctionnalités, n’hésitez pas à consulter le site officiel.

Source : Mithril

Et vous ?

Qu’en pensez-vous ?
Avez-vous déjà utilisé Mithril ? Comment le trouvez-vous ?
Quel framework JavaScript utilisez-vous le plus actuellement ? En êtes-vous satisfait ?

Voir aussi

Angular : la version 6.0.0 du framework JavaScript de Google est enfin disponible, mais sans le nouveau moteur de rendu Ivy

La version 5.1 du framework JavaScript Angular est disponible, en même temps qu'Angular CLI 1.6 et la première version stable d'Angular Material

Facebook annonce la réécriture des composants internes de son Framework React Native pour faciliter son utilisation avec les applications hybrides

pache Foundation proscrit l’utilisation de licence Facebook comme celle de React
  Discussion forum
26 commentaires
  • bouchery
    Membre à l'essai
    perso je préfère rester sur python car c'est 1 framework pour les gouverner tous, a savoir django.
    Tu ne sembles pas avoir compris ce dont parle l'article
  • Jitou
    Membre confirmé
    On va aller jusqu'où avec tous ces framework JS qui sortent tous les 6 mois ? Le dernier est plus mieux, il va révolutionner le secteur etc ... ça rime à quoi de changer et de réapprendre un nouveau paradigme à chaque nouveautés ? Pour l'instant je reste utilisateur de loisir et surtout spectateur de ces technos JS qui se cherchent et qui n'arrivent manifestement pas à satisfaire complètement leurs adeptes
  • pterrat
    Membre habitué
    J'ai eu l'occasion de tester ce nouveau framework, j'en dégage plusieurs points:

    Architecture MVC

    Tout comme React, Mithril fournit une approche MVC qui permet de pouvoir appréhender le framework rapidement.

    Création de composant

    Mirthil permet la création de composant avec un controller non requis. Si on prend le cas de React, nous devons étendre les classes. Dans le cas d'Angular, on est obligé de créer un composant exigeant un controler.

    La documentation

    D'après ce que j'ai pu voir, la documentation est assez complète pour un (si petit) framework.

    La performance

    L'avantage le plus important de ce framework. Ultra rapide (inférieur à 1ms, il me semble au load) Il devance largement Angular et React sur la performance.
    Pour plus d'informations concernant les performances, je renvois à ton lien qui est excellent

    Il me reste encore à tester les templates et le testing.
  • archqt
    Membre émérite
    Envoyé par ShigruM
    Moi je n'aime pas javascript ni ces nouveaux framework qui sortent chaque jour qui se veulent plus "moderne, simple, rapide et léger"

    par contre je ne peut que recommander le nom donné a ce projet, il donne l'impression d'etre solide et léger, c'est la fibre de carbonne du monde fantastique.
    de plus le Mithril est la matière qui nous protège des forces du mal à savoir Saumon

    perso je préfère rester sur python car c'est 1 framework pour les gouverner tous, a savoir django.

    question : existe t'il un framework pour coder en webassembly ? comme dit il y'a 10 ligne n'aimant pas javascript j'ai l'intention de ne plus coder en JS et de faire exclusivement sur web asm.
    je cherche un framework web assembly qui soit moderne, simple, rapide et léger
    Sauf erreur Django n'a pas encore réussi à passer du côté client et même si il propose (je n'ai pas testé) des widgets qui génèrent du javascript qui sera exécuté côté client (navigateur donc) il y aura forcément des cas ou il faudra faire du javascript.
    Ou alors il faudra un "transpileur" qui permettra de tout coder en python mais comme le navigateur ne sait pas exécuter du pyhton il faudra forcément faire une transformation quelque part.
  • Sonagno
    Futur Membre du Club
    Moi je reste jquery
  • Sodium
    Membre extrêmement actif
    Je suis et resterai sous Angular.
    Ce framework a justement l'énorme avantage de pouvoir se passer de faire du JavaScript.
    Il pallie ainsi au principal défaut de JavaScript, qui est justement d'être JavaScript.

    Les premiers exemples de Mythril ne donnent clairement pas envie : c'est du bon gros JavaScript bien dégueulasse des familles avec des variables qui retournent des fonctions qui retournent des fonctions ...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    var root = document.body
    var count = 0 // added a variable
    
    var Hello = {
        view: function() {
            return m("main", [
                m("h1", {
                    class: "title"
                }, "My first app"),
                m("button", {
                    onclick: function() {count++}
                }, count + " clicks")
            ])
        }
    }
    
    m.mount(root, Hello)
  • nhugodot
    Membre habitué
    A ceux qui crient 'encore un framework du jour ?' : j'ai été comme vous mais finalement, c'est comme dire à un artisan 'tenez j'ai créé un nouvel outil / boîte à outil' 'ou un enfant' tiens, après duplo Lego etc j'ai inventé unr autre boîte de briques vis etc ! ': pour chaque besoin et compétences, sa solution / boîte à outils. Mithril ne répond absolument pas au même cas d'usage et besoins qu' Angular.

    Nous avons essayé et développé la même solution (chat de groupe, photo, mobile et desktop, alertes, notifications...) en vanilla JS, Ionic (angular inside), Vue, et sommes en train de le refaire en React... : conclusion : si c'était à refaire, on aurait fait le proto asap en pur JS, suffisant, responsive, et basta, mais parce que le dev savait maîtriser parfaitement JS et qu'il n'y a rien de complexe dans ce type de SPA. Mais pour l'industrialiser sur Android et iOS, avec notifications et badges sur icône, rien d'autre que React Native n'est assez mûr, efficace, semble t-il... (on a voulu faire moderne, essayer autre chose, éviter React dont la courbe d'apprentissage est plus dure que Vue ou les PWA, raté... Y'a toujours un point bloquant....)

    On ne saurait se suffire d'un seul framework, comme un tournevis ne peut remplacer tous les outils, marteau agrafeuse colle etc à lui seul !

    Ce que je reproche énormément à la communauté des développeurs de ces frameworks, c'est de ne pas préciser exactement non pas 'qui a la plus petite' (sic) mais à quels contextes (compétences, équipes, client, existant, problèmes, évolutions...) leur boîte à outil répond !

    React n'est qu'une librairie de vue (et à introduit une nouvelle manière de faire, réactive) , Angular un vrai framework complet. Rien à voir. Une grande entreprise choisira Angular pour la standardisation poussée, complète, des méthodes de travail, outils, composants, interchangeable entre développeurs qui quittent et arrivent dans une équipe nombreuse, alors que React répondra o'us à la liberté et créativité d'une agence Web ou startup, sans besoin de standardisation aussi poussée, ni d'obligation d'utiliser les méthodes outils et composants imposés et tamponnés par le fournisseur officiel, Google. Il en va de même pour les Django, Symfony, et tout autre frameworks complets, mûrs. React n'est pas un framework. Il est parfaitement normal donc qu'Angular soit plus lourd, tout comme Playmobil est plus 'lourd' que Lego...

    Concernant WASM, j'en espérais aussi beaucoup, et qu'un Django s'y mette et offre de court-circuiter JS.... Ou qu'un nouveau, plutôt qu'un ancien (qui à le mérite d'être mûr, robuste, documenté, etc.), comme Elixir (puissant, multiprocesseur, etc.) ou Pharo (ultra simple clair productif, français, cocorico) s'y mette.
    Ou inversement qu'un langage 'front 'moderne (clair, multiprocesseur vu nos quad core ARM..., ce que JS ne sait pas exploiter) actuellement transpilable, comme Dart, Elm, ou ReasonML (du créateur de React, je crois beaucoup en ce dernier langage, issu de OcaML, cocorico again), passe du côté serveur de la force (Dart est aussi compilable tant côté client mobile - Flutter- que serveur et à des frameworks serveurs).
    Compilé multiprocesseur d'un côté (serveur, apps mobiles) , compilable binaire WASM d'un autre (navigateurs Web), full stack (comme MeteorJS, paix à son âme...), et un framework aussi complet et bien documenté que Django...?

    Le bazar vs la cathédrale : JS vs Python, Node vs Django, Web vs l'Apple appstore, React vs Angular, le PC vs le Mac, Android vs iOS, les freelance vs les grandes équipes informatiques internes avec du legacy à maintenir... Chaos créatif vs organisation solide et pérenne. Y'a de la place et des besoins pour les deux modèles...!

    Si vous n'êtes pas content, changez de côté de la Force

    Bon, qui se colle à une page Web de '' quel framework pour quels use case '? (ToDoMVC n'est pas encore ça...)

    Merci !
  • Kikuts
    Membre éprouvé
    Juste un mot : woaw.

    Je suis dév C# XAML (WPF/UWP/XF). J'ai toujours été allergique à JQuery (je préfère largement écrire du Vanilla JS).

    J'ai testé vite fait à midi le tuto de Mithril. Il n'y a pas à dire. C'est autre chose que Angular & co. J'ai vraiment envie de tester ce framework.
    Si en plus, les perfs sont bonnes et c'est très light, alors je suis preneur !
  • blbird
    Membre chevronné
    Envoyé par kantin34
    Bonne analyse de la situation ,chaque tech a ses avantages ni plus ni moins
    Je n'ai pas compris en quoi l'analyse est bonne? Pour chaque Framework, il suffit de lire et de se documenter, c'est souvent écrit noir sur blanc dans les documentations : back-end, front-end, les 2, avec des modules disponibles pour d'autres besoins le cas échéant (authentification, session, données, validation, ...).

    J'ai l'impression que beaucoup découvrent la multitude de frameworks possibles créés par la communauté avec le JS, alors qu'on a déjà la même chose en Java depuis belle lurette. L'avantage, c'est qu'on peut souvent découvrir des perles (Vue.js, oui je sais j'aime bien ) et choisir au petit oignons ce qui nous correspond le mieux pour tout ou partie de nos applications. L'inconvénient, c'est de faire attention à la pérennité des frameworks, et de devoir passer du temps à en apprendre de nouveaux : et au vu de la difficulté qu'on certains à déjà ne serait que s'intéresser un peu plus loin que le bout de leur nez à d'autres langages (JS? ), c'est pas gagné.
  • frfancha
    Membre éprouvé
    Envoyé par Sodium
    c'est du bon gros JavaScript bien dégueulasse des familles avec des variables qui retournent des fonctions qui retournent des fonctions ...
    C'est clair qu'en partant avec cette idée tu ne vas pas apprécier grand chose en javascript