자바스크립트로 코드를 작성하다보면 여러가지 함수를 만들게 된다.
이 함수들은 하나의 기능을 만들기 위해 사용이 되거나 계산을 하기 위해 사용이 되거나 등등 다양한 방법으로 사용이 된다.
하지만 하나의 파일에서 계속 작성하다보면 코드가 너무 길어지고 그렇게 되면 코드를 고쳐야 할 때 불편하기도 하고 가독성도 떨어지게 된다.
따라서, 이러한 문제점을 해결하기 위해 모듈이라는 것이 생겼다.
개발 규모가 커지면서 모듈 시스템으로 구성한다.
엄격 모드
- 일반적인 JS에서 허용되는 실수를 제한
- 까다롭게 문법 검사하는 모드
export(내보내기)
const func = () => {
console.log("export");
}
// export 하기
module.exports = func;
require(불러오기)
const func = require("./export한 파일 경로");
func();
commonJS는 서버 위에서 작동하고 동기적으로 작동하기 때문에 서버가 아닌 브라우저와 동기적이지 않고 비동기적으로 동작하기 위한 욕구로 AMD라는 모듈 시스템이 등장하게 되었다.
define (내보내기)
define(['./require.js'], function(req) {
function sum(num1, num2) {
return num1 + num2;
}
return { sum : sum }
});
require (불러오기)
require(['./amdCalc.js'], function(fn) {
console.log(fn.sum(10, 20));
})
최신 브라우저에서만 사용 가능하다. 또한, 최신 브라우저가 기본적으로 모듈 기능을 지원하기 시작했다.
export(내보내기)
1) 여러 객체를 내보내는 방법
export func1 = () => {
console.log("export 방법 1")
}
const func2 = () => {
console.log("export 방법 2");
}
export { func2 };
2) 단일 객체를 내보내는 방법
const func1 = () => {
console.log("export 방법 1")
}
const func2 = () => {
console.log("export 방법 2");
}
export default func1;
또는
export default {
const func1 = () => {
console.log("export 방법 1")
}
const func2 = () => {
console.log("export 방법 2");
}
}
import(불러오기)
1) 여러 객체를 불러오는 방법
// Destructuring 문법 : 여러 객체를 불러올 때 필요한 객체만 선택적으로 불러오는 방법
import { func1, func2 } from "./export한 경로.js";
또는
// Alias 문법 : 전체 객체를 가지고 와서 별칭을 붙이고 그 별칭을 통해 접근하는 방법
import * as func from "./export한 경로.js";
2) 단일 객체를 불러오는 방법
import func from "./export한 경로.js";
모듈을 사용하면 정말 편리하다. 확실히 기능들을 모듈로 나누어서 하다 보니 코드를 읽기도 편하고 수정하기도 훨씬 편하다. 모듈 사용을 꼭 하자. 권장이 아닌 필수 !