Maison  >  Article  >  développement back-end  >  Cet article vous aidera à comprendre le déploiement à chaud de Flutter

Cet article vous aidera à comprendre le déploiement à chaud de Flutter

王林
王林avant
2023-04-10 13:41:031369parcourir

Cet article vous aidera à comprendre le déploiement à chaud de Flutter

À propos du mode d'exécution dans Dart

  • JIT : Just In Time Interprétation, traduction et exécution dynamiques en même temps, également appelée compilation juste à temps, comme JavaScript, Python, etc., utilisée dans le cycle de développement, peut émettre et exécuter dynamiquement du code, le développement et les tests sont efficaces, mais la vitesse d'exécution et les performances seront affectées. Le rechargement à chaud dans Flutter est basé sur cette fonctionnalité
  • AOT : La compilation statique signifie que le programme est en avance. entièrement traduit avant exécution Le code machine, compilé à l'avance, tel que C, C++, OC, etc., utilise AOT pendant la période de publication, et il n'est pas nécessaire d'établir une relation de mappage d'appel de méthode inefficace entre le code JavaScript multiplateforme et le code natif. Code Android et iOS comme RN.

Le mode d'exécution du programme n'a aucune relation obligatoire avec le langage spécifique. Par exemple, python peut être JIT ou AOT. Dart est l'un des rares langages qui prend en charge à la fois JIT et AOT.

Dart utilise JIT pendant le processus de développement. Chaque modification n'a pas besoin d'être compilée en bytecode, ce qui permet de gagner beaucoup de temps. Il utilise AOT pour générer un code ARM efficace pendant le déploiement afin de garantir des performances efficaces, de sorte que Dart a une vitesse d'exécution rapide. , caractéristiques de bonnes performances d'exécution.

Hot Reload

Modifiez la chaîne "Hello, World" dans le fichier de code Dart, ajoutez un point d'exclamation, cliquez sur le bouton Enregistrer ou Actualiser à chaud pour mettre immédiatement à jour l'interface, cela ne prend que quelques centaines de millisecondes :

Cet article vous aidera à comprendre le déploiement à chaud de Flutter

Flutter obtient l'effet magique du rechargement à chaud en injectant un nouveau code dans DartVM en cours d'exécution. Une fois que DartVM a mis à jour la structure de classe dans le programme, Flutter reconstruira immédiatement l'intégralité de l'arborescence de contrôle, mettant ainsi à jour l'interface. Cependant, l'actualisation à chaud présente également certaines limites. Toutes les modifications de code ne peuvent pas être mises à jour via l'actualisation à chaud :

  1. Erreur de compilation Si le code Dart modifié ne peut pas être compilé, Flutter signalera une erreur dans la console. heure Le code correspondant est à modifier.
  2. Conversion du type de contrôle de StatelessWidget à StatefulWidget, car Flutter conservera l'état d'origine du programme lors de l'actualisation à chaud, et un certain contrôle entraînera le redémarrage de Flutter après le changement de stageless→stateful Lors de la création d'un contrôle, une erreur "myWidget n'est pas un sous-type de StatelessWidget" sera signalée, et lors du passage de stateful→stateless, une erreur "type 'myWidget' n'est pas un sous-type de type 'StatefulWidget' de 'newWidget '" sera signalé.
  3. Variables globales et variables membres statiques, ces variables ne seront pas mises à jour lors de l'actualisation à chaud.
  4. Le nœud de contrôle racine créé dans la fonction principale a été modifié après un rafraîchissement à chaud, Flutter recréera uniquement l'arborescence de contrôle basée sur le nœud racine d'origine et ne modifiera pas le nœud racine.
  5. La conversion d'une classe d'un type commun en un type d'énumération, ou la modification de la liste des paramètres génériques du type, entraînera l'échec de l'actualisation à chaud.

Lorsque l'actualisation à chaud ne parvient pas à se mettre à jour, effectuez un redémarrage à chaud (Hot Restart) pour mettre à jour complètement tous les codes. Il n'est pas non plus nécessaire de redémarrer l'application. La différence est que le redémarrage regroupera et synchronisera tous les codes Dart. à l'appareil et tous les états seront réinitialisés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer