Über den Laufmodus in Dart
- JIT: Just In Time Dynamische Interpretation, Übersetzung und Ausführung gleichzeitig, auch Just-in-Time-Kompilierung genannt, wie JavaScript, Python usw., verwendet in Der Entwicklungszyklus kann dynamisch Code ausgeben und ausführen, Entwicklung und Tests sind effizient, aber das Hot-Neuladen in Flutter basiert auf dieser Funktion. AOT: Statische Kompilierung bedeutet, dass das Programm der Zeit voraus ist Vor der Ausführung vollständig übersetzter Maschinencode, wie C, C++, OC usw., der im Voraus kompiliert wurde, verwendet AOT während des Veröffentlichungszeitraums, und es besteht keine Notwendigkeit, eine ineffiziente Zuordnungsbeziehung für Methodenaufrufe zwischen plattformübergreifendem JavaScript-Code und nativem Code herzustellen Android- und iOS-Code wie RN.
- Der Ausführungsmodus des Programms hat keinen zwingenden Zusammenhang mit der spezifischen Sprache. Beispielsweise kann Python entweder JIT oder AOT sein. Dart ist eine der wenigen Sprachen, die sowohl JIT als auch AOT unterstützen.
Dart verwendet JIT während des Entwicklungsprozesses, was viel Zeit spart. Es verwendet AOT, um während der Bereitstellung effizienten ARM-Code zu generieren, sodass Dart eine schnelle Ausführungsgeschwindigkeit hat. , Merkmale einer guten Ausführungsleistung.
Hot Reload
Ändern Sie die Zeichenfolge „Hello, World“ in der Dart-Codedatei, fügen Sie ein Ausrufezeichen hinzu, klicken Sie auf die Schaltfläche „Speichern“ oder „Hot Refresh“, um die Benutzeroberfläche sofort und in nur wenigen hundert Millisekunden zu aktualisieren:
Flutter erreicht den magischen Effekt von Hot Reload, indem es neuen Code in die laufende DartVM einfügt. Nachdem DartVM die Klassenstruktur im Programm aktualisiert hat, baut Flutter sofort den gesamten Kontrollbaum neu auf und aktualisiert so die Schnittstelle. Allerdings weist die Hot-Aktualisierung auch einige Einschränkungen auf:
- Kompilierungsfehler. Wenn der geänderte Dart-Code nicht kompiliert werden kann, meldet Flutter einen Fehler in der Konsole Zeit Der entsprechende Code muss geändert werden.
- Konvertierung des Steuerelementtyps vonStatelessWidgetinStatefulWidget, da Flutter beim Durchführen einer Hot-Refresh den ursprünglichen Status des Programms beibehält und ein bestimmtes Steuerelement dazu führt, dass Flutter nach dem Wechsel neu gestartet wird stageless→stateful Beim Erstellen eines Steuerelements wird der Fehler „myWidget ist kein Subtyp von StatelessWidget“ gemeldet, und beim Übergang von stateful→stateless wird der Fehler „Typ ‚myWidget‘ ist kein Subtyp vom Typ ‚StatefulWidget‘ von ‚newWidget‘ gemeldet '" wird gemeldet.
- Globale Variablen und statische Mitgliedsvariablen. Diese Variablen werden während der Hot-Aktualisierung nicht aktualisiert.
- Der in der Hauptfunktion erstellte Root-Kontrollknoten wurde geändert. Nach der Hot-Refresh erstellt Flutter nur den Kontrollbaum basierend auf dem ursprünglichen Root-Knoten neu und ändert den Root-Knoten nicht.
- Das Konvertieren einer Klasse von einem allgemeinen Typ in einen Aufzählungstyp oder die Änderung der generischen Parameterliste des Typs führt dazu, dass die Hot-Aktualisierung fehlschlägt.
Wenn die Aktualisierung bei der Hot-Aktualisierung fehlschlägt, führen Sie einen Hot-Neustart (Hot Restart) durch, um alle Codes vollständig zu aktualisieren. Der Unterschied besteht darin, dass beim Neustart alle Dart-Codes gepackt und synchronisiert werden an das Gerät gesendet und der gesamte Status wird zurückgesetzt.
Das obige ist der detaillierte Inhalt vonDieser Artikel hilft Ihnen, die Hot-Bereitstellung von Flutter zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!