node.js는 무엇이고 어떤 역할을 하는가? 그 전에 클라이언트, 서버에 대해 알아보자.
예시) 식당
고객(클라이언트)이 메뉴(웹사이트)를 보고 음식(정보)을 주문하면 주방(서버)에서 음식(정보)을 만들어서 고객에게 제공, 둘 사이는 서빙(http 프로토콜)로 연결됨.
클라이언트 : 정보를 요청하는 컴퓨터
서버 : 정보를 처리하는 컴퓨터
http 프로토콜 : 둘 사이를 연결
서버를 만드는데는 다양한 언어들이 사용되고 있다.(java, js, php 등등)
node.js는 이 중에서 js를 서버 개발에 이용하기 위해 사용된다.
node.js 장점
- 프론트엔드 필수언어인 js로 서버(백엔드) 개발을 할 수 있다.
- 개발자 커뮤니티가 크고 다양하다.
- 서드파티 모듈이 많다. (타인이 만든 높은 퀄리티의 모듈들을 가져다 쓸 수 있다.)
서버에서 어떤 서비스를 제공하느냐에 따라 서버의 역할이 달라진다. 서버에서 서비스를 제공하려면 그에 맞는 프로그램을 실행해야 한다. 서버를 만든다는 것은 서버 컴퓨터에서 실행할 서버 프로그램을 만든다는 의미이다.
서버를 만든다 -> 서버에서 실행할 프로그램을 개발한다.
ex) 웹 서버를 만든다 -> 컴퓨터를 웹 서버로 동작하게 하는 프로그램을 만든다.
처음 node.js를 공부한다면, 웹 서버를 만들어보는 것이 가장 쉬운 선택이 될 수 있다.
단, node.js 하나만을 가지고 서버를 만들 수 있는것은 아니다. 이번에 서버 개발을 위해 활용할 것들은 다음과 같다.
- Node.js : 언어가 아니라, js 언어로 서버를 개발할 수 있도록 돕는 도구. 백엔드에서 js를 사용할 수 있게 환경을 만들어 주는 것.
- Express 프레임워크 : 반복 패턴과 복잡한 기능을 처리해주는 다양한 함수 제공. 빠른 서버 개발과 더불어 기능을 추가할수도 있다. 개발의 효율성, 생산성을 높이도록 돕는다.
- 몽고 DB : 데이터베이스의 일종. 자바스크립트만으로 활용할 수 있다.
- API : 프로그램과 프로그램을 연결해 주는 프로그램. http 프로토콜을 사용한 api를 RESRful API라고 한다.
js는 웹의 탄생과 함께 시작된 오래된 언어이고, 처음에는 웹 브라우저 안에서만 돌아가도록 개발 되었다. (개발자가 10일만에 개발했다는 말도..) 그러나 현재는 js가 웹 브라우저 뿐만이 아닌 모바일 등등 광범위하게 사용되게 되었고, 이러한 배경을 바탕으로 js를 웹 브라우저 밖으로 꺼내 컴퓨터 상에서 실행되도록 해줘야 한다고 하여 나온것이 node.js이다. 구글의 크롬 v8 엔진을 사용해서 웹 브라우저 밖에서 js를 사용할 수 있도록 만들었다.
Node.js : 웹 브라우저용 언어인 javascript가 컴퓨터 상에서 실행될 수 있도록 하는 런타임 환경.
공식 홈페이지에서 다운로드 할 수 있다.
Node.js 공식 홈페이지 : https://nodejs.org
설치 후 powershell을 통해 확인해보자.

우리는 웹 브라우저와 상관 없이 javascript 파일을 node.js를 활용해 다음과 같이 터미널에서 실행시킬 수 있다.
- node : js 파일을 실행하는 명령어
- node (파일이름).js or node (파일이름)
파일 이름 뒤에 .js는 생략해도 실행이 된다.
그 외 필요한 터미널 명령어들
- cd : 파일이 있는 위치로 이동하는 명령어 (실행시킬 파일이 있는 위치로 이동해야 한다.)
- .. : 상위 폴더를 지칭 (cd .. <<을 통해 부모 폴더로 이동할 수 있다.)
- vs code의 경우 powershell이라도 되어 있는데 이는 윈도우os에 해당하는 터미널을 가져와 열어준 것이다. mac 의 경우 mac 터미널이 열린다.
다른 모듈을 가져다 사용하는 것은 패키지 관리자 npm이라는 기능을 활용한다. 이는 이미 node안에 포함되어 있는 기능이다.
모듈 : 기능별로 쪼개놓은 파일
라이브러리 : 모듈보다 큰 단위. 여러 개의 모듈을 묶어 하나의 라이브러리를 만듦
(모듈과 라이브러리를 묶어 모듈이라고 하기도 함)
패키지 : 다른 사람이 사용할 수 있게 배포할 수 있도록 여러 모듈과 모듈 관련 파일을 묶어 놓은 것
npm : Node Package Manager
js 라이브러리를 비롯해 프레임워크, 플러그인 등 다양한 패키지를 내려받아 사용할 수 있게 해주는 도구. node.js 설치 시 함께 설치된다.
npm을 사용하기 위해서는 가장 먼저 npm을 초기화 시켜줘야 한다. 패키지를 사용하기 위한 기본 환경을 만드는 것이다.
npm init : 초기화를 위한 명령어
{
"name": "basics",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"description": ""
}
초기화가 되면 위와 같은 package.json 이라는 파일이 자동 생성된다. 이곳에는 개발을 하며 어떤 패키지들을 가져다 사용했는지의 정보가 담기게 된다.
clear : 터미널 기록을 모두 지우는 명령어
https://www.npmjs.com/ << 이곳에서 npm에서 사용할 수 있는 여러 패키지들을 검색할 수 있다.
여기서 사용하고 싶은 패키지를 검색해서 이름을 복사하자.
ex) npm i ansi-colors : 터미널의 글자 색을 바꿔주는 패키지
(i는 install의 줄임말로 i 대신 install을 써도 된다.)
이름을 복사한 것을 터미널에 입력하면 패키지가 추가된다.
"dependencies": {
"ansi-colors": "^4.1.3"
}
위처럼 package.json 파일의 dependencies가 변한 것을 확인할 수 있다.
dependency : 종속성. 현재 내가 개발하고 있는 애플리케이션에 연결된 것.
이렇게 다운받은 모듈의 사용법은 아까 다운받은 모듈 페이지에 나와있다.
기습 tip) VS Code에서 점으로 나오는건 수정중이라는 의미.
모듈을 더이상 사용하지 않는 경우 삭제할 수도 있다. 이때는 설치할때 install을 썼던 것처럼 uninstall이라고 쓰면 된다.
ex) npm uninstall ansi-colors
"description": ""
이렇게 지워진 것을 확인할 수 있다.
package.json 파일에서 패키지를 관리하기 때문에 타인이 배포한 소스 코드를 내려받으면 이 package.json을 참고하여 자동으로 종속된 패키지들이 다운로드된다.