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()๋ฅผ ํฉํ ๊ธฐ๋ฅapp.listen(3000):
const server = http.createServer(app)๊ณผ server.listen(3000)์ ํฉํ ๊ธฐ๋ฅapp.set():
app.set('view engine', 'ejs') ์ด ์ฝ๋๋ ๋์ ํ
ํ๋ฆฟ์ ์ฌ์ฉํด์ผ ํ ๋ ์ด๋ฅผ ์ค์ํ๊ฒ ํ๊ธฐ ์ํด ํน๋ณํ ํจ์๋ค์ ๊ฐ์ง ์์ง์ ์ฐ๋ฆฌ๊ฐ ๋ฑ๋กํด์ ์ต์คํ๋ ์ค ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด์์ ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ํจ.๋ผ์ฐํ ์ 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(์ ์ ): express.Router๋ ๋ฏธ๋ค์จ์ด์์ ์ฒ๋ฆฌ๋์ง ์๊ณ ํ์ผ ์์คํ ์ผ๋ก ์ง์ ๊ฐ๋ ๊ฒ
์ ์ ์ผ๋ก css๋ js, ์ด๋ฏธ์งํ์ผ ๋ฑ์ importํ ๋๋
const path = require('path');
app.use(express.static(path.join(rootDir, 'public')))
์ด๋ฐ ์์ผ๋ก ์๋์ผ๋ก ์ public ํด๋๊น์ง๋ ๊ฐ๊ฒ ๋ง๋ค์ด์ค ์ ์์. ๊ทธ๋ฌ๋ฏ๋ก html์์์ importํ ๋์ ๋๋จธ์ง ๊ฒฝ๋ก์ public๊น์ง๋ ํฌํจ๋์ด์์ง ์์์ผ ํจ.