포스트

Node.js › Node.js 간단 정리!!

Node.js란?

Node.js는 web 브라우저가 아닌 환경에서도 js 코드를 실행시켜주는 js의 런타임(실행환경)이다.
즉 구동기 이다!

등장 배경

JS는 웹 페이지 내부에 필요한 단순한 기능을 개발하기 위해 만들어진 간단한 script 언어이다. 그렇게 웹 브라우저 내부에서만 작동이 가능하도록 만들어졌다.
문법이 유연하고 작성하기 편리하게 생산성에 집중하여 설계되어, 너무 매력있다 보니 웹페이지 기능을 만드는 것 뿐 아니라 웹 밖에서도 프로그래밍 하는데 쓰고 싶어하는 수요가 발생했고, 이는 현실이 되어 Node.js를 통해 어디서든 동작가능한 범용적인 언어가 되었다.
이를 통해 웹 서버, 모바일, 데스크탑을 만들 수 있게 되었다.

패키지

보통 특정 목적을 갖는 프로그램의 단위를 프로젝트라고 부른다.

Node.js에서는 프로젝트를 패키지라고 부른다.

Node.js 사용해보기

패키지 생성

package.json이 생긴다.

1
npm init

JS 코드 실행해보기

1
node index.js

폴더 구조가 복잡할 경우의 매크로

1
2
3
4
5
6
7
8
9
10
11
12
{
    "name": "section03",
    "version": "1.0.0",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node src/index.js"
    },
    "author": "",
    "license": "ISC",
    "description": ""
}

scripts 안에 start라는 매크로를 지정해 주어 매번 실행할 때마다 저걸 다 치는게 아니라,

1
npm run start

이렇게 실행할 수 있게 되는 것이다.(어디서 많이 봤지?)

Node Module System

모듈을 다루는 시스템을 의미한다!

Module이란?

간단한 쇼핑몰을 만든다고 가정해보자!

회원관리, 장바구니, 결제 등의 다양한 기능이 필요하게 될 것이다.
이 많은 기능을 하나의 js 파일에 작성하면 어떻게 될까???

수정하려고 하면 아주그냥 눈이 터져나간다.

그래서 기능별로 파일을 구분해서 만드는게 일반적이다.
그럼 user.js, cart.js, payment.js 등의 파일이 생길텐데, 이 때 기능별로 구분되어져 있는 각각의 js 파일들을 모듈이라고 부른다.

그럼 user 모듈, cart 모듈, payment 모듈이라고 할 수 있겠다.

이 모듈들을 생성하고, 불러오고, 사용하는 등의 모듈을 다루는 다양한 기능을 제공하는 시스템을 모듈 시스템이라고 부른다.

Common JS(CJS)

모듈 시스템 중 하나로 모듈에서 함수를 가져와서 index 모듈에서 사용할 수 있게 해주는 방법 중 하나이다.

1
2
3
module.exports = {
  // 특정 모듈 내에서 정의한 함수
};
1
const { 함수들 } = require("모듈 경로");

이렇게 사용가능하다.

ESM 모듈 시스템

CJS 모듈과 교차하여 사용할 수 없으며, package.json에서 type: module이라고 설정해주어야 한다.

1
export { 함수들 };

또는 함수의 선언문에

1
2
3
export function add(a, b) {
  return a + b;
}

이렇게도 사용이 가능하며, 이거 어디서 많이 봤죠~?

또한 default로 내보내는 법도 있는데,

1
2
3
export default function multiply(a, b) {
  return a * b;
}

이렇게 하면 import 할 때는

1
2
3
4
5
6
import { 함수들 } from "모듈 경로(주의할 점은 확장자를 명시해 주어야 한다)";

//export default
import multiplly from "모듈 경로";
//또한 default로 내보낸 함수는 이름을 바꿔 불러올 수도 있다.
import mul from "모듈 경로";

Node.js 라이브러리 사용하기

라이브러리란?

프로그램을 개발할 때 필요한 기능들을 미리 만들어서 모듈화 해놓은 것

라이브러리를 새로 설치하면, dependencies라는 필드 안에 설치한 라이브러리의 이름과 버전 정보가 기입이 되고, 이는 우리 프로젝트는 해당 라이브러리를 사용하고 있으니, 해당 라이브러리에 의존해! 라는 뜻이 되는 것이다.

또한 package.json node_modules 폴더와 package-lock.json파일이 생성되는데, node_modules 내부에는 실제로 라이브러리가 설치되는 저장소이며, package-lock.json은 라이브러리의 버전과 정보가 더 정확하고 자세하게 기록되어있다.
좀 더 자세히 말하자면 package.json 의 버전은 ^0.x.x 이런 형식으로 되어있는데 이는 0.버전과 1.버전 사이의 버전 중 가장 최신 버전을 설치하겠다는 의미이고, package-lock.json 내부의 버전은 정확한 설치 버전을 나타낸다.

사용하기

만약 randomcolor라는 라이브러리를 설치했다고 가정해보자.

먼저 import를 해야할 것이다.

1
import randomColor from "randomcolor";

이렇게 해당 라이브러리의 defualt 를 불러온다.

1
const color = randomColor();

이런식으로 사용이 가능하겠다.

또한 만약 node_modules, package-lock.json이 사라지면 당연히 해당 라이브러리는 사용할 수 없을 것이다.

이 때 package.json에 dependencies에 라이브러리의 정보가 있다면, npm i를 통해서 해당 필드안의 모든 라이브러리를 설치할 수 있다.
그렇기 떄문에 용량이 큰 node_modules 폴더는 git에 올리지 않고 해당 프로젝트를 깃에서 받은 후엔 npm i를 하는 것이였다.

참고자료 : 인프런 - 한 입 크기로 잘라먹는 리액트

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.