개인 노트 정리) Node.js 백엔드 part 1-5 require와 모듈, 모듈의 레졸루션
2023. 5. 25. 20:12ㆍ개인노트-인강
한 번에 끝내는 Node.js 웹 프로그래밍 초격차 패키지 Online
# require와 모듈, 모듈의 레졸루션
- require란 모듈을 가져오는 방식.
- 모듈이란 Node의 모듈 시스템에서는 각 파일이 별개의 모듈로 취급이 됩니다.
- Node에서는 각 파일 하나하나가 모듈인 셈입니다.
- 그래서 그 모듈을 가져오는 함수가 require
## 참고
// 첫번째 줄 코드와 두번째 줄 코드는 동일한 함수입니다.
require('./animals');
module.require('./animals');
## module에 대해서
CommonJS 방식은 require 이란 키워드를 사용합니다.
ECMAScript 방식은 export, import 이란 키워드를 사용합니다.
### CommonJS 방식
// main.js
const { path, paths, filename} = module;
console.log({
path,
paths,
filename,
});
// 출력결과
/*
{
path: '/home/coder/project/src',
paths: [
'/home/coder/project/src/node_modules',
'/home/coder/project/node_modules',
'/home/coder/node_modules',
'/home/node_modules',
'/node_modules',
],
filename: '/home/coder/project/src/main.js'
}
*/
- paths에 나오는 경로들은 require시에 절대 경로로 가져올 수 있는 모듈들의 위치입니다.
- 이렇게 절대경로를 지정하면 module.paths의 경로들을 순서대로 검사하여 해당 모듈이 있으면 가장 첫 번째 것을 가져옵니다.
### ECMAScript 방식
- mjs라는 확장자를 가진 파일을 만들어야 합니다. ( 예 : animals.mjs )
animals.mjs
const animals = ['dog', 'cat'];
export default animals
main.mjs
import animals from './animals.mjs'
console.log(animals);
## require 에 대해서
- animalsA 와 animalsB 와 animalsC는 전부 같은 객체입니다.
- require을 같은 파일에 대해 3번 호출했지만, 실제로는 한 번만 호출합니다.
const animalsA = require('./animals');
const animalsB = require('./animals');
const animalsC = require('./animals');
console.log(animalsA === animalsB); // true
console.log(animalsA === animalsC); // true
'개인노트-인강' 카테고리의 다른 글
개인 노트 정리) Canvas - 1-08. 캔버스 resize 다루기 (0) | 2023.06.01 |
---|---|
개인 노트 정리) Canvas - 1-07. dat GUI 활용하기 (0) | 2023.06.01 |
개인 노트 정리) Canvas - 1-06. SVG 필터 입히기 (0) | 2023.05.23 |
개인 노트 정리) Canvas - 1-05. 파티클에 가속도 주기 (0) | 2023.05.23 |
개인 노트 정리) Canvas - 1-04. 파티클 애니메이션 시키기 (0) | 2023.05.22 |