JAN's History
Node의 모듈 본문
Node.js에서 모듈이란?
프로그래밍에서 가장 기본적이 개념이 바로 모듈인데요!
프로그램을 작은 기능 단위로 쪼개고 파일 형태로 저장해 놓은 것을 모듈이라고 한답니다.
➡️즉, 이렇게 기능별로 만들어 놓은 함수를 모듈이라고 해요.
CommonJS 모듈 시스템과 ES 모듈 시스템
자바스크립트에는 두가지의 모듈 시스템이 있어요.
CommonJs와 ES 모듈 시스템인데요. Node.js에서는 보통 CommonJS모듈을 사용합니다.(이 글에서도!)
그럼 모듈을 만들어보며 이해해봅시다!
사용자 이름을 가져와 화면에 표시하는 함수(모듈)를 만들어보자
const user = "홍길동";
const hello = (name) => {
console.log(`${name} 님, 안녕하세요?`);
};
hello(user);
위 코드를 이름을 가져오는 user.js와 인사말을 표시하는 hello.js로 나누어보자
//user.js
const user = "홍길동";
//hello.js
const hello = (name) => {
console.log(`${name} 님, 안녕하세요?`);
};
모듈 내보내기 - module.exports
아까 작성한 코드를 module.exports를 사용하여 모듈 내보내기를 진행하자
- user.js에서는 user라는 변수를 export 함 (현재 파일에서 사용된 값을 다른 파일에서 사용할 수 있도록 내보냄)
- hello.js에서는 hello라는 함수를 export 함 (현재 파일에서 사용된 기능을 다른 파일에서 사용할 수 있도록 내보냄)
➡️ module.exports가 사용된 모습
함수 선언 및 정의시 exports를 붙여 module.exports 사용 없이 바로 exports 할 수 있습니다
exports.hello = (name) => {
console.log(`${name} 님, 안녕하세요?`);
};
모듈 가져오기 – require 함수
user.js와 hello.js라는 모듈을 준비했으니 이제 이 모듈을 불러와 사용해보도록 합니다.
- user.js에서 선언된 변수 값을 user라는 변수에 저장함
- hello.js에서 선언된 함수 기능을 hello로 선언함
const user = require("./user.js");
const hello = require("./hello.js");
hello(user);
선언한 함수 hello에 저장한 변수 user를 입력하여 결과값을 확인해보자!
둘 이상의 변수 내보내기 및 가져오기
앞에서 살펴본 user.js에는사용자 이름이 하나뿐이 었지만 값을 여 러 개 내보낼 수도 있습니다
- {}로 묶어서 객체 형태로 내보내면 됨
const user1 = "Kim";
const user2 = "Lee";
const user3 = "Choi";
module.exports = { user1, user2 };
객체를 가져오는 방법은 다음과 같음
const { user1, user2 } = require("./users-1");
const hello = require("./hello");
hello(user1);
hello(user2);
JavaScript 객체 살펴보기
객체는 여러 자료형을 하나로 묶어 놓은 것을 말함
하나의 변수에 다양한 정보를 포함할 수 있음asdf
- 객체는 중괄호 안에 모든 정보를 담고 키(key)와 값(value)으로 한쌍의 값을 이룸
- 이러한 키:값 형태의 쌍을 프로퍼티(property) 라고 함
- 여러 쌍의 값은 쉼표(,)로 구분함
let gitBook = {
title: "깃&깃허브 입문", // 문자열
pubDate: "2019-12-06”, // 문자열
pages: 272, // 숫자
finished: true // 논릿값
}
아래와 같이 한 줄로 표현할 수 있음
let gitBook = {title: "깃&깃허브 입문", pubDate: "2019-12-06”, pages: 272, finished: true}
객체의 값은 객체명.키 형태로 접근할 수 있음
gitBook.title
Node의 Core 모듈을 살펴보자!
방금까지는 우리가 만들어내는 모듈을 살펴봤지만, Core 모듈이라는 개발에 필요한 기본 모듈이 있답니다!
이번에는 Node에서 기본적으로 제공하는 Global이라는 모듈에 대해 알아보겠습니다 :)
어떠한 Core 모듈이 있는지 살펴보기 위해 Node.js의 공식 문서에서 확인해볼 수 있는데요!
Node의 Core 모듈 살펴보기
자주 사용하는 Core 모듈은 아래 표에 정리해두었습니다.
Core 모듈과 사용자가 만든 모듈의 이름이 같을 경우!?
Core 모듈인 fs와 사용자(개발자)가 만든 모듈의 이름이 같을 경우 사용방법에 대한 예시를 만들어보도록 하겠습니다!
대부분의 개발자들은 fs가 Core 모듈임을 인지하고 같은 이름을 사용하지 않는데요.
하지만 만약 Core 모듈과 사용자 모듈의 이름이 같을 경우는 다음과 같이 node: 라는 접두사를 붙여요.
이는 Core 모듈을 불러오겠다는 의미를 뜻합니다!
const fs = require("node:fs");
Global 모듈
Global 모듈이란 require 함수를 사용하지 않고 바로 사용하는 모듈을 의미해요.
Console이라는 글로벌 객체는 미리 정의되어있으므로 consol의 log라는 함수는 다음과 같이 사용합니다.
// 본 코드는
global.console.log('${name} 님, 안녕하세요?’);
// 아래와 같은 기능을 수행함
console.log('${name} 님, 안녕하세요?');
Global 모듈에 있는 여러 변수 중에 자주 사용하는 __dirname과 __filename 변수가 있습니다.
- __dirname은 현재 모듈이 있는 폴더의 이름을 가져옴
- __filename은 현재 모듈이 있는 파일의 이름을 가져옴
console.log('현재 모듈이 있는 폴더 이름: ${__dirname}’);
// 현재 모듈이 있는 폴더 이름: C:\Users\kyrie\Desktop\basics\02
console.log('현재 모듈이 있는 파일 이름 : ${-.filename}’);
// 현재 모듈이 있는 파일 이름: C:\Users\kyrie\Desktop\basics\02\here. js
JavaScript에서 자주 사용되는 타이머 함수는 다음과 같음
- setTimeout : 지정한 시간이 지난 후 함수 안의 코드를 실행함
- setInterval : 지정한 시간 마다 함수 안의 내용을 실행함
- clearInterval : setInterval을 멈춤
let remainingTime = 3000; // 남은 시간을 3초로 설정
const waitingInterval = 500; // 대기 간격을 500ms로 설정
// 500ms마다 호출되는 함수
const timer = setInterval(() => {
// 남은 시간을 표시
console.log(`${remainingTime / 1000}초 남음`);
remainingTime -= waitingInterval; // 남은 시간 감소
if (remainingTime <= 0) {
// 남은 시간이 0 이하일 경우 'Hi' 메시지를 표시하고 타이머를 종료
console.log("Hi");
clearInterval(timer);
}
}, waitingInterval);
'Node.js' 카테고리의 다른 글
Node.js 멀티프로세스 vs 싱글프로세스와 throng 라이브러리 활용법 (0) | 2025.09.12 |
---|---|
Node.js에서 파일관리하기 (0) | 2024.04.15 |
JavaScript의 비동기 처리방식 (0) | 2024.04.13 |