[Node.js] Node.js 입문!!
프론트엔드 공부하면서 Node도 해야지 해야지 하다가
드디어 공부 시작!! 풀스택 가보자고
Node.js
: 서버 측 자바스크립트 런타임 환경
Node.js V8 자바스크립트 엔진과 libuv 및 C/C++에 의존성을 가진 자바스크립트 런타임이다
일단 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다.
V8은 자바스크립트 코드를 실행하도록 해주고
libuv는 이벤트 루프 및 운영체제 계층 기능을 사용하다록 API를 제공한다.
쉽게 말해 Node는 자바스크립트 코드 실행에 필요한 런타임으로 V8엔진을 사용하고, 자바스크립트 런타임에 필요한 이벤트 루프 및 운영체제 시스템 API를 사용하는데는 libuv 라이브러리를 사용한다는 뜻이다.
기본 코드 살펴보기
const http = require("http") // http 객체 생성
let count = 0
const server = http.createServer((req, res) => { // 서버 객체 생성
log(count); // 카운트 1 증가
res.statusCode = 200; // 결괏값 200
res.setHeader("content-Type", "text/plain"); // 헤더 설정
res.write("hello\n"); // 응답값 설정
setTimeout(() => {
res.end("Node.js"); // 2초 후 Node.js 출력
}, 2000)
})
function log(count) {
console.log((count += 1))
}
server.listen(3000) // 3000포트로 연결
✔️const http = require("http")
require()함수는 모듈을 읽어오는 함수
✔️const server = http.createServer(callback)
createServer()는 서버 인스턴스를 만드는 함수이다
인수로는 콜백 함수를 받는데 콜백 함수에서는 http 서버로 요청이 들어오면 해당 요청을 처리할 함수를 설정함
콜백 함수는 요청 처리에 사용할 req와 res 객체로 인수를 받는다.
✔️ res.statusCode = 200
요청에 대한 상태 코드를 200으로 설정함
주요 상태 코드는 요런게 있음!
✔️ res.setHeader("Content-Type", "text/plain")
HTTP는 요청/응답에 대한 부가 정보를 설정할 수 있다.
부가 정보는 header에 설정하게 되는데, 여기서는 콘텐츠 타입을 'text/plain'으로 설정했다.
text/plain은 '텍스트를 평문으로 해석하겠다' 라는 뜻이다.
text/html이라면 '텍스트를 html로 해석한다' 라는 뜻!
이외에 자주 보는 헤더 설정은 Accept, Accept-Charset, User-Agent. Referer 등이 있다
✔️ res.write("hello\n")
응답으로 보낸다는 뜻
✔️ server.listion(3000)
사용팔 포트를 3000번으로 지정
IP가 생략되었으므로 기본값인 localhost로 접속된다.