Dart の実行方法について
- JIT: Just In Time. 動的解釈、翻訳、実行を同時に行うこと。ジャストインとも呼ばれます。開発サイクルで使用される JavaScript や Python などの時間コンパイルは、動的にコードを発行して実行することができ、開発とテストの効率は高いですが、実行速度とパフォーマンスに影響を与えます。この機能について
- AOT : Ahead of Time. 静的コンパイルとは、プログラムが実行前にマシンコードに変換され、C、C、OC などのように事前にコンパイルされることを意味します。リリース期間中は、クロスプラットフォームの JavaScript コードと RN のようなネイティブ コードを組み合わせる必要がなく、Android コードと iOS コードの間に非効率なメソッド呼び出しマッピング関係を確立します。
プログラムの実行モードは、特定の言語と必須の関係はありません。たとえば、Python は JIT または AOT のいずれかになります。Dart は、JIT と AOT の両方をサポートする数少ない言語の 1 つです。 。
Dart は開発プロセス中に JIT を使用します。すべての変更をバイトコードにコンパイルする必要がないため、時間を大幅に節約できます。デプロイメント中に、AOT を使用して効率的な ARM コードを生成し、効率的なパフォーマンスを確保します。実行速度が速く、実行性能が良いのが特徴です。
ホット リロード
Dart コード ファイル内の文字列「Hello, World」を変更し、感嘆符を追加し、保存またはホット リフレッシュ ボタンをクリックしてすぐに更新します。インターフェイスをオンにすると、数百ミリ秒しかかかりません:
Flutter は、実行中の DartVM に新しいコードを挿入します。ホット リロードの魔法のような効果を実現するには、DartVM がプログラム内のクラス構造の更新を完了した後、Flutter がすぐにコントロール ツリー全体を再構築してインターフェイスを更新します。ただし、ホット リフレッシュにはいくつかの制限もあります。ホット リフレッシュによってすべてのコード変更を更新できるわけではありません:
- Dart のコードが変更された場合、コンパイル エラーが発生します。コンパイルできないため、Flutter はコンソールにエラーを報告します。この時点で、対応するコードを変更する必要があります。
- コントロール タイプの StatelessWidget から StatefulWidget への変換Flutter はホット リフレッシュを実行するときにプログラムの元の状態を保持し、コントロールをステージレス→ステートフルに変更すると、ステートフル→ stateless を使用すると、「タイプ 'myWidget' は 'newWidget' のタイプ 'StatefulWidget' のサブタイプではありません」というエラーが発生します。
- グローバル変数と静的メンバー変数。これらの変数はホット リフレッシュ中に更新されません。
- main 関数で作成されたルート コントロール ノードを変更しました。ホット リフレッシュ後、Flutter は元のルート ノードに基づいてコントロール ツリーのみを再作成します。 root.ノードは変更しないでください。
- クラスが共通型から列挙型に変換される場合、または型のジェネリック パラメーター リストが変更される場合、ホット リフレッシュは失敗します。
ホット リフレッシュが更新に失敗した場合は、ホット リスタート (ホット リスタート) を実行してすべてのコードを完全に更新します。 App. 違い はい、再起動すると、すべての Dart コード パッケージがデバイスに同期され、すべてのステータスがリセットされます。
以上がこの記事は、Flutter のホット デプロイメントを理解するのに役立ちますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。