import vs require , Destructuring Assignment
모듈 불러오기의 여러 방법
1. 모듈 관리 방법
- 모듈(완성된 부품)
- 프로그램 구성 요소. 데이터와 함수를 하나로 묶은 단위
## 1. require ( CommonJS) /exports
const express = require('express'); const { readFile } = require('fs');//Destructuring Assignment /* fs 전체 모듈을 가져오는 게 아닌, fs의 readfile만 가져온다! */ module.exports = name;
- Node.js의 기본 모듈 시스템.
- 동기적으로 로드 ( 모듈 로딩이 완료 될 때까지 실행이 중지됨)
- 성능 저하
- 실행 중 필요한 모듈을 조건에 따라 불러 올 수 있음.
- 기본 지원
- export된 객체 반환
-
Node.js에서 주로 사용됨!
exports
-
여러 개의 객체를 내보낼 경우 →exports.변수 의 개별 속성으로 할당
exports.myVar = 42; exports.myFunction = function() { return 'Hello, world!'; };
-
딱 하나의 객체를 내보낼 경우 →module.exports = 객체 자체에 할당
module.exports = { myVar: 42, myFunction: function() { return 'Hello, world!'; } };
-
## 2. import (ES6) /export
import express from 'express'; import { readFile } from 'fs'; export default name;
-
최신 javascript 모듈 시스템, 표준
→ 따라서 구버전, Node.js 구버전 등 특정 환경 사용 불가
-
비동기적으로 로드. (정적)
- 종속성 관리 신경써야함.
- 최상위 범위에서만 사용 가능.
- 웹 개발에서 주로 사용, 최신 브라우저에서 지원됨.
- 모듈 네임스페이스 반환. 각 export는 해당 네임스페이스에 접근 가능.
### export
- export {name, sayHello, Person};// 변수, 함수, 클래스를 하나의 객체로 구성하여 export
2. Destructuring Assignment(구조 분해 할당)
- Javascript에서 배열, 객체의 속성을 분해하여 변수에 할당하는 문법. 즉, 속성을 떼어내서 그것만 할당하는 것.
-
배열
const numbers = [1, 2, 3]; const [first, second] = numbers;//각 요소를 순서대로 변수로 추출한다.
-
객체
const person = { name: 'John', age: 30 }; // 객체의 프로퍼티 분해하여 각 변수로 할당. const { name, age } = person; console.log(name); // John console.log(age); // 30 // 객체의 프로퍼티를 다른 이름으로 추출 const { name: personName, age: personAge } = person; console.log(personName); // John console.log(personAge); // 30
-