import vs require , Destructuring Assignment
모듈 불러오기의 여러 방법
1. 모듈 관리 방법
- 모듈(완성된 부품)
- 프로그램 구성 요소. 데이터와 함수를 하나로 묶은 단위
1. require ( CommonJS) /exports
```jsx const express = require(“express”);
const { readFile } = require(“fs”); //Destructuring Assignment /*
fs 전체 모듈을 가져오는 게 아닌, fs의 readfile만 가져온다! */ module.exports = name;- Node.js의 기본 모듈 시스템. - 동기적으로 로드 ( 모듈 로딩이 완료 될 때까지 실행이 중지됨) - 성능 저하 - 실행 중 필요한 모듈을 조건에 따라 불러 올 수 있음. - 기본 지원 - export된 객체 반환 - Node.js에서 주로 사용됨! ### exports 1. 여러 개의 객체를 내보낼 경우 →exports.변수 의 개별 속성으로 할당 ```jsx exports.myVar = 42; exports.myFunction = function () { return "Hello, world!"; }; ``` 2. 딱 하나의 객체를 내보낼 경우 →module.exports = 객체 자체에 할당 ```jsx module.exports = { myVar: 42, myFunction: function () { return "Hello, world!"; }, }; ``` ## 2. import (ES6) /export ```jsx 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
-