๋์์ธ ํจํด์ด๋ ๊ธฐ์กด ํ๊ฒฝ ๋ด์์ ๋ฐ๋ณต์ ์ผ๋ก ์ผ์ด๋๋ ๋ฌธ์ ๋ค์ ์ด๋ป๊ฒ ํ์ด๋๊ฐ ๊ฒ์ธ๊ฐ์ ๋ํ ์ผ์ข ์ ์๋ฃจ์ ๊ฐ์ ๊ฒ์ ๋๋ค.
์ฆ ๋์์ธ ํจํด์ ์ค๊ณ์๋ค์ด ์ฌ๋ฐ๋ฅธ ์ค๊ณ๋ฅผ ๋นจ๋ฆฌ ๋ง๋ค ์ ์๋๋ก ๋์์ค.
๋์์ธ ํจํด์ด ์ง์ผ์ง์ง ์์์ฑ ๊ฐ๋ฐ์ ์์ํ๊ฒ ๋๋ฉด ํ์ ์ ์ง๋ณด์, ๊ฐ๋ ์ฑ, ๋นํจ์จ์ ์ธ ์ฝ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋์์ธ ํจํด ์ค ํ๋.
Node.js Express์์๋ MVC ํจํด์ ์ฌ์ฉํ๋ค.
Moder, View, Controller์ ์ฝ์๋ก,
ํ๋์ ์ ํ๋ฆฌ์ผ์ด์
, ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋ ๊ทธ ๊ตฌ์ฑ์์๋ฅผ ์ธ๊ฐ์ง์ ์ญํ ๋ก ๊ตฌ๋ถํ ํจํด์ด๋ค.
์ ๊ทธ๋ฆผ์์๋ controller์ view๊ฐ ๋ถ๋ฆฌ๋์ด ์๋๋ฐ
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด controller๋ view์ ์ํฅ์ ๋ผ์น๋ค.
์ฌ์ฉ์๊ฐ ๋ณด๋ ํ์ด์ง, ๋ฐ์ดํฐ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ด 2๊ฐ์ง๋ฅผ ์ค๊ฐ์์ ์ ์ดํ๋ ์ปจํธ๋กค, ์ด 3๊ฐ์ง๋ก ๊ตฌ์ฑ๋๋ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋ฉด ๊ฐ๊ฐ ๋งก์๋ฐ์๋ง ์ง์ค์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ณต์ฅ์์๋ ํ๋์ ์ญํ ๋ค๋ง ๋ด๋น์ ํด์ ์ฒ๋ฆฌ๋ฅผ ํด์ ํจ์จ์ ์ด๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์๋ก ๋ถ๋ฆฌ๋์ด ๊ฐ์์ ์ญํ ์ ์ง์คํ ์ ์๊ฒ๋ํ์ฌ ๊ฐ๋ฐ์ ํ๊ณ ๊ทธ๋ ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ ๋ค๋ฉด, ์ ์ง๋ณด์์ฑ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ์ฐ์ฑ์ด ์ฆ๊ฐํ๊ณ , ์ค๋ณต์ฝ๋ฉ์ด๋ผ๋ ๋ฌธ์ ์ ๋ํ ์ฌ๋ผ์ง๊ฒ ๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํ MVCํจํด์ ๋๋ค.
์ฆ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์๋ ๊ฒ์ด๋ค.
๋ชจ๋ํ๋ฅผ ํตํด ๊ฐ๊ฐ์ layer๊ฐ ํ๋ ์ญํ ์ด ๋ช ํ
์ ํด์ง protocol์ด ์๋ค๋ฉด ๊ฐ layer๋ ๋ ์์ ์ผ๋ก ๊ฐ๋ฐ์ด ๊ฐ๋ฅ
View๋ FrontEnd์ ๋งก๊ธฐ๊ณ , ์ฐ๋ฆฌ๋ Model๊ณผ Controller์ ์ง์คํ๋ฉด ๋๋ค.
์ผ๋ฐ์ ์ธ Express ๋์์ธ ํจํด ์์๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
src
โ app.js # App entry point
โโโโapi # Express route controllers for all the endpoints of the app
โโโโconfig # Environment variables and configuration related stuff
โโโโjobs # Jobs definitions for agenda.js
โโโโloaders # Split the startup process into modules
โโโโmodels # Database models
โโโโservices # All the business logic is here
โโโโsubscribers # Event handlers for async task
โโโโtypes # Type declaration files (d.ts) for Typescript
์ถ์ฒ : ideal-nodejs-project-structure
โโโ app.js # ์คํ ์ฃผ์ฒด
โโโ package.json # yarn ํจํค์ง ๊ด๋ฆฌ
โโโ yarn.lock # yarn ํจํค์ง ์ ๊ธ
โโโ src # ์์ค ํด๋
โโโ modules # ์ฌ์ฉ์ ์ง์ ๋ชจ๋
โโโ routes # ์์ฒญ์ ๋ฐ๋ฅธ ๋ถ๋ฆฌ
โโโ controllers # API ์์ฒญ/์๋ต ์คํ
โโโ services # ๋ฐ์ดํฐ ๊ฐ๊ณต
โโโ repository # DB CRUD
โโโ entities # Model๊ณผ ๋์ผ
์ถ์ฒ : express-design-pattern
Bulletproof node.js project architecture ๐ก๏ธ
https://www.softwareontheroad.com/ideal-nodejs-project-structure/
Express ๋์์ธ ํจํด
https://seongsu.me/skill/express-design-pattern/
MVCํจํด์ด๋
https://m.blog.naver.com/jhc9639/220967034588