1。段階の開始
ブラウザがHTMLページをロードすると、最初にHMTLページをDOMツリーに解析し、次にDOMツリーの各要素ノードを1つずつロードすることを誰もが知っておく必要があります。 AngularjsをjQueryに似たJSライブラリとして扱うことができます。 <script>タグを介してHTMLに紹介します。この時点で、Angularは、ブラウザが解析するのを待っている通常のDOMノードになります。ブラウザがこのノードを解析し、それがJSファイルであることがわかった場合、ブラウザは残りのDOMノードの解析を停止し、このJSの実行を開始します(つまり、Angular.js)。同時に、Angularはイベントリスナーをセットアップして、ブラウザのDomContentLoadedイベントをリッスンします。 Angularがこのイベントに耳を傾けると、Angularアプリケーションが開始されます。
2。初期化段階
Angularが起動した後、NG-APP指令を探してから、一連の必要なコンポーネント(つまり、$インジェクター、$コンパイルサービス、$ rotscope)を初期化してから、DOMツリーの解析を開始します。
3.コンパイルとリンク
$コンパイルサービスは、DOMツリーを通過することにより、宣言された指示でDOM要素を見つけます。 1つ以上の命令でDOM要素に遭遇すると、命令をソートし(命令の優先順位に基づいて)、$インジェクターサービスを使用して、命令のコンパイル関数を見つけて収集します。
各ノードのコンパイル方法が実行された後、$コンパイルサービスはリンク関数を呼び出します。このリンク関数は、クローズドスコープにバインドされている命令の監視を設定します。この動作はライブビューを作成します。
最後に、$コンパイルサービスが完了した後、AngularJSランタイムの準備が整います。
4。操作段階
Angularは独自のイベントループを提供します。命令自体がイベントリスナーを登録するため、イベントがトリガーされると、命令関数はAngularJSの$ Digestループで実行されます。 $ DIGESTループは、$ Watch Expressionリストを待ちます。モデルの変更が検出されると、$ watch関数が呼び出され、$ watchリストが再度表示され、モデルが変更されていないことが確認されます。
$ digestループが安定し、潜在的な変更が検出されないと、実行プロセスは角度コンテキストを離れ、通常はブラウザに戻り、DOMはここでレンダリングされます。
上記のプロセスの重要な手順を次のようにグラフに描画します。
上記は、AngularJS実行プロセスの詳細な紹介です。将来、関連情報を整理し続けます。このウェブサイトへのご支援ありがとうございます。