์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๋Š” Express.js: Part2 ์—”์ง„ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ์™€ ํด๋ก  ํ”„๋กœ์ ํŠธ

Express.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด์„œ, ์‹ค์ œ๋กœ ๊ทธ ๋‚ด๋ถ€ ์—”์ง„์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉฐ ์ง„์งœ ์„œ๋ฒ„์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋ชธ์œผ๋กœ ์ฒด๋“ํ•˜๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ, ๋ฏธ๋“ค์›จ์–ด, ์š”์ฒญ-์‘๋‹ต ๊ฐ์ฒด, ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ, ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง ๋“ฑ Express์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•˜๋Š” ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

(4.0) ์ˆ˜๊ฐ•ํ‰ 3๊ฐœ

์ˆ˜๊ฐ•์ƒ 35๋ช…

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
๋ฐฑ์—”๋“œ์ดํ•ดํ•˜๊ธฐ
๋ฐฑ์—”๋“œ์ดํ•ดํ•˜๊ธฐ
express.jsํด๋ก 
express.jsํด๋ก 
node.js๋ฐฑ์—”๋“œ
node.js๋ฐฑ์—”๋“œ
์›น์„œ๋ฒ„ํ”„๋ ˆ์ž„์›Œํฌ๊ตฌํ˜„
์›น์„œ๋ฒ„ํ”„๋ ˆ์ž„์›Œํฌ๊ตฌํ˜„
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
๋ฐฑ์—”๋“œ์ดํ•ดํ•˜๊ธฐ
๋ฐฑ์—”๋“œ์ดํ•ดํ•˜๊ธฐ
express.jsํด๋ก 
express.jsํด๋ก 
node.js๋ฐฑ์—”๋“œ
node.js๋ฐฑ์—”๋“œ
์›น์„œ๋ฒ„ํ”„๋ ˆ์ž„์›Œํฌ๊ตฌํ˜„
์›น์„œ๋ฒ„ํ”„๋ ˆ์ž„์›Œํฌ๊ตฌํ˜„

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Express.js๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ์›น ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ๊ทผ๋ณธ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Express.js ์ „์ฒด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉฐ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํŒŒ์•…ํ•˜๋Š” ๋ฒ•

  • ๋ฏธ๋“ค์›จ์–ด ์ฒด์ธ๊ณผ next() ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ  ์ œ์–ด ํ๋ฆ„์„ ์ด์–ด์ฃผ๋Š”์ง€

  • ์š”์ฒญ(req)๊ณผ ์‘๋‹ต(res) ๊ฐ์ฒด๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๊ณ  ์ „๋‹ฌ๋˜๋Š”์ง€ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„์„

  • ์ •์  ํŒŒ์ผ ์„œ๋ฒ„๋ฅผ ๋ณด์•ˆ์ ์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹

  • JSON ๋ฐ URL-Encoded ์š”์ฒญ ๋ณธ๋ฌธ์„ ์ง์ ‘ ํŒŒ์‹ฑํ•˜๋Š” ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ๋กœ์ง ๊ตฌํ˜„

  • RESTful ๋ผ์šฐํ„ฐ๋ฅผ ์ง์ ‘ ์„ค๊ณ„ํ•˜์—ฌ CRUD API ์ „์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

  • express.Router()์ฒ˜๋Ÿผ ๋ผ์šฐํ„ฐ๋ฅผ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ฉ”์ธ ์•ฑ๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ตฌ์กฐ ๊ตฌํ˜„

  • EJS ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์—ฐ๋™ํ•˜์—ฌ ๋™์  HTML์„ ๋ Œ๋”๋งํ•˜๋Š” ๋ฒ•

  • ๋™๊ธฐ/๋น„๋™๊ธฐ ์˜ค๋ฅ˜๋ฅผ ๋ฏธ๋“ค์›จ์–ด ์ฒด์ธ ์•ˆ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ ๊ตฌํ˜„

  • ์ž๋™ API ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ „์ฒด ์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•˜๊ณ  ํ†ตํ•ฉ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฒ•

๐Ÿš€"์‚ฌ์šฉ์ž"์—์„œ "๊ตฌํ˜„์ž"๋กœ โ€“ Express.js๋ฅผ ํด๋ก ํ•˜๋ฉฐ ๋ฐฐ์šฐ๋Š” ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ•ต์‹ฌ ์›๋ฆฌ

์ด ๊ฐ•์˜๋Š” ์›น ์ƒํƒœ๊ณ„์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ, Express.js์˜ ์—”์ง„์„ ์ง์ ‘ ํด๋ก ํ•˜๋ฉฐ ๊ทธ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ์—ฌ์ •์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ Node.js์™€ Express๋ฅผ ๋ฐฐ์› ์„ ๋•Œ๊ฐ€ ๋– ์˜ค๋ฆ…๋‹ˆ๋‹ค. app.get()์ด๋‚˜ app.use() ๊ฐ™์€ ๋ฉ”์„œ๋“œ ํ•œ ์ค„๋กœ ๋ผ์šฐํŒ…๊ณผ ๋ฏธ๋“ค์›จ์–ด, ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ, ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง๊นŒ์ง€ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„๋˜๋Š” ๋ชจ์Šต์€ ์ •๋ง ์ธ์ƒ ๊นŠ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋А ์ˆœ๊ฐ„, โ€œ๋‚˜๋Š” ์ด๊ฑธ ๋งŒ๋“ค ์ค„ ์•„๋Š” ์‚ฌ๋žŒ์ผ๊นŒ, ์•„๋‹ˆ๋ฉด ๋‹จ์ˆœํžˆ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ผ๊นŒ?โ€๋ผ๋Š” ์งˆ๋ฌธ์ด ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค.

Express๋Š” ๋งค์šฐ ํŽธ๋ฆฌํ•œ ๋„๊ตฌ์ด์ง€๋งŒ, ๊ทธ๋งŒํผ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋Š” ๊ฐ์ถฐ์ ธ ์žˆ์–ด ์–ด๋–ค ์›๋ฆฌ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” ๊ทธ๋Ÿฐ ๊ฐˆ์ฆ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์€ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋˜๊ณ , ๋ฏธ๋“ค์›จ์–ด๋Š” ์™œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์ •์  ํŒŒ์ผ์˜ MIME ํƒ€์ž…์€ ์–ด๋–ป๊ฒŒ ์„ค์ •๋˜๋Š”์ง€. ์ด ๋ชจ๋“  ์งˆ๋ฌธ์— ๋Œ€ํ•ด ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ค์Šตํ•˜๋ฉฐ ๋‹ต์„ ์ฐพ์•„๊ฐ€๋Š” ๊ณผ์ •์ด ๋ฐ”๋กœ ์ด ๊ฐ•์˜์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

Express๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด, ๋‹จ์ง€ ์ต์Šคํ”„๋ ˆ์Šค๋ฅผ ์•„๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด, Fastify, Flask, Django, Spring Boot์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌ์กฐ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ๊ฐœ๋ฐœ์˜ ๋ณธ์งˆ์ ์ธ ๊ฐ๊ฐ์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ '์‚ฌ์šฉ๋ฒ•'์„ ์•„๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์„œ๋ฒ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์Šค์Šค๋กœ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์œผ๋กœ ์„ฑ์žฅํ•˜๋Š” ๊ณผ์ •, ์ง€๊ธˆ๋ถ€ํ„ฐ ํ•จ๊ป˜ ์‹œ์ž‘ํ•ด๋ณด์„ธ์š”!

์ด ๊ฐ•์˜์˜ ํŠน์ง•

๐Ÿ“ŒExpress.js์˜ ๋ชจ๋“  ํ•ต์‹ฌ ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ์—”์ง„ ํด๋ก ํ˜• ํ”„๋กœ์ ํŠธ ๊ธฐ๋ฐ˜ ๊ฐ•์˜

๐Ÿ“Œ์ถ”์ƒ์ ์ธ ๊ฐœ๋… ์—†์ด ์ฝ”๋“œ ๋ผ์ธ ๋‹จ์œ„๋กœ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋ฉฐ ์„ค๋ช…

๐Ÿ“Œ ์‹ค๋ฌด์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ ์ฒ˜๋ฆฌ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ๊นŒ์ง€ ์ƒ์„ธํ•˜๊ฒŒ ๊ตฌํ˜„

๐Ÿ“Œ๋ชจ๋“  ์ˆ˜์—… ์ž๋ฃŒ์™€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ œ๊ณต, ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด๋ฉฐ ํ•™์Šต ๊ฐ€๋Šฅ

๐Ÿ“Œ ๋‹จ์ˆœํžˆ ์“ฐ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ, ๋งŒ๋“ค ์ค„ ์•„๋Š” ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅ

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ด์š”

Node.js์™€ Express๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ ์ ์€ ์žˆ์ง€๋งŒ, ๋‚ด๋ถ€ ์›๋ฆฌ๊ฐ€ ๊ถ๊ธˆํ–ˆ๋˜ ๋ถ„

app.use, app.get, req, res ๊ฐ™์€ ๊ฐœ๋…๋“ค์„ ๋‹จ์ˆœ ์‚ฌ์šฉ์ด ์•„๋‹Œ ๊ตฌํ˜„์˜ ๊ด€์ ์—์„œ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ๋ถ„๋“ค๊ป˜ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

๋ผ์šฐํ„ฐ, ๋ฏธ๋“ค์›จ์–ด, ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ, ๋ฐ”๋”” ํŒŒ์„œ๊นŒ์ง€ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉฐ ์‹ค์ œ ์„œ๋ฒ„์˜ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ์ฒด๋“ํ•˜๊ณ  ์‹ถ์€ ๋ถ„์„ ์œ„ํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

๊ตฌ์กฐ์  ์‚ฌ๊ณ ๋ฅผ ๊ฐ–์ถ˜ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ๋ถ„

์š”์ฒญ โ†’ ๋ฏธ๋“ค์›จ์–ด ์ฒด์ธ โ†’ ๋ผ์šฐํ„ฐ โ†’ ์‘๋‹ต์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์ „์ฒด ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„์„ ๊ตฌ์กฐ์ ์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ๋ถ„๊ป˜ ์œ ์ตํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ๊ธฐ๋Šฅ์„ '์“ธ ์ค„ ์•„๋Š”' ๋‹จ๊ณ„์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์€ ๋ถ„

Express.js์˜ ๊ธฐ๋Šฅ์„ ์•”๊ธฐํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ง์ ‘ ๋งŒ๋“ ๋‹ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋…์„ ๊นŠ์ด ์ดํ•ดํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค๊ป˜ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ์™€์˜ ์—ฐ๊ฒฐ ๊ณ ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ถ„

Express.js๋ฅผ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ์ด๋ก ์€ Spring, Flask, Fastify, ASP.NET Core ๋“ฑ ๋‹ค๋ฅธ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ดํ•ด์—๋„ ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

ํฌํŠธํด๋ฆฌ์˜ค์™€ ์‹ค๋ฌด ๋Šฅ๋ ฅ ๋ชจ๋‘ ๊ฐ•ํ™”ํ•˜๊ณ  ์‹ถ์€ ์ปดํ“จํ„ฐ๊ณตํ•™ ์ „๊ณต์ž ๋ฐ ์ทจ์ค€์ƒ

์ง์ ‘ ๋งŒ๋“  Express.js ํด๋ก ์„ ํ†ตํ•ด ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ์ฑ„์šฐ๊ณ , ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹ค๋ฌด๊นŒ์ง€ ์•„์šฐ๋ฅด๋Š” ์„œ๋ฒ„ ์ง€์‹์„ ํƒ„ํƒ„ํ•˜๊ฒŒ ์Œ“๊ณ  ์‹ถ์€ ๋ถ„์—๊ฒŒ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ํ›„์—๋Š”

  • Express.js ์—†์ด๋„ ์›น ์„œ๋ฒ„์˜ ์ „ ๊ณผ์ •์„ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค๋ ฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • Node.js์—์„œ HTTP ์š”์ฒญ๋ถ€ํ„ฐ ์‘๋‹ต๊นŒ์ง€์˜ ํ๋ฆ„์„ ์ฝ”๋“œ ๋‹จ์œ„๋กœ ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋ผ์šฐํŒ…, ๋ฏธ๋“ค์›จ์–ด ์ฒด์ธ, ์š”์ฒญ ํŒŒ์‹ฑ, ์ •์  ํŒŒ์ผ ์ œ๊ณต ๋“ฑ ์‹ค๋ฌด ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์”ฉ ๊ตฌํ˜„ํ•ด๋ณด๋ฉฐ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์˜ ๊ทผ๋ณธ์„ ์ฒด๋“ํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•จ์œผ๋กœ์จ Fastify, NestJS, Django, Spring Boot ๋“ฑ ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์„ค๊ณ„ ์ฒ ํ•™๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.


  • ๋ณต์žกํ•œ ๊ธฐ๋Šฅ๋„ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ๋ชจ๋“ˆํ™”ํ•˜๊ณ , ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๋Š” ์—ญ๋Ÿ‰์ด ์ƒ๊น๋‹ˆ๋‹ค.

  • Express.js๋ฟ ์•„๋‹ˆ๋ผ, ์›น ์„œ๋ฒ„ ์—”์ง„์ด ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ์„ค๊ณ„ ์ˆ˜์ค€์—์„œ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๊ฐ•์˜ ๊ฒฐ๊ณผ๋ฌผ ์ž์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ํฌํŠธํด๋ฆฌ์˜ค๊ฐ€ ๋˜๋ฉฐ, ์ง€์›์„œ์— 'Express.js ํด๋ก  ํ”„๋กœ์ ํŠธ'๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ๋ช…์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ์š”.

createApplication ํ•จ์ˆ˜ ์„ค๊ณ„
app ๊ฐ์ฒด์˜ ์‹œ์ž‘์ ์„ ๊ตฌ์„ฑํ•˜๊ณ , ์„ค์ • ์ €์žฅ์†Œ์™€ ๋ผ์šฐํ„ฐ, ๋ฏธ๋“ค์›จ์–ด ๋“ฑ๋ก ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋Š” ํ•ต์‹ฌ ์ปจํŠธ๋กค๋Ÿฌ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ์จ ํ•˜๋‚˜์˜ ์•ฑ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ „์ฒด ์„œ๋ฒ„๋ฅผ ์ฃผ๋„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋“ค์›จ์–ด ์ฒด์ธ ๊ตฌํ˜„

next()๋ฅผ ํ™œ์šฉํ•œ ๋ฏธ๋“ค์›จ์–ด ์—ฐ์† ์‹คํ–‰ ํ๋ฆ„์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ , ๊ฐ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋ฉฐ ๊ทผ๋ณธ ๊ฐœ๋…์„ ์ฒด๋“ํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘์› ์ง„๋ฃŒ ํ๋ฆ„์— ๋น„์œ ํ•ด ์ฒด๊ณ„์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์  ํŒŒ์ผ ์„œ๋ฒ„ ๊ตฌํ˜„

fs.createReadStream()์„ ์‚ฌ์šฉํ•ด ํŒŒ์ผ์„ ์ŠคํŠธ๋ฆผ ๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•˜๊ณ , Content-Type์„ ์œ„ํ•œ MIME ํƒ€์ž…์„ ์ž๋™ ํŒ๋ณ„ํ•˜๋ฉฐ, ๊ฒฝ๋กœ ์กฐ์ž‘ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ณด์•ˆ ๋กœ์ง๊นŒ์ง€ ํฌํ•จํ•œ ์™„์ „ํ•œ ์ •์  ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

JSON, URL-Encoded ๋ณธ๋ฌธ ํŒŒ์„œ ๋งŒ๋“ค๊ธฐ

HTTP ์š”์ฒญ ๋ณธ๋ฌธ์„ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ˆ˜์‹ ํ•˜๊ณ , data, end ์ด๋ฒคํŠธ๋ฅผ ํ™œ์šฉํ•ด ์ ์ง„์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ˆ„์ ํ•œ ๋’ค, JSON ํŒŒ์‹ฑ ๋˜๋Š” URL ๋””์ฝ”๋”ฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ณธ๊ฒฉ์ ์ธ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํ„ฐ ์„ค๊ณ„ ๋ฐ ๋™์  ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ

GET /users/:id์™€ ๊ฐ™์€ URL ํŒจํ„ด์„ ์ง์ ‘ ๋งค์นญํ•˜๊ณ , ๋งค์นญ๋œ ๊ฐ’๋“ค์„ req.params์— ๋„ฃ๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋ฉฐ, ๋ผ์šฐํ„ฐ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ ํ•ธ๋“ค๋Ÿฌ ์‹คํ–‰ ํ๋ฆ„์„ ์™„์ „ํ•˜๊ฒŒ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฏธ๋“ค์›จ์–ด ๊ตฌํ˜„

function(err, req, res, next) ๊ตฌ์กฐ์˜ 4-์ธ์ž ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , try...catch๋กœ ๋™๊ธฐ ์˜ค๋ฅ˜๋ฅผ, Promise.reject()๋กœ ๋น„๋™๊ธฐ ์˜ค๋ฅ˜๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํฌ์ฐฉํ•˜์—ฌ ๊ณตํ†ต ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ํ๋ฆ„์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง ์ฒ˜๋ฆฌ

EJS ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์—ฐ๋™ํ•˜์—ฌ res.render() ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ , ์„œ๋ฒ„์—์„œ ๋™์ ์œผ๋กœ HTML์„ ์ƒ์„ฑํ•˜๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง ๊ณผ์ •์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒฝํ—˜ํ•ฉ๋‹ˆ๋‹ค.

express.Router() ๊ธฐ๋Šฅ ๊ตฌํ˜„

createRouter() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•˜์œ„ ๋ผ์šฐํ„ฐ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ๋ฉ”์ธ ์•ฑ์— ๊ณ„์ธต์ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ API ๊ตฌ์กฐ์—์„œ๋„ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ 

Singleton ํŒจํ„ด๊ณผ IIFE๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ „์—ญ ์ƒํƒœ ๊ณต์œ ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ , ์„ค์ •๊ฐ’๊ณผ ๋‚ด๋ถ€ ๋ชจ๋“ˆ์„ ์€๋‹‰ํ•˜๋ฉฐ, ๋ณด์•ˆ์„ฑ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฏธ๋“ค์›จ์–ด ํ†ตํ•ฉ๊ณผ ๊ตฌ์กฐ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ์‹ค๋ฌด ์ˆ˜์ค€์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ฐ–์ถ˜ ์—”์ง„์œผ๋กœ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

API ํ…Œ์ŠคํŠธ ์ž๋™ํ™”

http.request()๋ฅผ ์‚ฌ์šฉํ•ด ์‹ค์ œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์‘๋‹ต ๋ณธ๋ฌธ์„ ํŒŒ์‹ฑํ•˜๊ณ  ์ƒํƒœ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ์ž‘ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

ํ•™์Šต ์ž๋ฃŒ

  • ๋ชจ๋“  ์ˆ˜์—…์— ์‚ฌ์šฉ๋œ ์†Œ์Šค์ฝ”๋“œ, ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ, EJS ํ…œํ”Œ๋ฆฟ์„ ํฌํ•จํ•œ ์ž๋ฃŒ ์ œ๊ณต

  • ์‹ค์Šต๊ณผ ๋ณ‘ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ฐ„ ์™„์„ฑ ๋‹จ๊ณ„๋ณ„ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ์ œ๊ณต


์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • ๊ธฐ๋ณธ์ ์ธ JavaScript ๋ฌธ๋ฒ•์€ ์ต์ˆ™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ, ํ•จ์ˆ˜ ์ •์˜, ๋ฐฐ์—ด/๊ฐ์ฒด ์กฐ์ž‘, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ(Promise ๋“ฑ)์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Node.js ํ™˜๊ฒฝ ์„ค์ •๊ณผ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ(CommonJS ๋“ฑ)์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ดํ•ด๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰, require์™€ module.exports์˜ ์—ญํ•  ๋“ฑ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ˆ˜์›”ํ•ฉ๋‹ˆ๋‹ค.

  • Express.js๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด, ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ํ•ต์‹ฌ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” ๋‹จ์ˆœ ์‚ฌ์šฉ๋ฒ•์ด ์•„๋‹Œ, ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

  • ์ด ๊ฐ•์˜๋Š” ์™„์„ฑ๋œ ์ฝ”๋“œ๋‚˜ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌํ˜„ํ•ด๊ฐ€๋Š” ๊ณผ์ •์„ ์ค‘์‹ฌ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ์†์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉฐ ๊ตฌ์กฐ์™€ ์›๋ฆฌ๋ฅผ ์ตํžˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • '์ œ๋Œ€๋กœ ๋ฐฐ์šฐ๋Š” Express.js: Part1 ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹ฌํ™”๊นŒ์ง€ [๊ธฐ์ดˆํŽธ]' ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ณ  ์˜ค์‹œ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ•์˜์—์„œ๋Š” Express.js์˜ ๊ธฐ์ดˆ ๊ตฌ์กฐ์™€ ์‚ฌ์šฉ๋ฒ•์„ ๋จผ์ € ๋‹ค๋ฃจ๋ฉฐ, ๋ณธ ๊ฐ•์˜๋Š” ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์‹ฌํ™” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Express.js๋ฅผ ๋‹จ์ˆœํžˆ ์‚ฌ์šฉํ•ด๋ณธ ์ˆ˜์ค€์—์„œ ํ•œ ๋‹จ๊ณ„ ๋” ์„ฑ์žฅํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

  • ์„œ๋ฒ„์˜ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ์ง€๋ง์ƒ

  • ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌ์กฐ์  ๊ฐœ๋…์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉฐ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ํ•™์Šต์ž

  • ํฌํŠธํด๋ฆฌ์˜ค๋กœ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” ์˜๋ฏธ ์žˆ๋Š” ํด๋ก  ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ๊ณ  ์žˆ๋Š” ์ทจ์—… ์ค€๋น„์ƒ

  • Django, Flask, Spring Boot ๋“ฑ ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฒฝํ—˜์ด ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ์ค‘ Node.js ์„œ๋ฒ„ ๊ตฌ์กฐ๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„

  • ๋‹จ์ˆœํžˆ โ€˜์‚ฌ์šฉํ•  ์ค„ ์•„๋Š” ๊ฐœ๋ฐœ์žโ€™๊ฐ€ ์•„๋‹ˆ๋ผ โ€˜์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์žโ€™๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ๋ถ„

  • ์›น ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์˜ ํ๋ฆ„์„ ๋” ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

  • โ€˜ํ•จ์ˆ˜๋งŒ ์™ธ์›Œ์„œ ์“ฐ๋Š” ๊ฐœ๋ฐœโ€™์—์„œ ๋ฒ—์–ด๋‚˜ ์ง„์งœ ๋‚ด๊ฐ€ ๋งŒ๋“œ๋Š” ๋ฐฑ์—”๋“œ ๊ตฌ์กฐ๋ฅผ ๊ฒฝํ—˜ํ•ด๋ณด๊ณ  ์‹ถ์€ ์ž…๋ฌธ์ž

  • ์ปดํ“จํ„ฐ๊ณตํ•™์„ ์ „๊ณตํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ์›น ๊ฐœ๋ฐœ์— ๋„์ „ํ•˜๋ฉฐ ๊นŠ์ด ์žˆ๋Š” ๊ธฐ์ดˆ๋ฅผ ๋‹ค์ง€๊ณ  ์‹ถ์€ ์ „ํ™˜ ํฌ๋ง์ž

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹ค๋ฌด์—์„œ ๋” ๊นŠ์ด ์žˆ๊ฒŒ ํ™œ์šฉํ•ด๋ณด๊ณ  ์‹ถ์€ ํ”„๋ก ํŠธ ํ˜น์€ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ๊ธฐ์ดˆ JavaScript ๋ฌธ๋ฒ•

  • Node.js ์‚ฌ์šฉ ๊ฒฝํ—˜

  • Express.js ์‚ฌ์šฉ ๊ฒฝํ—˜ (์„ ํƒ์ )

  • ๋„คํŠธ์›Œํฌ ๋ฐ HTTP ๊ฐœ๋… (์„ ํƒ์ )

์•ˆ๋…•ํ•˜์„ธ์š”
nhcodingstudio์ž…๋‹ˆ๋‹ค.

1,265

๋ช…

์ˆ˜๊ฐ•์ƒ

65

๊ฐœ

์ˆ˜๊ฐ•ํ‰

28

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

16

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”, ์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค๋Š” ์นด๋„ค๊ธฐ ๋ฉœ๋ก , ์›Œ์‹ฑํ„ด, ํ† ๋ก ํ† , ์›Œํ„ฐ๋ฃจ ๋“ฑ ๋ถ๋ฏธ์˜ ์ฃผ์š” ๋Œ€ํ•™์—์„œ ์ปดํ“จํ„ฐ๊ณตํ•™์„ ์ „๊ณตํ•˜๊ณ , Google, Microsoft, Meta ๋“ฑ ๊ธ€๋กœ๋ฒŒ IT ๊ธฐ์—…์—์„œ ์‹ค๋ฌด ๊ฒฝํ—˜์„ ์Œ“์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•จ๊ป˜ ๋งŒ๋“  ๊ต์œก ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ๋ฏธ๊ตญ๊ณผ ์บ๋‚˜๋‹ค์˜ ์ปดํ“จํ„ฐ๊ณตํ•™ ์ „๊ณต์ž๋“ค๋ผ๋ฆฌ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๋ฉฐ ์„ฑ์žฅํ•˜๊ณ ์ž ๋งŒ๋“  ์Šคํ„ฐ๋”” ๋ชจ์ž„์—์„œ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋Œ€ํ•™, ๋‹ค๋ฅธ ์‹œ๊ฐ„๋Œ€์— ์žˆ์—ˆ์ง€๋งŒ ํ•จ๊ป˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์„œ๋กœ์—๊ฒŒ ๋ฐฐ์šด ๊ทธ ์‹œ๊ฐ„์€ ๋งค์šฐ ํŠน๋ณ„ํ–ˆ๊ณ , ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

โ€œ์šฐ๋ฆฌ๊ฐ€ ๊ณต๋ถ€ํ•˜๋˜ ์ด ๋ฐฉ์‹, ๊ทธ๋Œ€๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ๋„ ์ „ํ•˜๋ฉด ์–ด๋–จ๊นŒ?โ€

๊ทธ ๋ฌผ์Œ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค์˜ ์ถœ๋ฐœ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” ์•ฝ 30๋ช…์˜ ํ˜„์ง ๊ฐœ๋ฐœ์ž์™€ ์ปดํ“จํ„ฐ๊ณตํ•™ ์ „๊ณต ๋Œ€ํ•™์ƒ๋“ค์ด ๊ฐ์ž์˜ ์ „๋ฌธ ๋ถ„์•ผ๋ฅผ ๋งก์•„, ์ž…๋ฌธ๋ถ€ํ„ฐ ์‹ค์ „๊นŒ์ง€ ์•„์šฐ๋ฅด๋Š” ์ปค๋ฆฌํ˜๋Ÿผ์„ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ๊ฐ•์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์ง€์‹ ์ „๋‹ฌ์„ ๋„˜์–ด, ์ง„์งœ ๊ฐœ๋ฐœ์ž์˜ ์‹œ์„ ์œผ๋กœ ๋ฐฐ์šฐ๊ณ  ํ•จ๊ป˜ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โ€œ์ง„์งœ ๊ฐœ๋ฐœ์ž๋Š”, ์ง„์งœ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.โ€

์ €ํฌ๋Š” ์›น ๊ฐœ๋ฐœ์˜ ์ „ ๊ณผ์ •์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฒด๊ณ„์ ์œผ๋กœ ๋‹ค๋ฃจ๋˜, ์ด๋ก ์— ๋จธ๋ฌด๋ฅด์ง€ ์•Š๊ณ  ์‹ค์Šต๊ณผ ์‹ค์ „ ์ค‘์‹ฌ์˜ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ์‹ค๋ ฅ์„ ํ‚ค์›Œ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์ˆ˜๊ฐ•์ƒ ํ•œ ์‚ฌ๋žŒ, ํ•œ ์‚ฌ๋žŒ์˜ ์„ฑ์žฅ์„ ํ•จ๊ป˜ ๊ณ ๋ฏผํ•˜๊ณ  ์ด๋Œ์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์ฒ ํ•™์ž…๋‹ˆ๋‹ค.

๐ŸŽฏ ์šฐ๋ฆฌ์˜ ์ฒ ํ•™์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.
"์ง„์ •ํ•œ ๋ฐฐ์›€์€ ์‹ค์ฒœ์—์„œ ์˜ค๊ณ , ์„ฑ์žฅ์€ ํ•จ๊ป˜ํ•  ๋•Œ ์™„์„ฑ๋œ๋‹ค."

๊ฐœ๋ฐœ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ์ž…๋ฌธ์ž๋ถ€ํ„ฐ, ์‹ค๋ฌด ๋Šฅ๋ ฅ์„ ํ‚ค์šฐ๊ณ  ์‹ถ์€ ์ทจ์—… ์ค€๋น„์ƒ, ์ง„๋กœ๋ฅผ ํƒ์ƒ‰ ์ค‘์ธ ์ฒญ์†Œ๋…„๊นŒ์ง€.
์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค๋Š” ๋ชจ๋‘์˜ ์ถœ๋ฐœ์ ์ด์ž, ํ•จ๊ป˜ ๊ฑท๋Š” ๋“ ๋“ ํ•œ ๋™๋ฐ˜์ž๊ฐ€ ๋˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ, ํ˜ผ์ž ๊ณ ๋ฏผํ•˜์ง€ ๋งˆ์„ธ์š”.
์šฐ๋ฆฌ๋™๋„ค์ฝ”๋”ฉ ์ŠคํŠœ๋””์˜ค๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ์„ฑ์žฅ์„ ํ•จ๊ป˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


Welcome to Neighborhood Coding Studio!

Neighborhood Coding Studio was founded by a team of developers who studied computer science at top North American universities such as Carnegie Mellon, the University of Washington, the University of Toronto, and the University of Waterloo, and went on to gain hands-on experience at global tech companies like Google, Microsoft, and Meta.

It all began as a study group formed by computer science students across the U.S. and Canada, created to grow together by sharing knowledge, solving problems, and learning from one another.
Though we were attending different schools in different time zones, the experience was so meaningful that it led us to one simple thought:

โ€œWhat if we shared this way of learning with others?โ€

That thought became the foundation of Neighborhood Coding Studio.

Today, we are a team of around 30 active developers and computer science students, each taking responsibility for their area of expertiseโ€”designing and delivering a curriculum that spans from foundational knowledge to real-world development.
Weโ€™re not just here to teachโ€”weโ€™re here to help you see through the lens of real developers and grow together.

โ€œTo become a real developer, you must learn from real developers.โ€

Our courses take you through the entire web development journeyโ€”from start to finishโ€”focused on hands-on practice, real-world projects, and practical feedback.
We care deeply about each learnerโ€™s growth and are committed to supporting your path every step of the way.

๐ŸŽฏ Our philosophy is simple but powerful:
"True learning comes from doing, and true growth happens together."

Whether you're just getting started, preparing for your first job, or exploring your future in tech,
Neighborhood Coding Studio is here to be your launchpadโ€”and your trusted companion on the journey.

You donโ€™t have to do it alone.
Let Neighborhood Coding Studio walk with you toward your future in development.

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

53๊ฐœ โˆ™ (5์‹œ๊ฐ„ 30๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

3๊ฐœ

4.0

3๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • GoHome๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    GoHome

    ์ˆ˜๊ฐ•ํ‰ 20

    โˆ™

    ํ‰๊ท  ํ‰์  4.8

    3

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    • nhcodingstudio
      ์ง€์‹๊ณต์œ ์ž

      ์•ˆ๋…•ํ•˜์„ธ์š”, GoHome ๋‹˜. ์šฐ์„  'Node.js ์„œ๋ฒ„ ์—”์ง„ ๋งŒ๋“ค๊ธฐ' ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•ด ์ฃผ์‹œ๊ณ  ์†”์งํ•œ ํ›„๊ธฐ๋ฅผ ๋‚จ๊ฒจ์ฃผ์…”์„œ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ณด๋‚ด์ฃผ์‹  ๋ณ„์ ๊ณผ ์†Œ์ค‘ํ•œ ์˜๊ฒฌ์„ ํ™•์ธํ•˜๋ฉฐ, ๊ธฐ๋Œ€ํ•˜์…จ๋˜ ๊ฒƒ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฐ•์˜ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ด ๋“œ๋ฆฌ์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์•„ ๋ฌด๊ฑฐ์šด ์ฑ…์ž„๊ฐ์„ ๋А๋ผ๋ฉฐ ์ง„์‹ฌ์œผ๋กœ ์ฃ„์†กํ•˜๋‹ค๋Š” ๋ง์”€์„ ์ „ํ•ฉ๋‹ˆ๋‹ค. Express.js ํด๋ก ์„ ํ†ตํ•ด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์„ค๊ณ„๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ณผ์ •์ด ์›Œ๋‚™ ๊นŠ์ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋‹ค ๋ณด๋‹ˆ, ํ•™์Šตํ•˜์‹œ๋Š” ๊ณผ์ •์—์„œ ์„ค๋ช…์ด ๋ถ€์กฑํ–ˆ๊ฑฐ๋‚˜ ์–ด๋ ต๊ฒŒ ๋А๊ปด์ง€์…จ๋˜ ๋ถ€๋ถ„์ด ์žˆ์—ˆ์„์ง€ ์šฐ๋ ค๋˜๋Š” ๋งˆ์Œ์ž…๋‹ˆ๋‹ค. ์ˆ˜๊ฐ•ํ•˜์‹œ๋ฉด์„œ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜์ง€ ์•Š์•˜๋˜ ๊ฐœ๋…์ด๋‚˜, ๊ฐ•์˜ ๊ตฌ์„ฑ์—์„œ ์•„์‰ฌ์› ๋˜ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํŽธํ•˜๊ฒŒ ๋ง์”€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. GoHome ๋‹˜๊ป˜์„œ ์ „ํ•ด์ฃผ์‹œ๋Š” ๊ตฌ์ฒด์ ์ธ ํ”ผ๋“œ๋ฐฑ์€ ์ œ๊ฐ€ ๊ฐ•์˜๋ฅผ ๋ณด์™„ํ•˜๊ณ  ๋” ๋‚˜์€ ์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๊ฐ€์žฅ ํฐ ๋ฐ‘๊ฑฐ๋ฆ„์ด ๋ฉ๋‹ˆ๋‹ค. ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์€ ์„ฑ์‹คํžˆ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ดํ›„์—๋Š” ๊ผญ ๋” ์ข‹์€ ์ฝ˜ํ…์ธ ๋กœ ๋‹ค์‹œ ๋ต ์ˆ˜ ์žˆ๋„๋ก ์ตœ์„ ์„ ๋‹คํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•™์Šต ์ค‘ ์ƒ๊ธฐ๋Š” ์•„์ฃผ ์‚ฌ์†Œํ•œ ์งˆ๋ฌธ์ด๋ผ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์ด๋‚˜ ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์„ ํ†ตํ•ด ๋ง์”€ํ•ด ์ฃผ์‹œ๋ฉด ์„ฑ์‹ฌ์„ฑ์˜๊ป ๋‹ต๋ณ€๋“œ๋ฆฌ๋ฉฐ, GoHome ๋‹˜์˜ ํ•™์Šต์— ์‹ค์งˆ์ ์ธ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๋๊นŒ์ง€ ํ•จ๊ป˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ท€ํ•œ ์‹œ๊ฐ„ ๋‚ด์–ด ์˜๊ฒฌ ์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ, ๋” ๋ฐœ์ „ํ•˜๋Š” ๋ชจ์Šต ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • ์†์ •๋งŒ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ์†์ •๋งŒ

    ์ˆ˜๊ฐ•ํ‰ 53

    โˆ™

    ํ‰๊ท  ํ‰์  4.7

    4

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    • nhcodingstudio
      ์ง€์‹๊ณต์œ ์ž

      ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ์†์ •๋งŒ๋‹˜, ์†Œ์ค‘ํ•œ ์ˆ˜๊ฐ•ํ‰๊ณผ ์ข‹์€ ํ‰๊ฐ€ ๋‚จ๊ฒจ์ฃผ์…”์„œ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ™ ์—ฌ๋Ÿฌ๋ถ„์˜ ์‘์› ๋•๋ถ„์— ๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•˜๋Š” ํฐ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด Express.js์˜ ๊ตฌ์กฐ์™€ ์„œ๋ฒ„ ์—”์ง„ ์„ค๊ณ„ ์›๋ฆฌ๋ฅผ ๊นŠ์ด ์ดํ•ดํ•˜์…จ๋‹ค๋ฉด, ์•ž์œผ๋กœ๋Š” ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์„œ๋ฒ„ ์šด์˜ ๋“ฑ ๋”์šฑ ์‹ค๋ฌด์ ์ธ ์ฃผ์ œ์™€ ํ™•์žฅ๋œ ์ปจํ…์ธ ๋กœ ์ฐพ์•„๋ต ์ˆ˜ ์žˆ๋„๋ก ๊ณ„์† ์ค€๋น„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿš€ ๋˜ํ•œ ๊ฐ์‚ฌ์™€ ์‘์›์˜ ๋งˆ์Œ์„ ์ „ํ•˜๋ฉฐ, ์–ธ์ œ๋“  ๊ถ๊ธˆํ•œ ์ ์ด ์ƒ๊ธฐ์‹œ๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ ๊ด€๋ จํ•ด์„œ ๋„์›€์ด ํ•„์š”ํ•˜์‹ค ๋•Œ๋Š” ์•„๋ž˜ ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์„ ์ž์œ ๋กญ๊ฒŒ ์ด์šฉํ•ด ์ฃผ์„ธ์š”. ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค๊ณผ๋„ ์†Œํ†ต ๊ฐ€๋Šฅํ•˜๊ณ , ์ €๋„ ์ž์ฃผ ๋“ค๋Ÿฌ์„œ ๊ณ ๋ฏผ์„ ๋‚˜๋ˆ„๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๐Ÿ“ฎ ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ: [https://open.kakao.com/o/gC10Fnoh] ๊ฐœ๋ฐœ ์—ฌ์ •์„ ์–ธ์ œ๋‚˜ ์ง„์‹ฌ์œผ๋กœ ์‘์›๋“œ๋ฆฌ๋ฉฐ, ๋‹ค์Œ ๊ฐ•์˜์—์„œ๋„ ๊ผญ ๋‹ค์‹œ ๋ต ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค! ๐ŸŒŸ

  • jeony0535๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    jeony0535

    ์ˆ˜๊ฐ•ํ‰ 2

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    70% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ทจ์—… ์ค€๋น„๋ฅผ ํ•˜๋ฉฐ ๋‚˜๋งŒ์˜ ์ฐจ๋ณ„ํ™”๋œ ํฌํŠธํด๋ฆฌ์˜ค๊ฐ€ ๊ณ ๋ฏผ์ด์—ˆ๋Š”๋ฐ, ์ด ๊ฐ•์˜๊ฐ€ ๊ทธ ํ•ด๋‹ต์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Express ์—”์ง„์„ ์ง์ ‘ ํด๋ก ํ•ด๋ณด๋Š” ๊ฒฝํ—˜์€ ๋ฉด์ ‘์—์„œ๋„ ๊ธฐ์ˆ ์  ๊นŠ์ด๋ฅผ ์ฆ๋ช…ํ•˜๊ธฐ์— ๋”ํ•  ๋‚˜์œ„ ์—†์ด ์ข‹์€ ์ฃผ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๊ทธ์น˜์ง€ ์•Š๊ณ  MIME ํƒ€์ž… ํŒ๋ณ„, ๊ฒฝ๋กœ ์กฐ์ž‘ ๋ฐฉ์ง€ ๊ฐ™์€ ๋ณด์•ˆ์ ์ธ ๊ณ ๋ ค ์‚ฌํ•ญ๋ถ€ํ„ฐ ๋™๊ธฐ/๋น„๋™๊ธฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๊นŒ์ง€ ๋‹ค๋ฃจ๋Š” ์ ์ด ๋งค์šฐ ์‹ค๋ฌด์ ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ Singleton ํŒจํ„ด๊ณผ IIFE๋ฅผ ํ™œ์šฉํ•ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ํŒŒํŠธ์—์„œ๋Š” ์ฝ”๋“œ์˜ ํ’ˆ์งˆ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์— ๋Œ€ํ•ด ๊นŠ์ด ๊ณ ๋ฏผํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ดˆ ๊ฐ•์˜์ธ Part 1์„ ๋“ฃ๊ณ  ์˜ค์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ๋ฌด๋ฆŽ์„ ํƒ ์น˜๋ฉฐ ๋“ค์„ ๋‚ด์šฉ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. '์ œ๋Œ€๋กœ' ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ฐฑ์—”๋“œ ์ง€๋ง์ƒ๋“ค์—๊ฒŒ ๊ฐ•๋ ฅํžˆ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

    nhcodingstudio๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

    ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

    ๋น„์Šทํ•œ ๊ฐ•์˜

    ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

    ์ง€์‹๊ณต์œ ์ž์˜ ๊นœ์งํ• ์ธ ์ค‘ (6์ผ ๋‚จ์Œ)

    ์›” โ‚ฉ77,239

    5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

    23%

    โ‚ฉ23,100

    โ‚ฉ386,194