๐ Nest.js๋ ๋ชจ๋ ๊ธฐ๋ฐ์ ์ํคํ
์ณ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
๊ทธ๋์ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ด๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋
๋ฆฝ์ ์ธ ๋ชจ๋๋ก ๋ถ๋ฆฌํด ๊ด๋ฆฌํ ์ ์์ด ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๊ด๋ฆฌ์ฑ์ ํฅ์์ํจ๋ค.
๋ชจ๋์ ๋ชจ๋ ๋ฐ์ฝ๋ ์ดํฐ(@)๋ก ์ด๋ ธํ ์ด์ ๋๊ณ , ๊ทธ ๋ด๋ถ์๋ ์๋์ ๊ฐ์ ์ฃผ์ ํ๋๊ฐ ์๋ค.
๐ ๋ชจ๋ ๋ด๋ถ ์ฃผ์ ํ๋
- imports
- ๋ชจ๋์ด ์์กดํ๋ ๋ค๋ฅธ ๋ชจ๋์ ๋ฐฐ์ด์ ๊ฐ์ง.
Nest.js๋ ์ด๋ฌํ ๋ชจ๋๋ค์ด ํ์ฌ ๋ชจ๋์ providers์ controllers๊ฐ ์ฌ์ฉ๋ ์ ์๋๋ก ์ ๊ณตํจ.
- controllers
- ๋ชจ๋์ ์ ์ํ๋ ์ปจํธ๋กค๋ฌ์ ๋ฐฐ์ด์ ๊ฐ์ง.
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ๋ฐํํ๋ ์ญํ .
- providers
- ๋ชจ๋์ ์์ฑํ๊ณ , ์์กด์ฑ ์ฃผ์ ์ปจํ ์ด๋์ ์ถ๊ฐํ ํด๋์ค ์ธ์คํด์ค ๋๋ ๊ฐ์ ๋ฐฐ์ด์ ๊ฐ์ง.
- ์ฃผ๋ก ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฑ์ด ์ฌ๊ธฐ์ ํฌํจ๋จ.
- exports
- ๋ชจ๋์์ ์ ๊ณตํ๋ฉฐ, ๋ค๋ฅธ ๋ชจ๋์์ importsํ์ฌ ์ฌ์ฉํ ์ ์๋ providers์ ๋ฐฐ์ด์ ๊ฐ์ง.
๐ Nest.js ๋ชจ๋ ์์คํ
์ ์ฌ๋ฌ๊ฐ์ง ์ ํ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ทธ ์ค์์ ์ค์ํ ํผ์ฒ์์ด(Feature Share)๋ค์ ์์๋ณด์!!!
โ
๊ธฐ๋ฅ ๋ชจ๋(Feature Modules)
์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ๊ธฐ๋ฅ์ ์บก์ํํจ.
( ์: ์ฌ์ฉ์ ๊ด๋ฆฌ, ์ํ ๊ด๋ฆฌ, ์ฃผ๋ฌธ์ฒ๋ฆฌ ๋ฑ ํน์ ๊ธฐ๋ฅ์ ๋ํด ์ปจํธ๋กค๋ฌ, ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฑ์ ๊ทธ๋ฃนํ)
์ฌ์ง ์ ์์ ์ฝ๋์์๋ UserController์ UserService ๋ฑ์ ๊ทธ๋ฃนํํ ๋ชจ๋์ ํ์ธํ ์ ์์.
โ
๊ณต์ ๋ชจ๋(Share Modules)
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ณต์ ๋๋ ๊ธฐ๋ฅ์ ์ ๊ณตํจ.
( ์: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์, ๋ก๊น ์ธ์ฆ ๋ฑ ๊ณตํต์ ์ธ ์์ ์ ์ํํ๋ ๊ธฐ๋ฅ๋ค์ Shared ๋ชจ๋๋ก ๊ตฌ์ฑํ ์ ์์.)
Share Modules์ ๋ค๋ฅธ ๋ชจ๋์ ์ฌ์ฉํ ์ ์๊ฒ exports๊ฐ ์ ์๋์ด ์์.
๐ ๊ณต์ ๋ชจ๋ ์ ์ฉ ์์
imports ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋์ด ์ถ๊ฐ๋์ด ์๋๋ฐ, ์ด๋ ๊ฒ imports ํ๋์ ์ฌ์ฉํ๋ ค๋ ๋ชจ๋์ ๋ช ์ํ๋ฉด UsersModule์์ ์ฌ์ฉํ ์ ์์.
imports๋ฅผ ํตํด ๋ค๋ฅธ ๋ชจ๋์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ชจ๋์ ์ ์ญ ์ค์ ์ ํตํด์ imports ์์ด ์ฌ์ฉ ๊ฐ๋ฅํจ.
๐ @Global( )