2009๋ Ryan Dahl์ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ Nodejs๊ฐ ๊ฐ๋ฐ๋๋ฉด์ ๊ธฐ์กด์ Web browser๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ์ธ์ด์ธ JavaScript ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ๋์๋ค. ๊ทธ ๊ฒฐ๊ณผ Nodejs๋ ์ ํ์ ์ธ ์ธ๊ธฐ๋ฅผ ๋๋ฉฐ ์ ๋ง์ ๊ฐ๋ฐ์๋ค์๊ฒ ์ง๊ธ๊น์ง๋ ์ฌ๋๋ฐ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ํํธ์จ์ด๋ก ์๋ฆฌ์ก๊ฒ ๋์๋ค.
but... ๊ฑฐ๊ธฐ์ ์ฝ๊ฒ ๋ง์กฑํ ๊ฐ๋ฐ์๋ค์ด ์๋๋ผ๋ ๊ฒ์ ์ฐ๋ฆฌ ๋ชจ๋๋ ์ ์๊ณ ์๋ค.
ํญ์ ๋ณต์กํ๊ณ ๋ฐฉ๋ํ ๊ฒ๋ณด๋ค ์ฝ๊ณ ๊ฐ๋จํ ๊ฒ์ ์ข์ํ๋ ์ด ๋๋จํ ์ฌ๋๋ค์ ์ด๋ด ๋ถํธํ ์ ์ ์ฐพ๊ฒ ๋์๋๋ฐ ๊ทธ๊ฒ์ nodejs๊ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ฆ, ์๋ฒ๋ฅผ ๊ตฌํํจ์ ์์ด์ ๊ณ ๋ คํด์ผํ ์ฌํญ (HTTP request, ์ฟ ํค ํ์ฑ, ์ธ์ ๊ด๋ฆฌ, ๋ผ์ฐํ ๊ตฌ์ฑ ๋ฑ๋ฑ...) ์ด ๋๋ฌด ๋ง๋ค๋ ๊ฒ์์ ๋น๋กฏ๋ ํฌ๋ฐํ๊ณ ์ธ๋ จ๋์ง ๋ชปํจ์ด์๋ค.
์ด ๋ฐฉ๋ํ ์์ ์ฝ๋์ ๋ณต์กํ ์๋์๋ฆฌ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๊ฐ๋ฐ์๋ค์ ๊ถ๋ฆฌํ๊ธฐ ์์ํ๊ณ .. ๊ทธ ๊ฒฐ๊ณผ ์๋ฒฝํ Nodejs ์์์ ๋์ํ๋ ์น ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค์ด๋ด๊ฒ ๋์๋๋ฐ, ๊ทธ๊ฒ์ด ๋ฐ๋ก "Express" ์ด๋ค.
Express๋ ํ๋ ์์ํฌ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋ ์์ํฌ๋ ๋ฌด์์ผ๊น?
์น ์๋ฒ๋ฅผ ์ ์ํจ์ ์์ด์ ํญ์ํด์ผํ์ง๋ง ๊ท์ฐฎ์ ๋ถ๋ถ๋ค์ด ๋ถ๋ช ์กด์ฌํ๋ค. ๊ฐ๋ น, URL ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค๋์ง, ์ ์ ์ธ ํ์ผ์ ์ ๊ณตํ๋ ๊ฒ, ๋ก๊ทธ์ธ ๊ธฐ๋ฅ, ๋ณด์ ๋ฑ์ด๋ค. ์ด๋ฌํ ๊ฒ๋ค์ ๋ถ๋ช ํ์์ ์ธ ๋ด์ฉ์ด์ง๋ง ๊ณตํต์ ์ธ ๋ด์ฉ์ด๋ฉฐ ๋งค๋ฒ ๋ฐ๋ณต๋๋ ๋ด์ฉ์ด๋ค.
Framework๋ ๋๋๊ฒ๋ ์ด๋ ๊ฒ ๊ท์ฐฎ๊ณ ๋ณต์กํ ์ผ์ ๋ฏธ๋ฆฌ ๊ธฐ๋ฅ์ ์ผ๋ก ๋ง๋ จํด์ฃผ๋ tool์ด๋ค. ํ ๋ง๋๋ก ์ฐ๋ฆฌ์ ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํ ์์์ ๊ท์ฝ, ๋ฃฐ ๋ฑ์ Framework๊ฐ ์ ๊ณตํด ์ฃผ๋ ๊ฒ์ด๋ค. ์ด์ ๋ณต์กํ๊ณ ์ด๋ ค์ด ์ผ๋ค์ Framework๋ฅผ ํตํด ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ๋์๊ณ , ๊ฐ๋ฐ์๋ ์น ์ฌ์ดํธ์ ๊ฐ์ฑ์ ์ธ ๋ถ๋ถ๊ณผ ์๋น์ค์ ๊ฐ์ ํํธ์ ๋์ฑ ์ง์คํ ์ ์๊ฒ ๋์๋ค.
Express๋ nodejs์์ ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ๋ ์ ์ํฌ ์ค ํ๋์ด๋ค. Express๋ ๋ค์๊ณผ ๊ฐ์ ๋งค์ปค๋์ฆ์ ์ ๊ณตํ๊ฒ ๋๋ค.
์ด์ธ์๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ํ์ฌ๋์ด์๋ค.
(์ถ์ฒ: https://developer.mozilla.org/ko/docs/Learn/Server-side/Express_Nodejs/Introduction)
๊ทธ ์ค์์๋ ํนํ, ๋ผ์ฐํฐ(router) ๋ผ๋ ๋ฉ์๋์ ์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ํต์ ํ๋ ๋ฐฉ์์ ์ ๋ง ์ฝ๊ณ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์ ์ ๋ค์ด ์ฌ์ฉํ๊ณ ์๋ค.
router
app.get('/', function (req, res) {
res.send('Hello World!');
});
์ด๋ ๊ฒ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Express... ์ฌ์ฉํ๊ธฐ๋ ํธ๋ฆฌํ์ง๋ง ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ ์๊ณ ์์ด์ผํ๋ค. ์ฆ, ๊ณต๋ถํ๋๋ฐ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์์๋ถ์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๊ฐ๋จํ๊ณ ์ฌ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๋ ๊ฒ๋ณด๋ค๋ ์ฒด๊ณ์ ์ด๊ณ ๋ณต์กํ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ๊ณ ์ ํ ๋, Express๋ ๋ ํฐ ํ์ ๋ฐํํ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ Nodejs๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Express ํ๋ ์์ํฌ์ ๊ธฐ๋ฅ๋ค์ ์ ์ฌ์ ์์ ์๋ง๊ฒ ์ฌ์ฉํ์ฌ ํ๋ฅญํ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ํ๋ฒ ๋ง๋ค์ด๋ณธ๋ค๋ฉด ์น ๊ฐ๋ฐ์๋ก์จ์ ์์ง์ ์ถฉ๋ถํ ๊ฐ์ถ๊ฒ ๋ ๊ฒ์ด๋ค.