Modules
Last updated
Was this helpful?
Last updated
Was this helpful?
๋ชจ๋์ @Module()
๋ฐ์ฝ๋ ์ดํฐ๋ก ์ฃผ์์ด ๋ฌ๋ฆฐ ํด๋์ค์
๋๋ค. @Module()
๋ฐ์ฝ๋ ์ดํฐ๋ Nest๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์๋ ํ๋ ์ด์์ ๋ชจ๋์ธ ๋ฃจํธ ๋ชจ๋์ด ์์ต๋๋ค. ๋ฃจํธ ๋ชจ๋์ Nest๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ ๊ทธ๋ํ๋ฅผ ๋น๋ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์์์ ์ ๋๋ค. - Nest๋ ๋ชจ๋๊ณผ ๊ณต๊ธ์ ๊ด๊ณ ๋ฐ ์ข ์์ฑ์ ํด๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ด๋ถ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ์์ฃผ ์์ ์์ฉ ํ๋ก๊ทธ๋จ์๋ ์ด๋ก ์ ์ผ๋ก ๋ฃจํธ ๋ชจ๋๋ง ์์ ์ ์์ง๋ง ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ ์๋๋๋ค. ๊ตฌ์ฑ ์์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ค๋ฉด ๋ชจ๋์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฒฐ๊ณผ ์ํคํ ์ฒ๋ ์ฌ๋ฌ ๋ชจ๋์ ์ฌ์ฉํ๋ฉฐ ๊ฐ ๋ชจ๋์ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์บก์ํํฉ๋๋ค.
@Module()
๋ฐ์ฝ๋ ์ดํฐ๋ ์์ฑ์ด ๋ชจ๋์ ์ค๋ช
ํ๋ ๋จ์ผ ๊ฐ์ฒด๋ฅผ ์ทจํฉ๋๋ค.
providers
Nest ์ธ์ ํฐ์ ์ํด ์ธ์คํด์คํ๋๊ณ ์ ์ด๋์ด ๋ชจ๋์์ ๊ณต์ ๋ ์์๋ ๊ณต๊ธ์
controllers
์ธ์คํด์คํํด์ผํ๋์ด ๋ชจ๋์ ์ ์ ๋ ์ปจํธ๋กค๋ฌ ์ธํธ
imports
์ด ๋ชจ๋์ ํ์ํ ์ ๊ณต์๋ฅผ ๋ด๋ณด๋ด๋ ๊ฐ์ ธ์จ ๋ชจ๋ ๋ชฉ๋ก
exports
์ด ๋ชจ๋์์ ์ ๊ณตํ๋ฉฐ ์ด ๋ชจ๋์ ๊ฐ์ ธ ์ค๋ ๋ค๋ฅธ ๋ชจ๋์์ ์ฌ์ฉํ ์์๋ ๊ณต๊ธ์
์ ํ์ ์งํฉ
์ด ๋ชจ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต์๋ฅผ ์บก์ํํฉ๋๋ค. ์ด๋ ํ์ฌ ๋ชจ๋์ ์ผ๋ถ๊ฐ ์๋๊ฑฐ๋ ๊ฐ์ ธ์จ ๋ชจ๋์์ ๋ด ๋ณด๋ด์ง ์์ ๊ณต๊ธ์๋ฅผ ์ฃผ์ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋์์ ๋ด ๋ณด๋ธ ๊ณต๊ธ์๋ฅผ ๋ชจ๋์ ๊ณต์ฉ ์ธํฐํ์ด์ค ๋๋ API๋ก ๊ฐ์ฃผ ํ ์ ์์ต๋๋ค.
CatsController
๋ฐ CatsService
๋ ๋์ผํ ์ ํ๋ฆฌ์ผ์ด์
๋๋ฉ์ธ์ ์ํฉ๋๋ค. ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ผ๋ฏ๋ก ๊ธฐ๋ฅ ๋ชจ๋๋ก ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ธฐ๋ฅ ๋ชจ๋์ ๋จ์ํ ํน์ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์ฌ ์ฝ๋๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ์งํ๊ณ ๋ช
ํํ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํนํ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ / ๋๋ ํ์ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ SOLID ์์น์ผ๋ก ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๊ณ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด CatsModule
์ ๋ง๋ญ๋๋ค.
info ํํธ CLI๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ๋ง๋ค๋ ค๋ฉด ๊ฐ๋จํ
$ nest g module cats
๋ช ๋ น์ ์คํํ์ญ์์ค.
์์์ ์ฐ๋ฆฌ๋ cats.module.ts
ํ์ผ์์ CatsModule
์ ์ ์ํ๊ณ ์ด ๋ชจ๋๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ cats
๋๋ ํ ๋ฆฌ๋ก ์ฎ๊ฒผ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ํด์ผ ํ ์ผ์ ์ด ๋ชจ๋์ ๋ฃจํธ ๋ชจ๋ ( app.module.ts
ํ์ผ์ ์ ์ ๋ AppModule
)๋ก ๊ฐ์ ธ ์ค๋ ๊ฒ์
๋๋ค.
๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
src
cats
dto
create-cat.dto.ts
interfaces
cat.interface.ts
cats.service.ts
cats.controller.ts
cats.module.ts
app.module.ts
main.ts
Nest์์ ๋ชจ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋จ์ผ์ด๋ฏ๋ก ์ฌ๋ฌ ๋ชจ๋๊ฐ์ ๋์ผํ ๊ณต๊ธ์ ์ธ์คํด์ค๋ฅผ ์์ฝ๊ฒ ๊ณต์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ ๋ชจ๋์ ์๋์ผ๋ก ๊ณต์ ๋ชจ๋์
๋๋ค. ์ผ๋จ ์์ฑ๋๋ฉด ๋ชจ๋ ๋ชจ๋์์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋๋ค ์ฌ์ด์ CatsService
์ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ๊ณ ์ถ๋ค๊ณ ์์ํด ๋ณด์. ์ด๋ฅผ ์ํด์๋ ๋จผ์ ์๋์ ๊ฐ์ด CatsService
๊ณต๊ธ์๋ฅผ ๋ชจ๋์ exports
๋ฐฐ์ด์ ์ถ๊ฐํ์ฌ CatsService
๋ฅผ ๋ด ๋ณด๋ด์ผํฉ๋๋ค.
์ด์ CatsModule
์ ๊ฐ์ ธ ์ค๋ ๋ชจ๋ ๋ชจ๋์ CatsService
์ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ๊ฐ์ ธ ์ค๋ ๋ค๋ฅธ ๋ชจ๋ ๋ชจ๋๊ณผ ๋์ผํ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํฉ๋๋ค.
์์์ ๋ณผ ์ ์๋ฏ์ด ๋ชจ๋์ ๋ด๋ถ ๊ณต๊ธ์๋ฅผ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. ๋ํ ๊ฐ์ ธ์จ ๋ชจ๋์ ๋ค์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. ์๋ ์์์ CommonModule
์ CoreModule
์์ ๋ด๋ณด๋ด๊ณ ๋ ์ด ๋ชจ๋์ ๊ฐ์ ธ ์ค๋ ๋ค๋ฅธ ๋ชจ๋์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ชจ๋ ํด๋์ค๋ (์: ๊ตฌ์ฑ ๋ชฉ์ ์ผ๋ก) ๊ณต๊ธ์๋ฅผ ์ฃผ์ ํ ์ ์์ต๋๋ค :
๊ทธ๋ฌ๋ circular dependency๋ก ์ธํด ๋ชจ๋ ํด๋์ค ์์ฒด๋ฅผ ๊ณต๊ธ์๋ก ์ฝ์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ ๊ณณ์์ ๋์ผํ ๋ชจ๋ ์ธํธ๋ฅผ ๊ฐ์ ธ์์ผํ๋ ๊ฒฝ์ฐ ์ง๋ฃจํ ์ ์์ต๋๋ค. Nest์ ๋ฌ๋ฆฌ Angular ๊ณต๊ธ์
๋ ๊ธ๋ก๋ฒ ๋ฒ์์ ๋ฑ๋ก๋์ด ์์ต๋๋ค. ์ผ๋จ ์ ์๋๋ฉด ์ด๋์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Nest๋ ๋ชจ๋ ๋ฒ์ ๋ด์์ ๊ณต๊ธ์๋ฅผ ์บก์ํํฉ๋๋ค. ์บก์ํ ๋ชจ๋์ ๋จผ์ ๊ฐ์ ธ ์ค์ง ์์ผ๋ฉด ๋ชจ๋์ ๊ณต๊ธ์๋ฅผ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฆ์ ์ฌ์ฉํ ์์๋ ๊ณต๊ธ์ (์: ํฌํผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฑ)๋ฅผ ์ ๊ณตํ๋ ค๋ฉด @Global()
๋ฐ์ฝ๋ ์ดํฐ๋ก global ๋ชจ๋์ ๋ง๋์ญ์์ค. .
@Global()
๋ฐ์ฝ๋ ์ดํฐ๋ ๋ชจ๋์ ์ ์ญ ๋ฒ์๋ก ๋ง๋ญ๋๋ค. ์ ์ญ ๋ชจ๋์ ์ผ๋ฐ์ ์ผ๋ก ๋ฃจํธ ๋๋ ์ฝ์ด ๋ชจ๋๋ก ํ ๋ฒ๋ง ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์์ ์์์ CatsService
๊ณต๊ธ์๋ ์ด๋์๋ ์์ ์ ์์ผ๋ฉฐ, ์๋น์ค๋ฅผ ์ฃผ์
ํ๊ณ ์ ํ๋ ๋ชจ๋์ CatsModule
์ imports ๋ฐฐ์ด๋ก ๊ฐ์ ธ์ฌ ํ์๊ฐ ์์ต๋๋ค.
info ํํธ ๋ชจ๋ ๊ฒ์ ๊ธ๋ก๋ฐํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ข์ ๋์์ธ ๊ฒฐ์ ์ด ์๋๋๋ค. ํ์ํ ์์ฉ๊ตฌ์ ์์ ์ค์ด๊ธฐ ์ํด ๊ธ๋ก๋ฒ ๋ชจ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
imports
๋ฐฐ์ด์ ์ผ๋ฐ์ ์ผ๋ก ์๋น์๊ฐ ๋ชจ๋์ API๋ฅผ ์ฌ์ฉํ ์ ์๋๋กํ๋ ๊ธฐ๋ณธ ๋ฐฉ๋ฒ์ ๋๋ค.
Nest ๋ชจ๋ ์์คํ
์๋ ๋์ ๋ชจ๋์ด๋ผ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ง์ ๊ฐ๋ฅํ ๋ชจ๋์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ค์์ ์ด๋ฌํ ๋์ ๋ชจ๋์ธ DatabaseModule
์ ์์
๋๋ค.
info ํํธ
forRoot()
๋ฉ์๋๋ ๋์ ๋ชจ๋์ ๋๊ธฐ์ ๋๋ ๋น๋๊ธฐ์์ผ๋ก (์ฆ,Promise
๋ฅผ ํตํด) ๋ฐํ ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ
๊ณต๊ธ์๋ฅผ ์ ์ํ์ง๋ง, ์ถ๊ฐ ๋ ์ํฐํฐ
๋ฐ ์ต์
์ค๋ธ์ ํธ์ ๋ฐ๋ผ ๊ณต๊ธ์ ์ฝ๋ ์
(์: ์ ์ฅ์)์ ๋
ธ์ถํฉ๋๋ค. ๋์ ๋ชจ๋์ ๊ธฐ๋ณธ ๋ชจ๋ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์ํ์ง ์๊ณ ํ์ฅํฉ๋๋ค. ์ด๊ฒ์ด ์ ์ ์ผ๋ก ์ ์ธ ๋ ์ฐ๊ฒฐ
๊ณต๊ธ์ ์ ๋์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์ฅ์ ๊ณต๊ธ์๊ฐ ๋ชจ๋ ๋ชจ๋์์ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ด ์ค์ง์ ์ธ ๊ธฐ๋ฅ์ ๊ณต๊ธ์๋ฅผ ๋์ ์ผ๋ก ๋ฑ๋กํ๊ณ ๊ตฌ์ฑํด์ผ ํ ๋ ์ ์ฉํฉ๋๋ค. ์ด๋ฐ ์์ผ๋ก ์ ์ํ๋ฉด DatabaseModule
์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ ธ์ค๊ณ ๊ตฌ์ฑ ํ ์ ์์ต๋๋ค.
๋์ ๋ชจ๋์ ๋ค์ ๋ด๋ณด๋ด๋ ค๋ฉด exports ๋ฐฐ์ด์์ forRoot()
๋ฉ์๋ ํธ์ถ์ ์๋ต ํ ์ ์์ต๋๋ค.