Feature Pages パターン
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 に配置する
一定のまとまりをもった機能 の中で再利用可能なモジュールを定義する