๐จ MVC pattern์ด๋?
๋ชจ๋ธ ๋ทฐ ์ปจํธ๋กค๋ฌ (model-view-controller, MVC) ํจํด์ ์ํํธ์จ์ด ๊ณตํ์์ ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์ ๋๋ค.
๋์์ธ ํจํด์ ์ํํธ์จ์ด ๊ณตํ์ ์ํํธ์จ์ด ๋์์ธ์์ ํน์ ๋ฌธ๋งฅ์์ ๊ณตํต์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ํด ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ ์ ์๋ฏธํ๋ค๊ณ ํฉ๋๋ค.
์ ๋ ๊ฐ๋จํ๊ฒ ๊ฐ๋ฐ ๊ณผ์ ์์ ์์์จ ์ค๊ณ ๋ ธํ์ฐ๋ฅผ ์ถ์ ํด ์ด๋ฆ์ ๋ถ์ฌ์ ์๋ก์ด ์ด๋ฆ์ ๋ถ์ฌ ์ดํ์๋ ์ฌ์ฌ์ฉ ํ๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ๋ํ ๊ท์ฝ์ด๋ผ๊ณ ์ดํดํ์ต๋๋ค.
์ฆ, ํน์ ํ ์ฝ๋๋ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ ํจ์จ์ ์ธ ์ฝ๋ ์์ฑ๊ณผ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ก ์ ๋์์ธ ํจํด์ด๋ผ๊ณ ํ๋ ๊ฒ์ด์ฃ .
์ค๋ ์ ๋ฆฌํ MVC pattern์ ์ด๋ฌํ ๋์์ธ ํจํด์ ํ ์ข ๋ฅ๋ก Model, View, Controller ์ธ ๊ฐ์ ๊ตฌ์ฑ ์์๋ก ๋๋์ด์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋ฐฉ์์ ์๋ฏธํฉ๋๋ค.
Model, View, Controller์ ์ญํ ์ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ฝ ๋ชจ๋ธ (Model)
๋ฐ์ดํฐ ์์ฒด ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฐ์ฒด ๋ฟ๋ง ์๋๋ผ ํ๋ก๊ทธ๋จ์์ ๋ค๋ฃจ๋ ์์๋ค์ ๊ฐ๋ ์ ์ผ๋ก ์ ์ํ ๊ฒ์ ์๋ฏธํฉ๋๋ค. Domain์ด๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค๊ณ ํฉ๋๋ค.
๋ชจ๋ธ์ ๊ท์น
- ์ฌ์ฉ์๊ฐ ํธ์งํ๊ธฐ๋ฅผ ์ํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์์ด์ผ ํ๋ค.
- ๋ทฐ๋ ์ปจํธ๋กค๋ฌ์ ๋ํด์ ์ด๋ ํ ์ ๋ณด๋ ๋ชฐ๋ผ์ผ ํ๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด, ๋ณ๊ฒฝ ํต์ง์ ๋ํ ๋ถ๋ถ์ด ๊ตฌํ๋์ด์ผ ํ๋ค.
๐ป ๋ทฐ (View)
๋ทฐ๋ ์ฌ์ฉ์๊ฐ ๋ณด๊ฒ ๋๋ ๋ ์ด์์๊ณผ ๋์คํ๋ ์ด๋ฅผ ์ฒ๋ฆฌํ์ฌ, ๋ค์ํ ์ฌ์ฉ์ ์ ์ถ๋ ฅ์ ๊ณผ์ ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ ๊ฐ๋ ์ ํด๋นํฉ๋๋ค.
์์ฝํ๋ฉด, ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง์ง ์ ์ํ๋ ๋ถ๋ถ์ผ๋ก ๋ฐ์ดํฐ ๋ฐ ๊ฐ์ฒด์ ์ ๋ ฅ์ ๋ฐ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ถ๋ถ์ ๋ด๋นํฉ๋๋ค.
๋ทฐ์ ๊ท์น
- ๋ชจ๋ธ์ด ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ ์ฅํด์๋ ์๋๋ค.
- ๋ชจ๋ธ์ด๋ ์ปจํธ๋กค๋ฌ์ ๊ฐ์ด ๋ค๋ฅธ ๋ถ๋ถ์ ๋ํด ์ด๋ ํ ์ ๋ณด๋ ๋ชฐ๋ผ์ผ ํ๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด, ๋ณ๊ฒฝ ํต์ง์ ๋ํ ๋ถ๋ถ์ด ๊ตฌํ๋์ด์ผ ํ๋ค.
๐ฎ ์ปจํธ๋กค๋ฌ (Controller)
๋ฐ์ดํฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI, user interface) ์ฆ, ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ค๋ฆฌ ์ญํ ์ ์ํํฉ๋๋ค.
๋ชจ๋ธ์ ์ ๋ฐ์ดํธํ๋ ๋ก์ง์ ํฌํจํ๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์๋ก๋ถํฐ ์๋กญ๊ฒ ๋ฐ์ ์ ๋ ฅ์ ๋์ํ๋ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค.
์ปจํธ๋กค๋ฌ์ ๊ท์น
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ํด ์๊ณ ์์ด์ผ ํ๋ค.
- ๋ชจ๋ธ์ด๋ ๋ทฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ํฐ๋ง ํด์ผ ํ๋ค.
MVC pattern์ ์ฌ์ฉํ๋ ์ด์ ?
MVC pattern์ ๋ฐ๋ผ ํ๋ก์ ํธ๋ฅผ 3๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๋๋์ด ๊ตฌํํ๊ฒ ๋๋ ๊ฒฝ์ฐ ๋ถ์ ์ ํจ์จ์ ์ผ๋ก ํ ์ ์์ด ๊ฐ์ ๋งก์ ๋ฐ์๋ง ์ถฉ์คํ๊ฒ ๊ฐ๋ฐ์ ์ง์คํ ์ ์์ต๋๋ค.
๊ทธ์ ๋ฐ๋ผ์ ๊ฐ๋ฐ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ง/๋ณด์์ฑ์ ๋์ผ ์ ์๊ณ , ํ์ฅ์ฑ ๋ฐ ์ ์ฐ์ฑ ๋ํ ์ฆ๊ฐํ๊ฒ ๋ ๊ฒ์ด๊ณ , ์ด๋ฌํ ์ฅ์ ๋ค๋ก ์ธํด์ MVC pattern์ ์ฑํํ์ฌ ๊ฐ๋ฐ์ ์งํํ๋ค๊ณ ํฉ๋๋ค.
MVC pattern์ ์ฅ์
์ญํ ๋ณ๋ก ๋ถ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์, ์ ์ง ๋ณด์๊ฐ ํธ๋ฆฌํ๊ณ ํ์ฅ์ฑ์ด ์ฆ๊ฐํฉ๋๋ค.
์๋ก์ด ๋๋ฉ์ธ์ด ํ์ํ ๊ฒฝ์ฐ Model ํํธ๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๊ตฌํํ๋ฉด ๋ฉ๋๋ค.
MVC pattern์ ๋จ์
Controller๊ฐ ๋น๋ํด์ง ์ ์๋ค๊ณ ํฉ๋๋ค.
- ๊ฒฐ๊ตญ ์ธ ๊ฐ์ ํํธ๋ก ๋ถ๋ฆฌํด์ ๊ตฌํํ์ง๋ง, Model๊ณผ View๋ ์ฐ๊ด๋์ด์๊ณ
- ์ํํธ์จ์ด๊ฐ ์ ์ ๋ณต์กํด์ ธ, domain(Model)์ด ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ ์ค๊ฐ์ ์ญํ ์ ํ๋ Controller๊ฐ ๋น๋ํด์ง ์ ๋ฐ์ ์์ต๋๋ค.
- ์ด๋ Model, View ์ด๋ ์ชฝ์ ๊ตฌํํด์ผ ํ ์ง ์ ๋งคํ ๋ถ๋ถ์ ๋ชจ๋ Controller์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๊ฐ ๊ณต๋ถํ๊ณ ์๋ nodejs์ express web framework ๋ํ MVC pattern์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ํ ์ ์๋ ํ๋ ์์ํฌ์ ์์์ด๊ธฐ ๋๋ฌธ์, ๊ฒธ์ฌ๊ฒธ์ฌ ์ ๋ฆฌํด๋ณด๊ฒ ๋์์ต๋๋ค.
์ถํ์ ๊ณต๋ถํ๋ ๋ด์ฉ์ ์ถ๊ฐํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! ๐
References
https://velog.io/@ljinsk3/MVC-%ED%8C%A8%ED%84%B4
'BackEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฌธ์์ด encoding์ ๋ํ ์ ๋ฆฌ, UTF-8์ด๋?? (0) | 2022.11.01 |
---|---|
pug ํ ํ๋ฆฟ ์์ง(template engine) ์ ๋ฆฌ ๋ฐ ์์ฝ (0) | 2022.09.29 |
REST API ๊ฐ๋ ์ ๋ฆฌ!! (0) | 2022.09.15 |
DOM (Document Object Model) ๊ฐ๋ ์ ๋ํ ์ ๋ฆฌ (0) | 2022.09.12 |
URL ์ด๋?? URL ์ดํดํ๊ธฐ! (0) | 2022.09.03 |
๋๊ธ