Angular Signals ๊ธฐ๋ฐ ์ํ ์์ ๊ถ ๋ช ํํ๋ก ์ปดํฌ๋ํธ ํ์ฅ์ฑ ํ๋ณด
๐กSmart vs Presentational Components in Angular 2026: Where Does Ownership Really Belong?
AI ์์ฝ
Context
๊ธฐ์กด Angular ์ํคํ ์ฒ๋ Smart/Presentational ๊ตฌ๋ถ ์์ด ์๋น์ค ์ฃผ์ ๊ณผ ์ํ ๊ด๋ฆฌ๊ฐ ํผ์ฌ๋์ด ๊ฑฐ๋ Container ์ปดํฌ๋ํธ์ ๋น๋ํ ๋ฐ ์ ์ง๋ณด์ ํจ์จ ์ ํ ์ ๋ฐ. ๋จ์ํ ํด๋ ๊ตฌ์กฐ๋ ์ปดํฌ๋ํธ ํฌ๊ธฐ๋ก ์ญํ ์ ๊ตฌ๋ถํ๋ ๊ดํ์ผ๋ก ์ธํด ์ํ ์์ ๊ถ์ด ๋ถ๋ถ๋ช ํ ์ค๊ณ ๊ฒฐํจ ๋ฐ์.
Technical Solution
- signal() ๋์ ์ ํตํ ephemeral UI ์ํ์ ๋ก์ปฌ ์บก์ํ๋ก ์์ Container์ ์ํ ๊ด๋ฆฌ ๋ถ๋ด ๊ฒฝ๊ฐ
- Smart Component๋ฅผ Feature Orchestration Layer๋ก ์ ์ํ์ฌ ๋ฐ์ดํฐ ํ์นญ, Routing, Analytics ๋ฑ ๋น์ฆ๋์ค ๋ก์ง ์ฃผ์ ์ ๋ด
- Presentational Component์ ์๋น์ค ์ฃผ์ ์ ์๊ฒฉํ ๊ธ์งํ๊ณ Input/Output ๊ธฐ๋ฐ์ ์ธํฐํ์ด์ค ๊ณ์ฝ์ผ๋ก ๊ฒฝ๊ณ ์ค์
- computed() ๋ฐ toSignal()์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ํ๋ฆ์ ๋จ๋ฐฉํฅ์ฑ ํ๋ณด ๋ฐ ์ํ ์ ์ด ๊ณผ์ ์ ๋ช ์์ ์ ์ด
- OnPush ์ ๋ต์ ๊ธฐ๋ณธ ์ ์ฉํ์ฌ ๋ถํ์ํ Change Detection์ ๋ฐฉ์งํ๊ณ ๋ ๋๋ง ํจ์จ ์ต์ ํ
์ค์ฒ ํฌ์ธํธ
1. ์ ๊ท ์ปดํฌ๋ํธ ์์ฑ ์ '๋ฐ์ดํฐ ๋ ๋๋ง'์ธ์ง '๋ฐ์ดํฐ ๊ฒฐ์ '์ธ์ง ์ญํ ์ ์
2. Presentational ์ปดํฌ๋ํธ ๋ด ์๋น์ค ์ฃผ์ ๋ฐ Router ์ ๊ทผ ์ฝ๋ ์ ๊ฑฐ
3. UI ์ ์ฉ ์ํ(ํ ๊ธ, ํธ๋ฒ ๋ฑ)๋ ์ ์ญ ์ํ๊ฐ ์๋ ๋ก์ปฌ signal()๋ก ์ฒ๋ฆฌ
4. ์ปดํฌ๋ํธ ๊ฐ ์ธํฐํ์ด์ค๋ฅผ Input/Output ๊ธฐ๋ฐ์ ๊ณ์ฝ(Contract)์ผ๋ก ๊ด๋ฆฌ