私はthis documentationを参照し、コンパイルコンセプトに遭遇しました。 JITまたはAOTのいずれかのコンパイルを使用できます。しかし、私はそれが非常に簡単に発見し、詳細にポイントを以下の知っている必要があり、これら二つの技術の間角2:ジャストインタイム(JiT)対先行(AoT)コンパイル
- 違い
- 何
私はthis documentationを参照し、コンパイルコンセプトに遭遇しました。 JITまたはAOTのいずれかのコンパイルを使用できます。しかし、私はそれが非常に簡単に発見し、詳細にポイントを以下の知っている必要があり、これら二つの技術の間角2:ジャストインタイム(JiT)対先行(AoT)コンパイル
JIT使用する際についての勧告 - のための時間だけで活字体をコンパイルしますそれを実行する。
AOT - ビルドフェーズ中にTypeScriptをコンパイルします。
ここでBenyaminとNisarはいくつかの良い点を述べました。私はそれに追加します。
理論的には、AOTは生産目的でJITよりも魅力的な選択肢に見えますが、AOTが本当に価値があるかどうか疑いがありました。
まあ、私はnice stats by Jeff Crossを見つけました。それは、AOTがアプリケーションのブートストラップ時間を大幅に短縮することを証明しています。以下は、実際に一つだけの角のコンパイラがあり
、それについてあなたの迅速なアイデアを与えるだろうジェフ・クロスポストからスナップ。 AOTとJITの違いはタイミングとツーリングの問題です。 AOTを使用すると、コンパイラーは1つのライブラリー・セットを使用してビルド時に1回実行されます。 JITを使用すると、実行時に毎回異なるユーザー層のライブラリを使用して実行されます。かなり良い説明here ..
TLDR見つかり
。
本質的には、TSをJSに変換した後、ブラウザがJSをバイナリに変換するとき、angle2のアプリケーションでコードを2回コンパイルします。
後者を制御することはできませんが、TSからJSへのコンパイルをいつ実行するかを制御できます。
angular2では、JIT(デフォルト)を使用すると、コードがブラウザに読み込まれた後に両方のコンパイルが行われます(TS - > JS - > binary)。ブラウザー上でTS - > JSコンパイルを実行するのに追加のオーバーヘッドだけでなく、angular2コンパイラはangular2パッケージのほぼ半分のサイズになるので、これを避けると、ペイロードが大幅に増加します。
JSへのAOT precompliesのTSコードは、コンパイル時だけでなく、コードのサイズを縮小、コードも
の50%を占める角度コンパイラの必要性を根絶することによって、私は非常に経験しましたJust-in-Timeコンパイルを使用するとパフォーマンスが低下します。特に旧式のAndroidデバイスではそうです。また、最初のページの読み込み時のレンダリングギャップがはるかに大きくなります(古いAndroid搭載端末では、プロジェクトのサイズによっては最大10秒)。 –
この明快で簡単な説明をありがとう。 –
Typescriptはちょうどコンパイルされていないため、ブラウザはそれを行うことができません。どちらの場合も、typescriptはビルドプロセス中にコンパイルされます。 – Robouste