nodeJS
nodeJS는 javaScript runtime이다. 즉, js 코드를 실행하는 도구이다.
- 브라우저와 nodeJS에서 JS로 작성하는 것은 똑같지만, 일부 기능의 차이가 있다.
- 예를 들어 브라우저에서는 DOM과 상호작용할 수 있다. 그러나 구문 분석된 HTML 콘텐츠에서 분리된 JS를 실행하기 때문에 nodeJS에서는 사용할 수 없다.
- 그대신 nodeJS는 파일 시스템(브라우저에 없는 것)에 액세스할 수 있다는 예가 있다.
- 요청과 응답을 처리하기 위해 nodeJS를 사용할 때, 꼭 자바스크립트로 서버를 만들어야한다.
사용자 지정 nodeJS 서버 생성 코드
- nodeJS를 실행하고 싶다면 node {file_name} 을 명령줄에 치고 엔터를 누르면 된다.
- 명령줄을 통해 시작한 nodeJS로 작성된 웹서버는 ctrl+C를 통해 실행 중인 프로세스를 수동으로 종료해야한다.
const http = require('http');
function handleRequest(request, response) {
if (request.url === '/currenttime') {
response.statusCode = 200;
response.end('<h1>'+ new Date().toISOString() +'</h1>');
} else if (request.url === '/') {
response.statusCode = 200;
response.end('<h1>Hello World!</h1>');
}
}
const server = http.createServer(handleRequest);
server.listen(3000);
- require
- node js에 내장된 특수 키워드(함수)
- require('노드js에 구축된 패키지 이름')
- node js에 내장된 유틸리티 메서드와 속성으로 가득 찬 객체가 반환된다.
- http 패키지 : 요청과 응답을 처리하는데도움되는 특정 기능
- createServer() : 내부적으로 필요한 모든 서버 기능이 포함된 객체 반환
- handleRequest: 들어오는 요청을 처리하는 함수
- createServer는 자체적으로 request, response 매개변수 값을 함수로 원한다.
- request : 들어오는 요청에 대한 데이터가 포함된 객체
- response: 요청에 대한 응답을 보낼 수 있게하는 객체
- "path(경로)"는 일반적으로 대시 이외에 특별한 문자가 없는 모두 소문자여야 한다. 또한 예상할 수 있는 페이지의 내용(예: /users, /product-detail...)을 기술해야 한다
- statusCode: 요청이 성공했는지 여부를 브라우저에게 알리는 방법
- end: 보내야하는 데이터 전달
- 동적 데이터나 생성된 데이터 가져오기 => 이게 바로 서버를 사용하는 이유
- listen(포트번호) : 포트 번호에서 수신대기 시작
- port(포트)
- 네트워크 트래픽의 진입점.브라우저에서 일부 원격 시스템으로 전송되는 http 요청은 서버에서 처리하기 위해 이러한 진입점이 필요하다.
- 보통 보안상의 이유로 대부분의 포트가 닫혀 있다.
- 80은 암호화되지 않은 요청을 보내는 일반적인 포트이다.기본값으로 입력할 필요없다.
- 포트 80 및 443은 모든 웹 서버에서 수신 트래픽(요청)을 처리하기 위해 노출(열린)된 기본 포트이다.
- 브라우저는 포트를 내부에 추가하지만 nodejs로 자체 서버를 생성할때 들어오는 요청을 수신할 포트를 노드js에게 알려야 한다.