node.js란
자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼. node.js를 통해 자바스크립트로 백엔드를 구현할 수 있다.
node.js라는 운동장(플랫폼)에서 자바스크립트가 뛰어놀며 백엔드에 관여할 수 있게 함
백엔드의 구조
<웹서버 - 웹 어플리케이션 서버 - 데이터베이스>
node.js로 웹 어플리케이션 서버를 만들 수 있음
require() : 이미 만들어져 있는 node.js의 모듈(예시 : http)를 부르는 함수(모듈 가져온 것)
createServer() : 서버 만드는 함수

<코드 설명>
let http = require('http');
-> 'http'라는 값을 가지고 있는 모듈을 불러온다는 의미
http.createServer(onRequest).listen(8888);
-> http 모듈을 통해 서버를 만들었는데 onRequest함수로 통신을 할 것이고, 클라이언트와 이야기할 때에는 8888이라는 주파수로 맞출 것이다.
response.writeHead(200, {'Content-Type' : 'text/html'});
-> 웹서버가 클라이언트에게 응답을 해줄 때, head를 적을 것인데, 200코드라는 내용을 적을 것이고, 내가 너에게 줄 response의 타입은 html타입이다.
response.write('Hello Node.js');
-> 바디에 들어갈 내용은 이렇다.
response.end();
-> 전송!
포트번호(port number)
클라이언트와 서버가 대화를 하고 싶다면, 같은 주파수를 맞춰야 함
HTTP 프로토콜 템플릿
[head][body] : 웹 페이지 화면에 뿌려질 내용을 담음
head에 들어가는 내용 :
1. 통신 상태가 어떤지 알려줌
예시 : 200 - 정상이다
404 - 클라이언트가 원하는 걸 못 찾겠다.
500 - 서버가 이상하다.
이 숫자들을 http (status) code 라고 부른다.
2. 응답이 어떤 형태인지 적어줌. 예시 : html
현재 서버의 유연성이 떨어짐
만들어진 우리 서버도 모듈화하여 편하게 쓸 수 있게 해보자.
내가 만든 server을 모듈처럼!
node.js가 미리 만들어둔 모듈을 우리가 require('모듈 이름'); 이렇게 사용한 것처럼, 우리가 만든 server도 모듈처럼 다른 javascript파일에서 사용할 수 있다.
exports.start = start; <- 바깥에서도 start함수 모듈을 사용할 수 있도록 함
Uniform Resource Locator
인터넷 상에서 웹 페이지가 어디있는지 "위치"를 알려주는 주소.
쉽게 말해 웹 페이지 주소임.

console.log를 통해 콘솔에 pathname을 찍어보면, pathname은 8888뒤에 나오는 경로를 뜻함을 알 수 있다.
localhost : 내 컴퓨터 주소
서버는 다른 역할을 할거고, pathname은 누가 전달을 해주는 역할을 할 것인가? : router
router : 경로를 정해주는 친구
((어려워..))
Server : request를 받습니다.
Router : request의 url에 따라 루트(route)를 정해줍니다. = 어디로 갈지 길만 정해준다.
그렇다면 각 루트(route)에서 할 일은 누가 하는가?
index.js -> server.js -> router.js -> ???
((다시))
(WEBSTART code 확인)

