Dev.log/Node.js

[Node.js ๊ต๊ณผ์„œ] #18. ์ต์Šคํ”„๋ ˆ์Šค ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ - Express-generator ๋น ๋ฅด๊ฒŒ ์„ค์น˜ํ•˜๊ธฐ

๊ธธ๊ฑฐ๋ฆฌ์™€ํ”Œ 2021. 7. 3. 01:06

Express-generator ๋น ๋ฅด๊ฒŒ ์„ค์น˜ํ•˜๊ธฐ

์ต์Šคํ”„๋ ˆ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ต์Šคํ”„๋ ˆ์Šค ์™ธ์—๋„ ๋งŽ์€ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ž…๋ฌธ์ž ์ž…์žฅ์—์„œ๋Š” ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์•„์„œ ์„ค์น˜ํ•˜๊ธฐ ์กฐ๊ธˆ ์–ด๋ ต๋‹ค. ๋‹คํ–‰ํžˆ ํ”„๋ ˆ์ž„์›Œํฌ์— ํ•„์š”ํ•œ package.json์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๊ธฐ๋ณธ ํด๋” ๊ตฌ์กฐ๊นŒ์ง€ ์žก์•„์ฃผ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋‹ค. ๋ฐ”๋กœ Express-generator์ด๋‹ค. express-generator๋Š” ์ฝ˜์†” ๋ช…๋ น์–ด์ด๋ฏ€๋กœ npm ์ „์—ญ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

1. express-generator ํŒจํ‚ค์ง€ ์ „์—ญ ์„ค์น˜ํ•˜๊ธฐ

2. express ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์ƒˆ ์ต์Šคํ”„๋ ˆ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ƒˆ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ํด๋”๋กœ ์ด๋™ํ•ด์„œ express <ํ”„๋กœ์ ํŠธ ์ด๋ฆ„>์„ ์ž…๋ ฅํ•œ๋‹ค.

 

 

โ˜‘ Note --view=pug๋ž€?

  • Express-generator๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Jade๋ฅผ ํ…œํ”Œ๋ฆฟ ์—”์ง„์œผ๋กœ ์„ค์น˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ Jade๋Š” Pug๋กœ ๊ฐœ๋ช…ํ•œ ์ง€ ์˜ค๋ž˜๋˜์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜› ๋ฒ„์ „์ธ Jade ๋Œ€์‹  ์ตœ์‹  ๋ฒ„์ „์ธ Pug๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ express-generator์— ์˜ต์…˜์„ ์ฃผ์—ˆ๋‹ค.
  • Pug ๋Œ€์‹  EJS๋ฅผ ํ…œํ”Œ๋ฆฟ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด --view=ejs๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

์ด์ œ learn-express๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋‹ค. ํด๋”์— ๋“ค์–ด๊ฐ€์„œ npm ๋ชจ๋“ˆ๋“ค์„ ์„ค์น˜ํ•œ๋‹ค. ์ฝ˜์†”์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์–ด ์‚ฌ์ด์— &&๋ฅผ ๋ถ™์ด๋ฉด ๋‘ ๊ฐ€์ง€ ๋ช…๋ น์–ด๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

 

์ฑ…์—์„œ๋Š” &&๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋‚˜๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. ์ฐพ์•„๋ณด๋‹ˆ -and๋ฅผ ์‚ฌ์ด์— ๋‘๋ฉด ๋œ๋‹ค๊ณ  ํ•ด์„œ ํ•ด๋ดค๋‹ค.

 

 

์ด๊ฒƒ๋„ ์•ˆ ๋œ๋‹ค. ๋” ์ฐพ์•„๋ณด๋‹ˆ ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋“œ๋””์–ด ๋๋‹ค.

 

 

ํด๋” ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

  • app.js : ํ•ต์‹ฌ์ ์ธ ์„œ๋ฒ„ ์—ญํ• ์„ ํ•œ๋‹ค.
  • bin ํด๋” : bin ํด๋” ๋‚ด www ํŒŒ์ผ์€ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค.
  • public ํด๋” : ์™ธ๋ถ€(๋ธŒ๋ผ์šฐ์ € ๋“ฑ์˜ ํด๋ผ์ด์–ธํŠธ)์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ๋“ค์„ ๋ชจ์•„๋‘” ๊ณณ์ด๋‹ค. ์ด๋ฏธ์ง€, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, CSS ํŒŒ์ผ๋“ค์ด ๋“ค์–ด ์žˆ๋‹ค.
  • routes ํด๋” : ์ฃผ์†Œ๋ณ„ ๋ผ์šฐํ„ฐ๋“ค์„ ๋ชจ์•„๋‘” ๊ณณ์ด๋‹ค.
  • views ํด๋” : ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ๋ชจ์•„๋‘” ๊ณณ์ด๋‹ค. 

 

์•ž์œผ๋กœ ์„œ๋ฒ„์˜ ๋กœ์ง์€ ๋ชจ๋‘ routes ํด๋” ์•ˆ์˜ ํŒŒ์ผ์— ์ž‘์„ฑํ•  ๊ฒƒ์ด๊ณ , ํ™”๋ฉด ๋ถ€๋ถ„์€ views ํด๋” ์•ˆ์— ์ž‘์„ฑํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์€ models ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ๊ทธ ์•ˆ์— ์ž‘์„ฑํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

3. express ์‹คํ–‰ํ•˜๊ธฐ

package.json์˜ scripts์— start ์†์„ฑ์ด ์žˆ๊ณ , ์†์„ฑ๊ฐ’์œผ๋กœ node ./bin/www๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค.

 

 

๋”ฐ๋ผ์„œ npm run start ๋ช…๋ น์–ด๋กœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ start ๋ช…๋ น์–ด๋Š” ํŠน๋ณ„ํ•˜๋ฏ€๋กœ ๊ทธ๋ƒฅ npm start๋งŒ์œผ๋กœ๋„ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

express ์‹คํ–‰ ํ›„ localhost:3000์œผ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ

 

์ฝ˜์†”์—๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์— ๊ด€ํ•œ ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋œ๋‹ค.

 

 

localhost:3000/users์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ฝ˜์†”์— GET /users ์š”์ฒญ์ด ๊ธฐ๋ก๋œ๋‹ค.