import 한 파일을 한번만 통으로 가져올때
`import './utils/prisma.util.js';` 구문은 `prisma.util.js` 파일을 실행하면서 그 안에서 설정된 모든 작업을 수행하게 만듭니다. 이 구문을 통해 파일을 가져오면 파일 내의 코드가 실행되지만, 특정 변수를 가져오거나 하는 작업은 하지 않습니다. 즉, 이 구문은 파일 내의 부작용(side effects)만 발생시킵니다.
자바스크립트에서 import './utils/prisma.util.js';와 같은 구문을 사용하면, 해당 파일이 실행되지만, 이는 해당 파일에서 기본적으로 내보내기(export)된 항목을 가져오는 것은 아닙니다. 단순히 파일을 실행시키는 것이지, 모듈의 내용을 변수에 할당하거나 접근할 수 있게 하는 것은 아닙니다.
-이런 형식-
### 모듈 전체를 실행하기
import './module.js';
`import './utils/prisma.util.js';`와 같은 구문은 특정한 상황에서 유용할 수 있지만, 모든 경우에 사용하는 것은 아닙니다. 이를 사용하는 경우와 그렇지 않은 경우를 명확히 구분하는 것이 중요합니다.
### 언제 `import './utils/prisma.util.js';`를 사용하는가?
1. **전역 설정 또는 초기화 코드**:
- 특정 파일에서 전역적으로 필요한 설정이나 초기화 작업을 수행해야 하는 경우 사용할 수 있습니다. 예를 들어, 데이터베이스 연결 설정, 환경 변수 설정, 글로벌 에러 핸들러 설정 등이 있을 수 있습니다.
- 이 경우 해당 파일을 단순히 실행하여 설정이나 초기화를 적용하는 것이 목적입니다.
2. **폴리필(polyfill) 추가**:
- 브라우저나 자바스크립트 엔진에서 지원하지 않는 기능을 추가하기 위해 폴리필을 사용할 때, 해당 폴리필 파일을 실행하여 전역적으로 적용할 수 있습니다.
- 예: `import 'babel-polyfill';`와 같이 폴리필을 추가할 때.
3. **글로벌 스타일 및 테마 설정**:
- 프론트엔드 애플리케이션에서 글로벌 스타일 시트를 추가할 때 사용할 수 있습니다. 예를 들어, CSS 파일을 import하여 전체 애플리케이션에 적용할 수 있습니다.
- 예: `import './styles/global.css';`
### 예시 코드
#### 전역 설정 예시 (`setup.js`):
```javascript
// setup.js
import dotenv from 'dotenv';
import { setupDatabase } from './database';
dotenv.config();
setupDatabase();
console.log('Global setup completed');
```
#### 사용 (`main.js`):
```javascript
import './setup.js';
import express from 'express';
const app = express();
// 나머지 Express 설정
app.listen(3000, () => {
console.log('Server running on port 3000');
});
```
### 언제 사용하지 않는가?
1. **특정 기능이나 모듈을 가져올 때**:
- 특정 함수, 클래스, 변수 등을 가져와서 사용할 때는 명시적으로 `import` 구문을 사용하여 해당 항목을 가져와야 합니다.
- 예: `import { someFunction } from './utils/prisma.util.js';`
2. **모듈화가 중요한 경우**:
- 코드가 명확하게 모듈화되고, 각 모듈이 독립적으로 사용될 수 있도록 하는 것이 중요합니다. 이는 코드의 가독성과 유지보수성을 높이는 데 중요합니다.
- 예: 여러 함수나 클래스를 포함하는 유틸리티 파일에서 각 항목을 개별적으로 가져와 사용해야 할 경우.
### 결론
`import './utils/prisma.util.js';`와 같은 구문은 초기화, 전역 설정, 폴리필 추가 등의 목적으로 사용될 수 있습니다. 그러나 일반적으로는 필요한 항목을 명시적으로 가져오는 것이 좋습니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.
이건 다른 내보내기 가져오기 방법
### 특정 항목을 가져오기
```javascript
import { functionName, variableName } from './module.js';
```
### 전체 모듈을 객체로 가져오기
```javascript
import * as moduleName from './module.js';
```
### 기본 내보내기 가져오기
```javascript
import defaultExport from './module.js';
```