Node.js에서 모듈을 어떻게 가져오나요?
_____A1: Node.js에서는 `require()` 함수를 사용하여 모듈을 가져옵니다. 예를 들어, 내장 모듈인 `fs`를 가져올 때는 다음과 같이 작성합니다.
```js
const fs = require('fs');
```
Q2: 사용자 정의 모듈은 어떻게 가져오나요?
A2: 사용자 정의 모듈은 파일 경로를 지정하여 `require()`로 가져올 수 있습니다. 예를 들어, 같은 디렉터리 내 `utils.js`를 가져오려면 아래와 같이 합니다.
```js
const utils = require('./utils');
```
Q3: ES6 모듈 방식(Import/Export)은 어떻게 사용하나요?
A3: Node.js에서 ES6 모듈을 사용하려면 파일 확장자를 `.mjs`로 하거나, `package.json`에 `"type": "module"`을 설정해야 합니다. 그런 다음 `import` 문법을 사용할 수 있습니다.
```js
import fs from 'fs';
import { myFunc } from './utils.js';
```
Q4: 모듈 경로를 지정할 때 상대경로와 절대경로 차이는 무엇인가요?
A4:
- 상대경로(`./` 또는 `../`로 시작): 현재 파일 기준으로 경로를 지정합니다.
- 절대경로(루트부터 시작하거나 노드 모듈 경로): Node.js 기본 모듈이나 설치된 `node_modules` 내 패키지를 가리킵니다.
상대경로를 명확히 지정하지 않으면 Node.js는 내장 모듈이나 `node_modules`에서 검색합니다.
A5: ES6 모듈에서 `import` 할 경우, 중괄호를 사용해 필요한 부분만 가져올 수 있습니다.
```js
import { func1, var1 } from './module.js';
```
CommonJS(`require`) 방식에서는 모듈 전체를 가져와서 필요한 부분을 사용합니다.
```js
const module = require('./module');
const func1 = module.func1;
```
Q6: CommonJS 모듈과 ES 모듈을 혼용해서 사용할 수 있나요?
A6: Node.js에서는 기본적으로 CommonJS가 기본이며 ES 모듈을 공식 지원합니다. 혼용 사용 시 `import()` 동적 불러오기 또는 `.default` 프로퍼티 접근이 필요할 수 있습니다. 일반적으로 한 프로젝트에서는 한 가지 모듈 시스템을 사용하는 것이 안정적입니다.
Q7: 모듈 캐싱은 어떻게 작동하나요?
A7: Node.js는 `require()` 한 모듈을 캐시에 저장하여 같은 모듈을 다시 로드할 때 파일을 재실행하지 않고 캐시된 객체를 반환합니다. 이로 인해 초기 로딩 속도가 빠르며 상태 유지가 가능합니다.
Q8: npm으로 설치한 모듈은 어떻게 가져오나요?
A8: 설치된 모듈은 이름만으로 `require()` 할 수 있습니다. 예를 들어, `lodash`를 설치했다면:
```js
const _ = require('lodash');
```
---
Node.js에서 모듈을 가져오는 핵심 방법은 `require()` (CommonJS)와 `import` (ES 모듈)이 있으며, 상황과 설정에 맞게 적절히 사용하면 됩니다.
이 두 가지 방법은 각각의 사용 사례와 환경에 따라 다르게 적용됩니다.
아래에서 각각의 방법에 대해 자세히 설명하겠습니다.
1. CommonJS 모듈 시스템 (require) Node.js의 기본 모듈 시스템은 CommonJS입니다.
이 시스템에서는 `require()` 함수를 사용하여 다른 모듈을 가져옵니다.
CommonJS 모듈은 기본적으로 동기적으로 로드되며, 다음과 같은 방식으로 사용됩니다.
모듈 내보내기 먼저, 모듈을 정의하고 내보내야 합니다.
예를 들어, `math.js`라는 파일을 만들어 보겠습니다.
```javascript // math.js function add(a, b) { return a + b; } function subtract(a, b) { return a - b; } module.exports = { add, subtract }; ``` 위의 코드에서 `module.exports`를 사용하여 `add`와 `subtract` 함수를 내보냈습니다.
모듈 가져오기 이제 다른 파일에서 이 모듈을 가져올 수 있습니다.
예를 들어, `app.js`라는 파일에서 `math.js` 모듈을 가져오는 방법은 다음과 같습니다.
```javascript // app.js const math = require('./math'); const sum = math.add(5,
3); const difference = math.subtract(5,
3); console.log(`Sum: ${sum}`); // Sum: 8 console.log(`Difference: ${difference}`); // Difference: 2 ``` 여기서 `require('./math')`를 사용하여 `math.js` 모듈을 가져왔습니다.
경로는 상대 경로로 지정해야 하며, 파일 확장자는 생략할 수 있습니다.
2. ES6 모듈 시스템 (import/export) Node.js는 ES6 모듈 시스템도 지원합니다.
이 시스템에서는 `import`와 `export` 키워드를 사용하여 모듈을 가져오고 내보냅니다.
ES6 모듈은 기본적으로 비동기적으로 로드됩니다.
모듈 내보내기 ES6 모듈을 사용하여 `math.js` 파일을 다음과 같이 수정할 수 있습니다.
```javascript // math.js export function add(a, b) { return a + b; } export function subtract(a, b) { return a - b; } ``` 여기서는 `export` 키워드를 사용하여 `add`와 `subtract` 함수를 내보냈습니다.
모듈 가져오기 이제 `app.js`에서 ES6 모듈을 가져오는 방법은 다음과 같습니다.
```javascript // app.js import { add, subtract } from './math.js'; const sum = add(5,
3); const difference = subtract(5,
3); console.log(`Sum: ${sum}`); // Sum: 8 console.log(`Difference: ${difference}`); // Difference: 2 ``` 여기서 `import { add, subtract } from './math.js'`를 사용하여 `math.js` 모듈에서 특정 함수를 가져왔습니다.
ES6 모듈을 사용할 때는 파일 확장자를 명시해야 합니다.
3. 모듈 경로 모듈을 가져올 때 경로를 지정하는 방법은 다음과 같습니다: - 상대 경로 : `./` 또는 `../`를 사용하여 현재 디렉토리 또는 상위 디렉토리에서 모듈을 가져옵니다.
- 절대 경로 : Node.js의 `NODE_PATH` 환경 변수를 설정하여 특정 디렉토리를 모듈 검색 경로에 추가할 수 있습니다.
- npm 패키지 : `require('package-name')` 또는 `import 'package-name'`을 사용하여 `node_modules` 디렉토리에서 설치된 패키지를 가져올 수 있습니다.
4. 모듈 캐싱 Node.js는 모듈을 한 번만 로드하고 캐싱합니다.
동일한 모듈을 여러 번 가져오면 캐시된 버전이 반환됩니다.
이는 성능을 향상시키고, 모듈의 상태를 유지하는 데 유용합니다.
5. Node.js에서 모듈을 가져오는 방법은 `require()`와 `import` 두 가지가 있으며, 각각의 방법은 특정 상황에 따라 적절하게 사용될 수 있습니다.
CommonJS는 Node.js의 기본 모듈 시스템으로 널리 사용되며, ES6 모듈은 최신 JavaScript 표준에 따라 점점 더 많이 사용되고 있습니다.
각 방법의 특징과 사용법을 이해하고 적절히 활용하는 것이 중요합니다.
작성자:
정서영 [비회원]
| 작성일자: 1년 전
2024-09-13 05:21:35
조회수: 181 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 181 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.