๐ฅ ์๋ฐ์คํฌ๋ฆฝํธ + ๋ฆฌ์กํธ: ๋์์ธ ํจํด ๋ง์คํฐ ์๋ฒฝ ๊ฐ์ด๋ (์ค๋ฌด ํ์ฉ ์์ ํฌํจ!) ๐ฅ
๋ชฉ์ฐจ
์๊ฐ
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋, ๋์์ธ ํจํด์ ์ ์ฉํ๋ ๊ฒ์ ์ฝ๋์ ํ์ง๊ณผ ์ ์ง๋ณด์์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค. ์ด ๊ฐ์ด๋์์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฆฌ์กํธ ๊ฐ๋ฐ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋์์ธ ํจํด๋ค์ ์ค๋ฌด ์์ ์ ํจ๊ป ์ค๋ช ํฉ๋๋ค. ๋ณต์กํ ๋ก์ง์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ , ์๋ จ๋ ๊ฐ๋ฐ์๊ฐ ๋๋ ์ฌ์ ์ ํ ๊ฑธ์ ๋ ๋์๊ฐ์ธ์.
MVC ํจํด
Model-View-Controller (MVC) ํจํด์ ๋ฐ์ดํฐ(Model), ์ฌ์ฉ์ ์ธํฐํ์ด์ค(View), ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ์ ๋ทฐ ์ฌ์ด์ ์ํธ์์ฉ์ ์ ์ดํ๋ ์ปจํธ๋กค๋ฌ(Controller)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ฆฌ์กํธ์์ MVC ํจํด์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ ๊ตฌ์ฑ ์์์ ์ญํ , ๊ทธ๋ฆฌ๊ณ ์ฅ๋จ์ ์ ์์ธํ ์ดํด๋ด ๋๋ค. ์ค์ ์์ ์ฝ๋๋ฅผ ํตํด MVC ํจํด์ ์๋ ์๋ฆฌ๋ฅผ ๋ช ํํ๊ฒ ์ดํดํ ์ ์๋๋ก ์ค๋ช ํฉ๋๋ค.
// ์์ ์ฝ๋ (JavaScript)
class Model {
// ...
}
class View {
// ...
}
class Controller {
// ...
}
Flux ์ํคํ ์ฒ
Flux๋ Facebook์์ ๊ฐ๋ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ ํจํด์ผ๋ก, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. Dispatcher, Store, View์ ์ํธ์์ฉ์ ํตํด ๋ฐ์ดํฐ ํ๋ฆ์ ์ ์ดํ๊ณ ์์ธก ๊ฐ๋ฅํ๋ฉฐ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค. ๋ฆฌ์กํธ์ Flux๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ์์ ๋ฅผ ํตํด ์ค๋ฌด์ ์ธ ์ ์ฉ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
Redux
Redux๋ ์์ธก ๊ฐ๋ฅํ ์ํ ์ปจํ ์ด๋๋ก, ๋ณต์กํ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. Redux์ ํต์ฌ ๊ฐ๋ ์ธ Store, Action, Reducer๋ฅผ ์ดํดํ๊ณ , ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ Redux๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์ ์ฝ๋์ ํจ๊ป ์ค๋ช ํฉ๋๋ค. Redux middleware, thunk, saga ๋ฑ์ ํ์ฉํ์ฌ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ๋ค๋ฃน๋๋ค.
// ์์ ์ฝ๋ (JavaScript)
// ... Redux actions, reducers, store ์ค์ ...
๋ค๋ฅธ ์ ์ฉํ ๋์์ธ ํจํด
MVC, Flux, Redux ์ธ์๋ ๋ฆฌ์กํธ ๊ฐ๋ฐ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ ๋ค์ํ ๋์์ธ ํจํด๋ค์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Observer ํจํด, Singleton ํจํด, Decorator ํจํด ๋ฑ์ ์๊ฐํ๊ณ ๊ฐ ํจํด์ ํน์ง๊ณผ ์ ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํฉ๋๋ค. ๋ค์ํ ํจํด๋ค์ ์ดํดํจ์ผ๋ก์จ ๋์ฑ ์ ์ฐํ๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
๋ณธ ๊ฐ์ด๋๋ฅผ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฆฌ์กํธ์์ ๋ค์ํ ๋์์ธ ํจํด์ ์ดํดํ๊ณ ์ค๋ฌด์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ตํ์ จ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด๋ฌํ ํจํด๋ค์ ํ์ฉํ์ฌ ์ฝ๋์ ํ์ง์ ๋์ด๊ณ , ์ ์ง๋ณด์์ฑ์ ํฅ์์์ผ ๋์ฑ ํจ์จ์ ์ด๊ณ ์์ ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ์ธ์. ๋ ๋ง์ ์ ๋ณด์ ์์ ๋ ๊ด๋ จ ๋ฌธ์ ๋ฐ ์ปค๋ฎค๋ํฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
“`
..