들어가며
작업하던 도중 문득 백엔드 개발자들은 우리의 화면으로 어떤 작업을 할까?
라는 호기심에서 자바스크립트로 이루어진 Node.js를 찾아보게 되었습니다.
프론트엔드 개발자도 스치듯 또는 자주 들어봤을 Node.js 같이 기초만 배워 보아요.
Node.js란?
자바스크립트는 C언어, JAVA와 같은 프로그래밍 언어입니다.
하지만 자바스크립트라는 언어 특성상 웹브라우저에서만 동작을 했었습니다.
즉 브라우저가 없다면 아무 쓸모 없는 언어인 거죠..ㅠ
다른 언어들에 비해서 완성도가 적고 범용성도 적어 찬밥 신세였습니다. 그래서 등장한 게 Node.js 입니다. 자바스크립트 문법은 그대로 활용하면서
브라우저 외에 다른 프로그램에서도 활용할 수 있게 된 겁니다!
그러므로
Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임 입니다.
*런타임 : 특정 언어로 만든 프로그램을 실행할 수 있는 환경
(현재는 자바스크립트로 프로그램을 실행시켜주는 Node.js를 뜻해요)
또한 비동기 방식으로 속도 또한 빠르다는 특징이 있습니다!
*비동기: 이전 작업이 완료되지 않아도 다음 작업을 동시 실행
Node.js로. 웹서버 만들어보기
Node.js가 어떤 아이인지 알아보았으니 공식 홈페이지에 있는 가장 기본적인 모듈로
하나하나 천천히 알아가 보면서 웹서버를 만들어 보아요!
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html);
res.end('Hello World');
});
server.listen(3000, () => {
console.log(`Server running at http:/3000`);
});
벌써부터 머리가 아파지는 것 같은데요!
우리 조금만 참고 위에서부터 같이 확인해 보아요!
const http = require('http');
맨 첫 번째 줄 내용입니다!
Node.js에는 http 서버가 내장되어 있기 때문에 웹서버에 자주 쓰입니다.
내장되어 있는 http 모듈을 불러오는 구문입니다!
require가 필요하다, 요청하다 라는 뜻이니까 Node.js에
내장되어 있는 http 모듈을 요청하다 라는 뜻이겠네요!
const server = http.createServer((req, res) => {
http 모듈을 불러왔으니 사용해 봐야겠죠??
http 모듈에는 각종 요청과 연결을 처리하기 위한 Server 객체가 있습니다.
그중 서버를 생성하기 위한 createServer() 함수가 있습니다.
또한 파라미터로 req, res를 받고 있습니다.
요청, 응답이라는 뜻의 줄임말로 요청을 받고, 응답을 줄 때 사용하게 될 파라미터입니다!
이번 시간에는 응답으로 “Hello World”를 넘겨줄 예정입니다.
http.createServer() 함수로 서버를 만들어 주고 server 변수에 담아 줍시다!
res.statusCode = 200;
200 상태 코드를 응답해 준다는 뜻입니다!즉 성공적으로 연결되었다고 응답해 줍니다!
메이데이 메이데이!
res.setHeader('Content-Type', 'text/html);
http 헤더에 Content-Type 을 text/html로 설정해 줍니다. http 통신에서 전송되는 데이터 타입을 나타냅니다. html 파일을 보낸다는 뜻이겠죠!?
res.end('Hello World');
응답을 종료하고 ‘Hello World’ 텍스트를 출력해 냅니다.
server.listen(3000, () => {
또한 서버를 생성 후 접속하는 포트를 할당해야 하는데
그게 바로 listen() 함수입니다. 파라미터로 원하는 포트 번호를 입력해 주면 되고
뒤에 콜백 함수로 포트 접속 완료 후 실행하게 됩니다.
저희는 포트 할당 후 console.log(Server running at http:/3000);
을 콘솔로 찍어 주고 있군요!
마치며
가장 기본적인 모듈로 공부를 해보았는데 다시 한번 기초지식이 많이 부족하다고 느낀 경험 이였습니다 ㅠㅠ
http, 프로토콜, Content-Type, 응답 코드 등등..
평소 이해가 안 되었는데 기초지식을 배우고 나 서 이해가 되었을 때 기분은 항상 좋은 것 같습니다! Node.js 자바스크립트로 서버를 만든다니 신기하지 않나요??
제 글을 읽으시고 흥미를 느끼셔서 조금 더 공부를 하게 되신다면 이번글은 성공인 것 같습니다.
그 외 익스프레스라는 Node.js 기반의 프레임워크도 있으니 활용도가 방대하게 사용할 수 있습니다. Node.js 참 매력이 넘치네요!