-
Node.js | ์๋ฒ ๊ตฌ์ถํ๊ธฐNode.js 2022. 10. 14. 21:35
Node.js
์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด ํ์ฑ๋๋ค. ์์ ์๋ ์น ๋ธ๋ผ์ฐ์ ์์๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉ(ํด๋ผ์ด์ธํธ ์ฌ์ด๋)ํ ์ ์์๋ค. ํ์ง๋ง node.js ์ ๋ฑ์ฅ์ผ๋ก ์๋ฒ์ฌ์ด๋์์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ก๋ค.
node.js๋ ๊ตฌ๊ธ v8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋น๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌ๋ ํ๊ฒฝ(๋ฐํ์)์ด๋ค. node.js ๋ฅผ ์ค์นํ๋ฉด ํฐ๋ฏธ๋์์๋ ์ฝ๊ฒ js ํ์ผ์ ์คํ์ํฌ ์ ์๋ค. ์ด๋ฌํ node.js ์ ๋ฑ์ฅ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฉ ๋ฒ์๊ฐ ํ์ฅ๋์๋ค.
node.js๋ ๋น๋๊ธฐ, ๋จ์ผ ์ค๋ ๋, ์ด๋ฒคํธ ๋ฃจํ ๊ธฐ๋ฐ์ ํ๊ฒฝ์ด๋ค.
one thread == one call stack == one thing at a time
์๋ฒ ๊ตฌ์ถํ๊ธฐ
node.js ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ๋ฅผ ๊ตฌ์ถํด๋ณด์.
1. node.js ๋ค์ด๋ฐ๊ธฐ
2. app.js ํ์ผ ์์ฑ
app.js ํ์ผ์ index.html ํ์ผ๊ณผ ๊ฐ์ ์ํธ๋ฆฌ ์ญํ ์ ํ๋ค.
3. ์๋ฒ๋ฅผ ์์ฑ
์๋ฒ๋ http ๋ฉ์๋ ์ค ์๋ฒ๋ฅผ ์์ฑํ๋ createServer ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
- http.createServer : http server object๋ฅผ ์์ฑํ๋ค. ๋ฆฌํด๊ฐ์ ์์ฑ๋ server object์ด๋ค.
//app.js const http = require("http"); //http module ์ฌ์ฉ const hostname = '127.0.0.1'; const port = 3000;//์๋ฒ์ ํฌํธ ์ฃผ์ const server = http.createServer((req, res) => {});
4. port, host name ์ธํ
server.listen()์ ์ฌ์ฉํ์ฌ http server์ hostname, port๋ฅผ ์ธํ ํด์ฃผ์ด์ผ ํ๋ค.
server.listen(port, hostname, () => { console.log(`server running at http://${hostname}:${port}/`); });
์ฝ๋ฐฑํจ์๋ server๊ฐ ๋ค ์ค๋น๋์์ ๋ ์คํ๋๋ ํจ์์ด๋ค.
5. ์์ฒญ์ ๋ํ ์๋ต ์ธํ
์๋ก์ด ์์ฒญ์ด ์๋ฒ๋ก ์ค๋ฉด(๋ฆฌ์์ค ์์ฒญ ๋ฑ) request event๊ฐ ํธ์ถ๋๊ณ 2๊ฐ์ objects๊ฐ ์ฃผ์ด์ง๋ค.
- a request : http.IncomingMessage
- a response : http.ServerResponse
ํ๋๋ ์์ฒญ์ ๊ดํ, ๋ค๋ฅธ ํ๋๋ ์๋ต์ ๊ดํ ์ค๋ธ์ ํธ์ด๋ค.
const server = http.createServer((req, res) => {});
์์ฒญ์ด ์์ ๋, ์๋ต statusCode, header๋ฅผ ์ธํ ํ ์ ์๋ค.
const server = http.createServer((req, res) => { res.statusCode = 200; //์๋ต์ฝ๋ 200์ ๋ณดํต ์ฑ๊ณต์ ์ธ ์๋ต์ ์๋ฏธํจ res.setHeader("content-type", "text/plain"); res.end("hello world"); //์๋ต์ ๋๋ธ๋ค. argument๋ก content๋ฅผ ๋ฃ์ด๋ณด๋ผ ์ ์๋ค. });
app.js
const http = require("http"); //http module์ฌ์ฉ const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader("Content-Type", "text/plain"); res.end('Hello world'); }); server.listen(port, hostname, () => { console.log(`server running at http://${hostname}:${port}/`); })
6. app.js ํ์ผ ์คํ
node app.js
์ฑ๊ณต์ ์ผ๋ก ํฐ๋ฏธ๋์ console.log๊ฐ ์ฐํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
http://127.0.00.1:port ์ ๋ค์ด๊ฐ๋ฉด ์ ์์ ์ผ๋ก hello world๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
* nodemon ์ค์น : nodemon ์ app.js ํ์ผ์ด ์์ ๋์์ ๋ ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
nodemon์ ์ค์นํ๋ฉด app.js ํ์ผ์ ์์ ํ ํ ๋ค์ ์๋ฒ๋ฅผ ์ผค ํ์์์ด ์๋์ผ๋ก ์์ ๋ด์ฉ์ด ๋ฐ์๋๋ค.
npm install -D nodemon
nodemon app.js
์ฐธ๊ณ ์๋ฃ