[Node.js ๊ต๊ณผ์] #18. ์ต์คํ๋ ์ค ์น ์๋ฒ ๋ง๋ค๊ธฐ - Express-generator ๋น ๋ฅด๊ฒ ์ค์นํ๊ธฐ
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๋ง์ผ๋ก๋ ์๋ฒ๋ฅผ ์คํํ ์ ์๋ค.
์ฝ์์๋ ์ถ๊ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ๊ดํ ์ ๋ณด๊ฐ ๊ธฐ๋ก๋๋ค.
localhost:3000/users์ ์ ์ํ ์ ์๋ค.