express.js

์คŒ์ธยท2024๋…„ 2์›” 5์ผ

๋ฐฑ์—”๋“œ

๋ชฉ๋ก ๋ณด๊ธฐ
5/12

๐Ÿ“ express.js๋ž€?

Express.js, ๋˜๋Š” ๊ฐ„๋‹จํžˆ ์ต์Šคํ”„๋ ˆ์Šค(Express)๋Š” Node.js๋ฅผ ์œ„ํ•œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•˜๋‚˜๋กœ, MIT ํ—ˆ๊ฐ€์„œ๋กœ ๋ผ์ด์„ ์Šค๋˜๋Š” ์ž์œ -์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์ถœ์‹œ๋˜์—ˆ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, API ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค.Node.js์˜ ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€ ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ถˆ๋ฆฌ๊ณ  ์žˆ๋‹ค.
-์œ„ํ‚ค๋ฐฑ๊ณผ-

์š”์ฒญ๊ณผ ์‘๋‹ต ์‚ฌ์ด์— ๋‹จ์ผ ์š”์ฒญ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ณด์œ ํ•˜๋Š” ๋Œ€์‹  ์š”์ฒญ์ด ํ†ต๊ณผํ•  ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋“ค์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ด ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋“ค์„ ๋ฏธ๋“ค์›จ์–ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ express.js์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ด๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ • ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋ฏธ๋“ค์›จ์–ด๋“ค์€ ์จ๋“œํŒŒํ‹ฐ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด express.js์— ์‰ฝ๊ฒŒ ์žฅ์ฐฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.


๋ฏธ๋“ค์›จ์–ด์˜ ์˜ˆ์‹œ

app.use((req, res, next) => {
  next();
});

์ด๋Ÿฌ๋ฉด next();๋ฅผ ํ†ตํ•ด ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด๋กœ ์ด๋™ํ•œ๋‹ค.
ํ•œ ๋ฏธ๋“ค์›จ์–ด์—์„œ next() ํ˜น์€ res() ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•œ๋‹ค.


express์—๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋“ค์ด ์žˆ์–ด์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

res.send():

  • res.setHeader()์™€ res.write()๋ฅผ ํ•ฉํ•œ ๊ธฐ๋Šฅ
  • ๋งŒ์•ฝ text๋ฅผ ์ž…๋ ฅํ•˜๋ฉด headers์˜ content-type์ด ์ž๋™์œผ๋กœ text/html๋กœ ๋จ.

app.listen(3000):

  • const server = http.createServer(app)๊ณผ server.listen(3000)์„ ํ•ฉํ•œ ๊ธฐ๋Šฅ
  • express ๊นƒํ—ˆ๋ธŒ ๋“ค์–ด๊ฐ€์„œ ์ฝ”๋“œ ๋ณด๋ฉด ํ•˜๋‚˜์˜ ํ•จ์ˆ˜ ์•ˆ์— ์œ„์˜ ๋‘ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์Œ.

app.set():

  • global configuration value๋กœ ์ต์Šคํ”„๋ ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ๊ฐ’ ์„ค์ •
  • app.set('view engine', 'ejs') ์ด ์ฝ”๋“œ๋Š” ๋™์  ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ ์ด๋ฅผ ์‹ค์‹œํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜๋“ค์„ ๊ฐ€์ง„ ์—”์ง„์„ ์šฐ๋ฆฌ๊ฐ€ ๋“ฑ๋กํ•ด์„œ ์ต์Šคํ”„๋ ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ.

url์— ๊ณตํ†ต ๊ฒฝ๋กœ๊ฐ€ ์žˆ์„ ๋•Œ

๋ผ์šฐํŒ…์„ express.Router()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋‚˜์˜ ์•„์›ƒ์†Œ์‹ฑ๋œ ํŒŒ์ผ์—์„œ ๋‹ด๋‹นํ•  ๋•Œ, url๋“ค ๊ฐ„์— ๊ณตํ†ต ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๋ฉด(ex. localhost:3000/admin/add-product, localhost:3000/admin/home) ํŒŒ์ผ์—์„œ ๋ผ์šฐํŒ…ํ•  ๋•Œ๋Š” ์ € ๊ณตํ†ต๋œ ๊ฒฝ๋กœ๋ฅผ ์ƒ๋žตํ•˜๊ณ  indexํŒŒ์ผ app.js์—์„œ

const adminRoutes = requre('./routes/admin');

app.use('/admin', adminRoutes);

์ด๋Ÿฐ ์‹์œผ๋กœ ๊ณตํ†ต๋œ ๊ฒฝ๋กœ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์จ์ฃผ๋ฉด ๋œ๋‹ค.


static(์ •์ )

static(์ •์ ): express.Router๋‚˜ ๋ฏธ๋“ค์›จ์–ด์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์ง์ ‘ ๊ฐ€๋Š” ๊ฒƒ

์ •์ ์œผ๋กœ css๋‚˜ js, ์ด๋ฏธ์ง€ํŒŒ์ผ ๋“ฑ์„ importํ•  ๋•Œ๋Š”

const path = require('path');

app.use(express.static(path.join(rootDir, 'public')))

์ด๋Ÿฐ ์‹์œผ๋กœ ์ž๋™์œผ๋กœ ์ € public ํด๋”๊นŒ์ง€๋Š” ๊ฐ€๊ฒŒ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ์Œ. ๊ทธ๋Ÿฌ๋ฏ€๋กœ html์—์„œ์˜ importํ•  ๋•Œ์˜ ๋‚˜๋จธ์ง€ ๊ฒฝ๋กœ์— public๊นŒ์ง€๋Š” ํฌํ•จ๋˜์–ด์žˆ์ง€ ์•Š์•„์•ผ ํ•จ.

profile
์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ๋ณต์Šต ๋ธ”๋กœ๊ทธ

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