[NestJS] ๋ชจ๋“ˆ(Modules)

๊ฒจ๋ ˆยท2025๋…„ 2์›” 18์ผ
0

๐Ÿ“ ๋ชจ๋“ˆ(Modules)

๐Ÿ‘‰ 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( )

  • ๊ธ€๋กœ๋ฒŒ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ๋ชจ๋“ˆ์„ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์คŒ.
  • ๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฃจํŠธ, ์ฝ”์–ด์— ์„ค์ •ํ•ด ๊ด€๋ฆฌํ•จ.
profile
ํ˜ธ๋–ก ์‹ ๋ฌธ์ง€์—์„œ ๊ฐœ๋ฐœ์ž๋กœ ํ™˜์ƒ

0๊ฐœ์˜ ๋Œ“๊ธ€