#40 #Node - 다른 파일에서 함수 가져와서 사용하기

서영·2026년 5월 23일

왜 코드를 여러 파일로 나눠야 할까?

처음 코딩을 배울 때는 하나의 파일에 모든 코드를 작성하게 됩니다.
하지만 프로젝트가 커질수록 한 파일에 코드를 길게 적으면 이런 문제들이 생깁니다.

문제설명
가독성 저하어디에 어떤 코드가 있는지 찾기 어렵다
디버깅 어려움오류가 났을 때 원인을 찾기 어렵다
사이드 이펙트기능을 수정하다가 다른 기능까지 망가질 수 있다
협업 불편여러 사람이 함께 작업하기 어렵다
재사용 불가코드를 다른 곳에서 재사용하기 어렵다

이 문제를 해결하는 것이 바로 모듈 시스템입니다.


Node.js 모듈 시스템의 핵심 2가지

module.exports — "이 기능을 다른 파일에서도 쓸 수 있게 내보낼게"

// math.js

function add(a, b) {
  return a + b;
}

function subtract(a, b) {
  return a - b;
}

function multiply(a, b) {
  return a * b;
}

function div(a, b) {
  return a / b;
}

function power(a, b) {
  return a ** b;
}

function sqare(a) {
  return a * a;
}

module.exports = {
  add,
  subtract,
  multiply,
  div,
  power,
  sqare,
};

{ add: add } 처럼 키와 값이 같을 때는 { add } 로 줄여 쓸 수 있습니다!
자바스크립트에서 앞뒤가 똑같으면 하나만 써도 됩니다.


require() — "저 파일에 있는 기능을 가져와서 사용할게"

// app.js

const { add, subtract, multiply, div, power, sqare } = require("./math");

require("./math")math.js에서 내보낸 객체 전체를 가져온 다음,
구조 분해 할당으로 필요한 함수만 꺼내서 사용합니다.


process.argv — 터미널에서 입력값 받기

Node.js에서 터미널로 직접 인수를 전달하려면 process.argv를 사용합니다.

node app.js add 10 5

process.argv는 배열이고, 각 인덱스의 의미는 다음과 같습니다.

인덱스내용설명
[0]Node 실행 경로컴퓨터 내의 node 실행 파일이 위치한 절대 경로
[1]스크립트 파일 경로현재 실행 중인 자바스크립트 파일의 절대 경로
[2]첫 번째 추가 인수사용자가 직접 입력한 첫 번째 데이터 (파라미터)
[3]두 번째 추가 인수사용자가 입력한 두 번째 데이터

실습 — 터미널 계산기 만들기

math.js의 함수들을 app.js에서 불러와, 터미널 입력값으로 연산을 수행하는 계산기를 만들어봤습니다.

// app.js

const { add, subtract, multiply, div, power, sqare } = require("./math");

const operator = process.argv[2];      // 연산자
const num1 = Number(process.argv[3]);  // 첫 번째 숫자
const num2 = Number(process.argv[4]);  // 두 번째 숫자

if (operator === "add") {
  console.log(add(num1, num2));
} else if (operator === "subtract") {
  console.log(subtract(num1, num2));
} else if (operator === "multiply") {
  console.log(multiply(num1, num2));
} else if (operator === "div") {
  console.log(div(num1, num2));
} else if (operator === "power") {
  console.log(power(num1, num2));
} else if (operator === "sqare") {
  console.log(sqare(num1));
} else {
  console.log("지원하지 않는 연산자입니다");
}

실행 예시

node app.js add 10 5       # 15
node app.js subtract 10 5  # 5
node app.js multiply 10 5  # 50
node app.js div 10 5       # 2
node app.js power 2 8      # 256
node app.js sqare 9        # 81

process.argv로 받아오는 값은 문자열(string) 이기 때문에,
숫자 연산을 하려면 반드시 Number()로 변환해줘야 합니다!


정리

math.js  ──[module.exports]──▶  app.js
         ◀──[require()]──────
  • module.exports : 기능을 파일 밖으로 내보낸다
  • require() : 다른 파일의 기능을 내 파일로 가져온다
  • process.argv : 터미널 실행 시 입력한 값을 배열로 받아온다

모듈로 파일을 분리하면 코드가 훨씬 읽기 쉽고, 수정하기 쉽고, 재사용하기 쉬워집니다.

profile
시대를 따라가는 개발자가 아닌, 시대를 이끄는 개발자

0개의 댓글