AngularJS Hello World: 最初のサンプルプログラム
⚡ スマートサマリー
AngularJS の Hello World プログラムでは、単一の HTML ファイル、1 つのスクリプト参照、および ng-app と ng-controller という 2 つのディレクティブのみを使用して、二重中括弧式を介してコントローラー スコープ変数をページにバインドします。
AngularJSアプリケーションの威力を実感する最良の方法は、AngularJSで最初の基本的なプログラムである「Hello World」アプリを作成することです。
統合開発環境は数多くあり、 AngularJS 開発においては、人気のあるもののいくつかを以下に示します。この例では、 Webstorm 私たちのIDEとして。
- Webstorm
- Sublime Text
- AngularJS Eclipse
- Visual Studioの
こんにちは、AngularJS さん
バージョンノート: AngularJS 1.x は 2021 年 12 月 31 日に長期サポートを終了し、フレームワークチームは、 AngularJSのサポートが正式に終了しました 2022年1月に、1.8.3が最終リリースとなり、それ以降のセキュリティパッチはありません。以下のすべてのステップとコードブロックは、記述どおりに保持されます。新しいプロジェクトは、最新のAngularに属し、同じ作業は以下から始まります。 ng serveとスタンドアロンコンポーネント そして今でも同じものを使用しています {{ }} 補間構文。
以下の例は、AngularJS で最初の「Hello world」アプリケーションを作成する最も簡単な方法を示しています。
以下の注釈付きスクリーンショットは、そのファイルの各部分にラベルを付けており、その7つの数字は Code 以下に説明リストを示します。これは以前の1.4.0ビルドに対してキャプチャされたものなので、スクリプト行はコードに固定されているバージョンとは異なります。
<!DOCTYPE html> <html ng-app="app"> <head> <meta charset="utf 8"> <title>Guru99</title> </head> <body> <h1 ng-controller="HelloWorldCtrl">{{message}}</h1> <script src="https://code.angularjs.org/1.6.9/angular.js"></script> <script> angular.module("app", []).controller("HelloWorldCtrl", function($scope) { $scope.message="Hello World" } ) </script> </body> </html>
Code 説明:
- 「ng-アプリ」キーワードは、このアプリケーションがAngularJSアプリケーションであることを示すために使用されます。このアプリケーションには任意の名前を付けることができます。
- コントローラーはビジネスロジックを保持するために使用されます。h1 タグでは、 コントローラこれは「Hello World」を表示するロジックを持つので、このタグでは「HelloWorldCtrl」という名前のコントローラーにアクセスしたいと言えます。
- 「message」というメンバー変数を使用していますが、これは「Hello World」メッセージを表示するためのプレースホルダーにすぎません。
- 「scriptタグ」は、AngularJSに必要なすべての機能を備えたangular.jsスクリプトを参照するために使用されます。この参照がないと、AngularJSの関数を使用しようとしても動作しません。
- 「コントローラー」とは、実際にビジネスロジックを作成する場所、つまりコントローラーのことです。各キーワードの詳細については、以降の章で説明します。ここで重要なのは、ステップ2で参照されている「HelloWorldCtrl」というコントローラーメソッドを定義している点です。
- ここでは、コードがこのコントローラーを呼び出す際に実行される「関数」を作成します。$scopeオブジェクトはAngularJSの特別なオブジェクトであり、AngularJS内で使用されるグローバルオブジェクトです。$scopeオブジェクトは、コントローラーとビュー間のデータ管理に使用されます。
- ここでは、「message」という名前のメンバ変数を作成し、その変数に「Hello World」という値を割り当て、そのメンバ変数をスコープオブジェクトにアタッチします。
ご注意: ng-controller ディレクティブは、 AngularJS (ステップ 2)は、アプリケーションでコントローラーを定義するために使用されます。このアプリケーションでは、ng-controller キーワードを使用して「HelloWorldCtrl」という名前のコントローラーを定義しています。コントローラーの実際のロジックは(ステップ 5)で作成します。
コードが正常に実行された場合、ブラウザでコードを実行すると次の出力が表示されます。
出力:
「Hello World」というメッセージが表示されます。
AngularJSの読み込み方法:CDNまたはローカルファイル
上記の例が機能するのは、ブラウザが本文の終わりに到達する前に、1行でフレームワークをページに取り込むことができるためです。AngularJSは単一のファイルとして提供されます。 Javaスクリプトファイルなので、最初のプログラムにはビルド手順もパッケージマネージャーも不要です。ブラウザで開くだけのシンプルなHTMLファイルで十分です。
そのファイルを取り込む方法は2つあります。
- CDNのコピーを参照します。 例が指し示すのは
code.angularjs.orgそしてピンのバージョンは1.6.9です。そのホストはまだ1.xビルドを提供しており、最高バージョンは1.8.2ですが、 Google ホストライブラリにはAngularJSが表示されなくなりました。 - ローカルコピーをダウンロードしてください。 ファイルをHTMLページの横に保存し、スクリプトタグでそのファイルを指定します。ローカルコピーを作成することで、サンプルをオフラインでも動作させることができ、プロキシがCDNをブロックしている場合に特に役立ちます。
<!-- Option 1: reference a CDN copy --> <script src="https://code.angularjs.org/1.8.2/angular.min.js"></script> <!-- Option 2: reference a downloaded copy in the same folder --> <script src="angular.min.js"></script>
angular.js 学習しながら、 angular.min.js 本番環境では、ミニファイされていないビルドが読みやすいスタックを出力します。 traces、一方、ミニファイされたビルドでは名前が変更された変数が報告されます。
ファイルが読み込まれると、 ng-app フレームワークが起動します。AngularJS はドキュメントの読み込みが完了するとその属性を探し、その属性を持つ要素をコンパイルのルートとして扱い、その値で指定されたモジュールをブートストラップします。その結果、次の 3 つのことが起こります。
- 最初のものだけ
ng-appページ上の要素は自動的にブートストラップされます。2 つ目の要素は、以下の場合を除き無視されます。angular.bootstrap手動で呼び出されます。 - 値は、登録されているモジュールの名前を指定する必要があります。 角度.モジュールそうでなければコンソールに報告されます
[$injector:modulerr]. -
ng-apphtml例にあるように、要素を使用すると、ドキュメント全体がAngularJSの支配下に置かれます。より狭いコンテナでも同様に機能します。
{{ }}式とng-modelバインディングの仕組み
周囲の二重の支柱 message h1 タグ内のテキストは、読み込み時に一度だけ入力されるプレースホルダーではありません。AngularJS はそのテキストノードを周囲の要素を監視するウォッチャーにコンパイルします。 スコープレンダリングされた出力 tracks $scope.message ページが存在する限り。
このサイクルは3つの段階から成ります。
- コントローラは値を書き込みます
$scope. - ダイジェスト処理では、監視対象のすべての式を前回の結果と比較します。
- 値が変更された各式は、その場で再レンダリングされます。
したがって、補間式はスコープからビューへの一方向です。双方向バインディングには ng-モデル 指令 フォームコントロール用に設計されています。 <input ng-model="message"> 見出しの横にあるボックスに文字を入力すると、キーを押すたびに見出しが変わります。これは、ng-model が式が監視しているのと同じスコープのプロパティにフィールド値を書き戻すためです。
式は意図的に制限されています。スコープのプロパティを読み取り、スコープのメソッドを呼び出し、未定義の値を黙って許容しますが、変数を宣言したり、制御フロー文を使用したり、次のようなグローバルオブジェクトにアクセスしたりすることはできません。 window.
空白ページやレンダリングされていない {{ }} を修正する方法
最初の AngularJS プログラムは、次の 2 つの目に見える方法のいずれかで失敗します。ページが空白のままになるか、テキストが {{message}} 「Hello World」が表示されるべき場所に、このメッセージが表示されます。どちらの場合も、フレームワークがマークアップを引き継がなかったことを意味します。ブラウザのコンソールを開いた状態で、以下のチェック項目を順番に確認してください。
- ライブラリが読み込まれたことを確認してください。 ネットワークパネルを開いて、
angular.jsリクエスト。404エラーまたはアクセス不能なCDNの場合、画面上の括弧は変更されません。 - スクリプトのパスを確認してください。 相対パスは HTML ファイルが格納されているフォルダに対して解決されるため、
jsサブフォルダーが必要js/angular.min.js. - ng-app を検証します。 属性が欠落しているかスペルミスがあると、何もブートストラップされません。属性はハイフンで区切られます。
ng-appマークアップでは、ディレクティブはキャメルケースですが、 Java脚本。 - コンソールのエラーメッセージを確認してください。
[$injector:modulerr]これは、ng-appで指定されたモジュールが登録されなかったことを意味します。[ng:areq]これは通常、マークアップ内のコントローラー名が渡された名前と一致しないことを意味します。.controller(). - 2つ目のng-appを探してください。 最初の要素のみがブートストラップされるため、内部要素に余分なコピーが残っていると、ページのその部分が暗黙のうちに無効になります。
残りの報告の大部分は、さらに2つの原因によるものである。
- ファイルプロトコル。 この単一ファイルの例は、ディスクから直接開いた場合は問題なく動作しますが、XHR経由で取得したテンプレートはブラウザのオリジンルールによってブロックされます。テンプレートが表示されたら、フォルダをHTTP経由で配信してください。
- 一瞬だけ、矯正器具がちらりと見えた。 フレームワークがマークアップをコンパイルする前にレンダリングされると、生の式が一瞬表示されます。
ng-cloak要素に、または式を交換ng-bind="message"これは、自身のマークアップを一切表示しません。
これらのいずれにも当てはまらない場合は、ページを上記の例と同じ状態に縮小し、独自のコードを1行ずつ追加してください。


