[포스코X코딩온 웹 풀스택 8기 부트캠프] 4주차 회고 | Node.js(2) - 모듈

2023. 8. 9. 11:36·포스코X코딩온 부트캠프

모듈(Module)

특정한 기능을 하는 함수나 변수들의 집합

재사용 가능한 코드 조각

  • 장점
    • 코드 추상화
    • 코드 캡슐화
    • 코드 재사용
    • 의존성 관리

모듈은 module.exports 또는 exports 객체를 통해 정의하고 외부로 공개한다.

공개된 모듈은 require 함수를 사용하여 import 한다.

모듈 만들기

하나의 모듈 파일에 하나 만들기

// func.js
function connect() {
	return a + b;
}

module.exports = connect;

module.exports에는 하나의 값(원시 타입, 함수, 객체)을 할당할 수 있다.

하나의 모듈 파일에 여러 개 만들기

// var.js
const a = "a 변수";
const b = "b 변수";

module.exports = {
	a,
	b
};

export와 export default의 차이

export와 export default의 차이

export {} (named export) export default
반드시 export한 객체/함수 이름으로만 import할 수 있다. export한 객체/함수 이름과 상관없이 개발자가 원하는 이름으로 import할 수 있다.
반드시 import할 때 중괄호{}로 가져와야 한다. import할 때 중괄호{}를 작성할 필요 없다.
한 모듈 내에 여러 가지를 export시 사용한다. 한 모듈 내에 export하는 대상이 하나일 때 사용한다.

모듈은 크게 두 종류로 나뉜다고 한다.

  1. 복수의 함수가 있는 라이브러리 형태의 모듈
  2. 개체 하나만 선언되어 있는 모듈

대개는 두 번째 방식으로 모듈을 만드는 것을 선호하기 때문에 함수, 클래스, 변수 등의 개체는 전용 모듈 안에 구현된다.

그런데 이렇게 모듈을 만들다 보면 자연스레 파일 개수가 많아질 수 밖에 없다. 그렇더라도 모듈 이름을 잘 지어주고, 폴더에 파일을 잘 나눠 프로젝트를 구성하면 코드 탐색이 어렵지 않으므로 이는 전혀 문제가 되지 않는다고 한다.

export default를 사용하면 '해당 모듈에는 개체가 하나만 있다'는 사실을 명확히 나타낼 수 있다. 즉, 파일 하나엔 대개 export default가 하나만 있다.

// user.js
export default class User {
	constructor(name) {
		this.name = name;
 }
}
// main.js
import User from './user.js';
new User('John');

export default는 파일당 하나만 있으므로 이 개체를 가져오려는 모듈에서는 중괄호 없이도 어떤 개체를 가지고 올지 정확히 알 수 있으므로 이름이 없어도 괜찮다.

모듈 불러오기

// const{ }로 모듈을 가져올 때는 구조분해하여 가져오기 때문에 이름이 동일해야 한다.
const {a, b} = require("./var.js");
// 하나의 모듈 파일에 하나만 내보낸 모듈은 다름으로 불러올 수 있다.
const returnString = require("./func.js");

만약 pacakge.json에 "type": "module"을 추가하면, require 대신 import를 사용한다.


참고 자료

[포스코X코딩온] KDT-Web-8 4주차 회고 3 - Node.js & 동기, 비동기

[Javascript] export와 export default의 차이점

[리액트] export default와 export의 차이

[모던 자바스크립트 튜토리얼] 모듈 내보내고 가져오기

'포스코X코딩온 부트캠프' 카테고리의 다른 글
  • [포스코X코딩온 웹 풀스택 8기 부트캠프] 5주차 회고 | 파일 업로드(form, multer, axios)
  • [포스코X코딩온 웹 풀스택 8기 부트캠프] 1주차 회고 | CSS 선택자
  • [포스코X코딩온 웹 풀스택 8기 부트캠프] 1주차 회고 | CSS(1)
  • [포스코X코딩온 웹 풀스택 8기 부트캠프] 4주차 회고 | Node.js(1)
dawncoding
dawncoding
  • dawncoding
    새벽 코딩
    dawncoding
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • Frontend (7)
        • Javascript (6)
      • Backend (5)
        • AWS (3)
        • Node.js (1)
        • SQL (1)
      • Github (1)
      • Computer Engineering (1)
      • 코딩테스트 (4)
      • Mac에서 개발환경 설정하기 (2)
      • 포스코X코딩온 부트캠프 (7)
      • 끄적끄적 (0)
  • 인기 글

  • 태그

    Node.js
    next.js
    slackbot
    포스코X코딩온 웹 풀스택 부트캠프
    AWS
    브라우저 동작 방법
    python
    오블완
    코딩테스트
    티스토리챌린지
    공부
    부트캠프
    회고
    mysql
    javascript
    EC2
    BOJ
    CSS
    Git
    CS 스터디
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dawncoding
[포스코X코딩온 웹 풀스택 8기 부트캠프] 4주차 회고 | Node.js(2) - 모듈
상단으로

티스토리툴바