티스토리 뷰

JavaScript

[JS중급] JS 모듈

염두리안 2024. 11. 21. 01:45
728x90
반응형
  • 모듈이란? 파일을 분리해서 연관된 코드들을 묶어두는 것 | 한 파일에서 구현하고자 하는 게 더 명확해짐 | 코드 재사용 가능
  • 모듈파일의 조건
    • 모듈 스코프 : 모듈 파일들이 가지는 독립적인 스코프 | 모듈 내에서 선언한 변수, 함수는 그 모듈 안에서만 사용되어야 함
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>TEST</title>
</head>
<body>
	// html에서 모듈 선언: type="module" 지정
  <script type="module" src="./test.js"></script>
</body>
</html>
  • 모듈 문법
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>TEST</title>
</head>
<body>
	<!-- main에서 불러오기 때문에 sub.js는 부를 필요 X -->
    <script type="module" src="./main.js"></script>
</body>
</html>
// sub.js
export const title = 'hello!';
export function print(value){
    console.log(value);
}

// main.js - 모듈 문법
import {title, print} from './sub.js'
print(title);

  • 이름 바꾸기
// import {변수이름 as 바꿀변수이름} from 파일명
import {title as printTitle, print} from './sub.js'
const title = 'memo';
print(title); // memo
  • 한꺼번에 다루기 - 모듈 파일에서 내보내는 모든 대상을 한꺼번에 import 하기 : *(와일드카드문자)사용
    • 단, 필요 없는 것까지 모두 불러오기 때문에 상황에 따라 적절히 사용해야 함
// printer.js에서 내보내는 모든 대상이 printJS에 전달
import * as printerJS from './printer.js';

// 객체형식으로 사용 가능
console.log(printerJS.title);
printerJS.print(membersTitle);
// export 한꺼번에 다루기
// export 다음에 내보낼 대상을 { }로 묶어주기
// 선언문마다 항상 export 키워드를 붙일 필요 X
const title = 'hello!';
function print(value){
    console.log(value);
}
// export에서 미리 as 키워드 사용 가능
export {title as printTitle, print};
  • default export : 한 파일에 하나의 대상만 내보낼 수 있음 
export default title;
export default 'hello'; // 문자열도 내보내기 가능
// import에서 선언시 as로 이름을 붙여줘야 함
default as title,

// 밖에 있는 것이 default로 named export와 구분 가능
import title, {
	name as membersName,
    data as membersData
} from './sub.js';

// 와일드카드문자 사용시
import * as membersJS from './members.js';
console.log(membersJS.default); // 이렇게 접근 가능

 

728x90
반응형
최근에 올라온 글
최근에 달린 댓글
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total
Today
Yesterday
반응형