Node.js

[NodeJS] node 파일 모듈화와 비구조화 할당

SongMinu 2021. 4. 3. 14:29
728x90

노드는 코드를 모듈로 만들 수 있다.

너무 어렵게 생각할 필요는 없고 그냥 "특정한 기능을 하는 함수", "변수들의 집합", "필요한 코드들을 모아서 만든"

파일 1개가 그냥 모듈이고, 이 자체가 한 개의 프로그램이고 다른 곳에서 이걸 재사용할 수 있다.

 

소스는 보통 이런식이다.

const a = 'a';

const b = {
  bb: 'bb',
  cc: 'cc'
}

function c () {
  console.log('cc');
}

function d (val) {
  console.log(val);
}

module.exports = {
  a,
  b,
  c,
  d
}

변수나, 객체, 함수 등 필요한 소스 코드를 작성하고 마지막에 module.exports 사용하면 모듈화가 끝이다.

저 파일명이 md.js라고 치고 저 모듈을 사용하고 싶으면 사용할 파일에서 아래처럼 작성하면 된다.

const test = require('./md');

console.log(test.a);
console.log(test.b.bb);
console.log(test.b.cc);
test.c();
test.d('zz');

require로 모듈 파일을 가져와서 그냥 사용하면 된다.

 

그리고 md의 코드를 가져와서 쓰는 소스를 보면 지금 소스는 단어들이 짧긴 해도 소스가 길게 느껴진다.

실제 업무에선 저런 모듈화 된 파일들의 변수나 함수 명들이 a, b, c 이렇게 짧진 않으니 더 길어진다.

 

이럴 때 비구조화 할당(구조분해 할당)을 사용하면 소스가 더 간결해진다.

비구조화 할당은 객체나 배열 오브젝트 등 속성이나 요소를 쉽게 꺼내올 수 있다. 

그냥 쪼개서 가져온다고 생각하면 된다고 생각한다.

const {a, b, c, d} = require('./md');

console.log(a);
console.log(b.bb);
console.log(b.cc);
c();
d('zz');

확실히 조금 더 짧아졌다.

그리고 b의 경우 md.js에서 보면 안에 오브젝트 형식으로 되어 있는데 이것도 비구조화 활당으로 더 쪼갤 수 있다.

const {a, b: {bb, cc}, c, d} = require('./md');

console.log(a);
console.log(bb);
console.log(cc);
c();
d('zz');

더 간결해졌다.

반응형