Feature Pages パターン
#中規模Angularアプリケーションのアーキテクチャ類型
https://scrapbox.io/files/61b038ab8aed04002042f241.png
コンセプト
画面設計はページ単位
ページは機能でグループ化される
機能ごとに機能モジュール (NgModule) を持つ
個々のページの具体的要求から横断的関心事を取り出して再利用可能にする
=> ボトムアッププログラミング
機能の範囲内に閉じた共有モジュールと、機能に閉じないグローバルな共有モジュールが分離される
基本構造
code:tree
app
├ features
│ └ products
│   ├ pages
│   │ ├ products
│   │ │ └ products.component.ts
│   │ └ edit-product
│   └ ui
│     └ product-list
│       └ product-list.component.ts
└ shared
├ ui
│ ├ button
│ │ └ button.component.ts
│ └ dialog
│   ├ dialog.component.ts
│   └ dialog.service.ts
├ product
│ ├ product.ts
│ ├ product.service.ts
│ └ product-name.pipe.ts
└ cart
├ cart.ts
└ cart.service.ts
features と shared による二分化からスタートする
ユースケースに依存しないモジュールは shared に配置する
一定のまとまりをもった機能 の中で再利用可能なモジュールを定義する