Angularチュートリアルをやる 1日目
■ 思ったこと
まずは公式みながら環境設定→ワークスペースの作成→チュートリアルまでやろうと思うhttps://angular.jp/guide/setup-local#angular-cliをインストールする-
■ Angularをはじめよう
下準備
なになに、ローカルシステムにAngularをインストールするには、Node.js
とnpm
が使える必要とな……ある!!OK!!
Angular CLIをインストール
Angular開発で必須なコマンドラインツールのこと、コマンドプロンプトでnpm install -g @angular/cli
でインストールできる、ng version
でversion確認まで出来たらOK!ng なんちゃら
って感じで使えるよ
ワークスペース作ってみる
VSCodeのターミナルでng new my-app
しました。全部入りのひな形プロジェクトが作られるみたい、npmインストールも兼ねている。成功するとこんな感じ
実行してみる
cd my-app
してng serve --open
するとhttp://localhost:4200/
が立ち上がって画面が開く!これでとりあえずの動作確認はいいか
■ チュートリアルやり申す
https://angular.jp/tutorial/tour-of-heroes/toh-pt0ツアー・オブ・ヒーローズ……?
1. ヒーローエディター
アプリケーションシェル
画面開いた時に表示されたページ、それがアプリケーションシェルらしい。こいつはAppComponentと名の付く三つのコンポーネントから成り立つぞ、src/app
に行ってみよお!
コンポーネントを作る
ng generate component heroes
ってやると、src/app/heroes/
ごとまるっとコンポーネントが作成される!こりゃあ便利だね。中身はやっぱりtsとhtml,css
Componentシンボル
- 生成したtsファイルにはデフォルトでComponentがインポートされていたが、クラスに
@Component
もくっついているはず - こいつはデコレーターつって、クラスにメタデータを付与してくれていたのだ
- (メタデータはとりあえず、クラスに設定必要な情報と理解しておこう)
- ng generateが生成してくれたものは3つのメタデータプロパティでした
- こうしてみると、確かに自動生成されているとありがたい
インターフェースを作成する
- おさらいすると、インターフェースはオブジェクト型に型名つけるやつ!
- heroesクラスにこれからHeroを生成していくわけだけど…
src/app
に自分でhero.ts
作って、そこにHeroインターフェースを作成しとこうって話 - 作ったオブジェクトはhtml内に
{{selector.プロパティ名}}
でバインディングすべし
双方向データバインディング
<input id="hero-name" [(ngModel)]="hero.name" placeholder="name" />
placeholder
はhtmlで使える属性、初期値を設定できるぜ
ていうか…データバインディングについてもっと詳しく!
- コンポーネントとテンプレート(ビュー)を紐づけるための仕組み
- データの流れによっていろいろ書き方がある
AppModule
- ngModelを使うには
FormsModule
のインポートが必要 - インポート先は
AppModule
!Angular全体としてどーいう部品使う?みんなファイルやライブラリ何使ってるの?…いわゆるメタデータ!こゆのを知っておく場所 - だいたいメタデータは
@Component
で個別に付与されてるけど、その他重要なものはAppModuleの@NgModule
に含まれている - ということで、ここにインポートして
@NgModule
のimports配列
に追記してあげればOK- アプリケーションに必要な外部モジュールのリストだよ
- これに限らず、すべてのコンポーネントは
NgModule
で宣言されていなければならない - 実際、さっき作ったHeroesComponentもいつの間に
declarations
配列に含まれているng generate
したときに自動で書きこんでくれてたんだね…!ありがとう、CLI
■ 感想
手でコンポーネント作ったらそれなりに事故が起きそうだ、ありがとうCLI。チュートリアルの文章がユーモアあって結構おもしろい、いいね!!でも、細かい仕組みとかはよくわからんので・・まずは手を動かして、そのあと改めて勉強も必要そうな!