[Nodejs] 백엔드 개발할 때 필요한 지식들 정리하기

soyeon·2022년 1월 18일
0

Nodejs로 서버를 개발할 때 알고 있어야할 지식들을 정리하려고 한다.
자세하게 사용하는 방법을 정리하지는 않고, 이게 뭐였지..? 기억이 나지 않을 때 볼 용도이다.😅
하나하나 쓰는 글은 또 적어보자... 언젠가???
참조: 코드잇 Node.js 백엔드 개발 topic

Nodejs란?

노드 공식 사이트에서 설명하고 있는 Nodejs -> Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. 서버를 실행하는데 가장 많이 사용되고 있다.
JavaScript를 웹브라우저 뿐만 아니라 다른 곳에서도 사용할 수 있게 해주는, 또 다른 자바스크립트 실행 환경이다.(Nodejs + Electron = PC 프로그램 제작 -> Visual Studio Code)
Nodejs를 활용하면 Front-end와 Back-end를 JavaScript 하나로 웹을 개발할 수 있게 된다.🤩

비동기 프로그래밍

nodejs에서는 비동기 프로그래밍이 권장되고 있다.
비동기 실행: 하고 있던 작업이 완료되면 실행할 콜백 함수를 등록해두고, 바로 다음 코드로 실행이 넘어가는 것.

이벤트

nodejs의 많은 코어 모듈의 많은 객체들이 EventEmitter 객체이다.

module

모듈들이 모여서 하나의 프로그램을 만들게 된다. node에서는 javascript 파일 하나를 모듈 하나라고 할 수 있다.

모듈의 종류

모듈은 크게 내가 만드는 모듈이미 만들어져 있는 모듈로 나눌 수 있다.
여기서 이미 만들어져 있는 모듈은 또 나누어진다. 코어 모듈서드파티 모듈이다.

코어모듈

이미 node에 내장되어 있는 모듈

서드파티 모듈

nodejs에 내장되어 있는 모듈이 아니라, 다른 기업이나 단체에서 만든 모듈

모듈 가져오기

모듈을 가져올 때는 require() 을 사용해서 로드한다.
require로 가져온 모듈을 가져오면 객체가 리턴되는데, 이를 저장할 때에는 변수보다는 상수에 넣도록 한다.

const module = require('./module1.js');

모듈 내보내기

내가 만든 모듈을 다른 파일에서도 사용하고 싶을 수 있다. 다른 파일에서 사용할 때 require()로 모듈을 사용하게 된다. 이때, 내가 모듈을 공개하지 않으면 쓸 수 없다. 모듈을 공개해주어야 한다.

  • 모듈을 하나씩 공개하고 싶을 때
exports.module1 = module1;
exports.module2 = module2;
  • 공개할 하나의 객체를 만들고, 객체를 통째로 공개하고 싶을 때
module.exports = myModule;

npm

Node Package Manager의 줄임말로, 서드 파티 모듈에 관련된 작업을 할 때 필요하다. node를 설치하면 npm이 함께 설치가 된다.

package.json 이름의 파일을 가진 디렉토리를 패키지라고 부른다.
하나의 서드 파티 모듈은 하나의 패키지라고 한다.

npm install

  • 특정한 서드 파티 모듈(패키지)를 설치할 때
$ npm install <설치할 모듈 이름>
  • 공유 받은 패키지가 의존하는 모든 패키지들을 설치할 때
$ npm install

npm init

현재 디렉토리를 하나의 패키지로 만들 때 쓰는 명령어이다.

package-lock.json

npm으로 서드파티 모듈을 설치하게 되면 package-lock.json이라는 파일이 생성된다.이 파일에는 프로젝트 디렉토리에 설치된 서드파티 모듈의 정보들이 기록되어 있다. 내가 설치한 서드파티 모듈이 의존하고 있는 다른 모듈들도 적혀있다.("requires")

node_modules

npm으로 서드파티 모듈을 설치하게 되면 node_modules라는 디렉토리도 함께 생성된다. 이 디렉토리에 서드파티 모듈들이 실제로 설치된다.

package.json

package.json 이름의 파일을 가진 디렉토리를 패키지라고 한다. package.json 파일은 해당 패키지에 관한 정보를 가지고 있는 파일이다.

필드

name
패키지의 이름. 이 이름을 require 함수에 넣어서 사용한다.
version
패키지의 버전
description
패키지에 대한 설명
keywords
패키지에 대한 키워드
homepage
패키지 관련 사이트
bugs
버그를 신고할 수 있는 사이트
license
패키지의 라이센스 정보
author, contributors
author는 패키지를 만든 사람
contributors는 패키지를 만드는데 기여한 사람들
main
패키지를 로드했을 때 실제로 로드되는 파일의 이름
main 필드가 없다면, index.js 파일을 찾아서 로드한다.
man
패키지의 사용 설명서가 담긴 파일들의 경로
repository
패키지의 코드가 관리되고 있는 레포지토리의 주소
scripts
npm으로 간편하게 실행할 수 있는 스크립트 파일의 정보
dependencies
해당 패키지가 제대로 실행되기 위해 필요한 다른 패키지들이 적혀 있다.
engines
코드가 잘 실행되기 위해 필요한 node의 버전 정보가 적혀 있다.

package-lock.json과 package.json의 차이

package-lock.json에는 현재 패키지에 실제로 설치되어 있는 패키지들의 정보.
package.json에는 현재 패키지가 동작하기 위해 필요한 패키지들의 정보.

패키지를 공유할 때 이 두 파일을 함께 공유하면, npm이 두 파일을 보고 패키지를 동일한 버전으로 설치한다.👏🏻

Express

express는 서드파티 모듈로, 서버 프로그램을 간편하게 만들 수 있게 해주는 프레임워크이다.

Express 설치

$ npm install express

Express 사용

const express = require('express');
const app = express();

app.get('path', (request, response) => {
	response.end();
});

라우팅

서버에서는 url에 따라서 다른 응답을 해주어야 한다. 이를 라우팅이라고 한다.

Nodemon

파일의 코드를 알아서 감지하고, 자동으로 서버를 재실행 해주는 패키지

Babel

자바스크립트 컴파일러이다.

0개의 댓글