今回は、弊社内のAngularプロジェクトでのコンポーネントの設計のルールを記載しようと思います。
2記事に分けて「コンポーネントの設計」についてお届けしますが、今回は「機能内の画面構成設計」となります。
(次回は「画面ごとの設計」になります)
それでは、今回は、『アカウント登録処理』を例に、コンポーネントの設計を説明しようと思います。
(1)まずは必要な画面と、画面遷移を考える
「アカウント登録処理」として、以下のような画面が必要と想定されます。①登録情報入力画面
②入力情報確認画面
③登録完了画面
当然、画面遷移としては以下になりますね。
(2)機能としてのディレクトリ構成を考える
では、次は「アカウント登録処理」として、ディレクトリ構成を考えます。各画面の設計の前に、「機能」としての設計をする、って事ですね。
まず、何も機能が無いAngularプロジェクトだと、
となっています。
- src/
- ├ app/
- ├ app-routing.module.ts
- ├ app.component.html
- ├ app.component.ts
- └ app.module.ts
ここに「アカウント登録処理」を追加するとしたら、以下のようになります。
いきなり「containers」ディレクトリが出てきましたが、後ほど説明しますので、一旦スルーしてください。
- src/
- └ app/
- └ account/
- ├ containers/
- │ └ account/
- │ └ account.component.html
- │ └ account.component.spec.ts
- │ └ account.component.ts
- ├ account-routing.module.ts
- └ account.module.ts
ここでは、「account」と言う「アカウント登録処理」を示すコンポーネントを作った、と言うことになります。
図で表すと、
となります。これだけだと、「??」って感じですが、とりあえず先へ進みます。
(3)各画面のディレクトリ構成を考える
続いて、各画面のディレクトリ構成を考えてみます。画面が3つだから、ディレクトリも3つで、コンポーネントとしても3つ・・・はい、最初はその考えで大丈夫です。
Angularに限らず、コンポーネント設計で重要なのは、まずは、ざっと大きめな区分けで考えておいて、後から細分化していく、です。
と言うことで、以下のような構成になります。
- src/
- └ app/
- └ account/
- └ containers/
- ├ account/
- ├ account-register/
- │ └ account-register.component.html
- │ └ account-register.component.spec.ts
- │ └ account-register.component.ts
- ├ account-register-confirm/
- │ └ account-register-confirm.component.html
- │ └ account-register-confirm.component.spec.ts
- │ └ account-register-confirm.component.ts
- └ account-register-complete/
- └ account-register-complete.component.html
- └ account-register-complete.component.spec.ts
- └ account-register-complete.component.ts
図で表すと、
こんな感じですね。
なんとなくイメージが出来るようになって来ました。
ついでなので、ルーティングの設定も記載しておきます。
[app-routing.module.ts]
- {
- path: 'account',
- loadChildren: () =>
- import('./account/account.module').then(m => m.AccountModule),
- },
[account-routing.module.ts]
- const routes: Routes = [
- {
- path: '',
- component: AccountComponent,
- children: [
- { path: '', redirectTo: 'register' },
- {
- path: 'register',
- component: AccountRegisterComponent,
- },
- {
- path: 'register-confirm',
- component: AccountRegisterConfirmComponent,
- },
- {
- path: 'register-complete',
- component: AccountRegisterCompleteComponent,
- },
- ],
- },
- ];
上記を元に、先ほどの図にURLを記載すると、以下のようになります。
今回はここまで。
次回は、さらに細分化して「画面ごとのコンポーネント設計」を見て行こうと思います。
Angular
0 件のコメント:
コメントを投稿