Nest.js ์ด๋? + ์ค์น
์ด๋ฒ ์ฑ๊ฐ๋ฐ์ ํ ๋ ์์ฒด Spring ๊ธฐ๋ฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์งํํ๋ ค๊ณ ํ์ผ๋,
์ด์ฐ์ ์ฐ React-Native๋ฅผ ์ฌ์ฉํ ๊ฑฐ๋ฉด javasript ์ธ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฐ๋ฐ์ด ํจ์ฌ ํธํ๊ณ ๋ ๋ณดํธ์ ์ด๊ธฐ์
ํด๋น ํ๋ก์ ํธ๋ Nest.js๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์งํํ ์์ ์ด๋ค.
Nest.js๋ Node.js๊ฐ ์งํํ ๋ฒ์ ์ค ํ๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Node.js์ ๊ธฐ๋ฅ์ ๋ ๊ฐํธํํ๊ฒ ํ๋ ์์ํฌ๋ฅผ ๊ฐ๋ฐํ ๊ฒ์ด express๋ผ๋ฉด, express์ ์ฅ์ ์ ๋ ๊ทน๋ํ ํ ๊ฒ์ด Nest๋ค.
์ฆ, Node.js๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์น API ํ๋ ์์ํฌ ์ด๋ฉฐ, Express ๋๋ Fastify ํ๋ ์์ํฌ๋ฅผ ๋ํํ์ฌ ๋์ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก express๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ก๋๋ค. Node.js๋ ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง ์ ์ฐํจ์ผ๋ก ์ธํด SW ํ์ง์ด ์ผ์ ์น ์๊ณ ์ ํฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ๋ง์ ์๊ฐ์ ํ ์ ํฉ๋๋ค. ์ด๋ฅผ ๋ณด์ํ ๊ฒ์ด Nest.js์ ๋๋ค.
Nest.js์ ์ฅ์
- ๋ชจ๋/์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ -> ์ฌ์ฌ์ฉ์ฑ ๋ํ
- IoC (์ ์ด์ญ์ )
- DI (์์กด์ฑ ์ฃผ์ )
- AOP (๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํน์ง์ ๋ฃ์
- typescript ์ฌ์ฉ
Nest.js ์ค์น
๋จผ์ nest.js๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์๋ node.js๊ฐ ๋ฏธ๋ฆฌ ์ค๋น๋์ด ์์ด์ผํฉ๋๋ค.
ํด๋น ๊ธ์ node.js๊ฐ ๋ฏธ๋ฆฌ ์ค์น๋์ด์๋ค๋ ์ ์ ํ์ ์งํํฉ๋๋ค!
node.js ๋ฅผ ์ค์นํ๋ฉด npm์ด ๊ฐ์ด ์ค์น๋ฉ๋๋ค. ์ฌ๊ธฐ์ npm ์ด๋ Node.js์์ ์ฌ์ฉํ๋ ํจํค์ง ๊ด๋ฆฌ์ ๋ช ๋ น์ด์ ๋๋ค.
ํด๋น ๋ช ๋ น์ด๋ฅผ ํตํด์ node.js์ ์ ๋ฐ์ดํธ, ์ค์น, ์ญ์ ๋ฑ์ ๊ด๋ฆฌ๋ฅผ ์งํํ ์ ์์ต๋๋ค.
nest.js๋ฅผ ์ฌ์ฉํด์ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ํด๋น ํจํค์ง๋ฅผ ์ค์นํ๋๋ก ํฉ๋๋ค.
npm i -g @nestjs/cli
i : install ๋ช ๋ น์ด์ ์ฝ์
-g : ์ปดํจํฐ์ ๊ธ๋ก๋ฒ ํ๊ฒฝ์ ์ค์นํจ. -> ๋ชจ๋ ๋๋ ํ ๋ฆฌ์์ ์ฐธ์กฐ ๊ฐ๋ฅํจ.
ํด๋น ๋๋ ํ ๋ฆฌ๋ npm root -g ๋ก ํ์ธ ๊ฐ๋ฅ
์ค์น ํ์ผ๋ฉด ์ด๋ค ํจํค์ง๊ฐ ์ถ๊ฐ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค. (npm ์ ๋ฐ์ดํธ ์ ๋ณด๋ ํ์ธํ ์ ์๋ค์)
nest new [ํ๋ก์ ํธ์ด๋ฆ]
์ดํ ํด๋น ๋ช ๋ น์ด๋ฅผ ํ ๋๋ก ์๋ก์ด nest ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํ์ผ ์์ฑ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด ๋ณผ ์ ์์ผ๋ฉฐ,
์ด๋ค ๋งค๋์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์์ ์ธ์ง ์ ํํฉ๋๋ค. ํ์๋ npm์ ์ฌ์ฉํ ์์ ์ด๋ค.
๋๋ ํ ๋ฆฌ์ ๊ตฌ์ฑ์ ์ผ์ชฝ๊ณผ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ,
nest.js github์์ ์ ๊ณตํด์ฃผ๋ typescript ๊ธฐ๋ฐ ํ๋ก์ ํธ ์์ฑ์ ์งํํ๋ฉด ํ์ฌ ์ต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์งํํ๋ค.
์ถ๊ฐ๋ก, https://github.com/nestjs/typescript-starter ์ ๋ฐฉ์๋ ์ฐธ๊ณ ํ๋ฉด ์ข๋ค.