🐨CoalaCoding
Docs▾
JavaScriptReactHTML & CSSBackendAI & LLMDev ToolsCreative
B반1
👾숏츠
🙉B반2
게시판
🐨CoalaCoding

개발자를 위한 한국어 웹 기술 문서

문서

  • JavaScript
  • React
  • HTML & CSS
  • Backend
  • AI & LLM
  • Dev Tools
  • Creative

커뮤니티

  • 게시판
  • 예제 모음

기타

  • 관리자

정책

  • 소개
  • 개인정보처리방침
  • 이용약관
  • 연락처
© 2026 CoalaCoding. All rights reserved.
  • 1. 자바스크립트 기초
  • 2. class
  • 3. ai이미지-생성기-구현
  • 4. 자료형
  • 5. async--await
  • 6. 변수와자료형
  • 7. xmlhttprequest-부터axios-까지
  • 8. 1-자바스크립트와-ecma
  • 9. reduce
  • 10. 캘린더-만들기
  • 11. generator
  • 12. destructuring
  • 13. spread-operator
  • 14. module-export-import
  • 15. http-통신-이란
  • 16. 시작
  • 17. 2-자바스크립트-코드-실행-과정-및-용어정리
  • 18. map
  • 19. 동기와-비동기
  • 20. 연산자
  • 21. promise-thencatch
  • 22. 3-실행컨텍스트와-스코프
  • 23. 콜백-함수
  • 24. 제어문
  • 25. 4-클로저
  • 26. windowlocation
  • 27. 함수
  • 28. 5-객체
  • 29. 이벤트
  1. 홈
  2. 문서
  3. JavaScript
  4. JavaScript 기초
  5. 14. module-export-import

14. module-export-import

🔗모듈학습 🔗MDN모듈문서

Info: 📢 프로그래밍에서 모듈 이란 프로그램을 구성하는 구성요소의 일부 다른 사람의 코드나, 내가 잘게 쪼개 놓은 코드를 재사용하고 싶을 때 쓴다


  • export,default

✏️module.html

<!DOCTYPE html>
<html lang="ko">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <h1>modules</h1>
  <button>say</button>
  <script>
    document.querySelector('button').addEventListener('click', () => { say("망고") })
    function say(user) {
      alert(`'hello',${user}`)
    }
  </script>
</body>

</html>

일반 html 문서작성후 모듈화 한다


✏️say.js

/*export 를 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근가능*/
export function say(user){
  alert(`Hello,${user}!`)
}

✏️module.html

...
<body>

  <script type="module">
    /* import 를 사용해 say.js의 함수 say를 사용 */

    import {say} from './say.js';  
	   document.querySelector('button').addEventListener('click', () => { say("망고") })

	</script>
</body>
</html>

실행화면

Info: 📢 주의사항 : 라이브서버에서 할것

  • 모듈은 로컬 파일에서 동작하지 않고, HTTP 또는 HTTPS 프로토콜을 통해서만 동작합니다.
  • 모듈은 자신만의 스코프가 있습니다. 따라서 모듈 내부에서 정의한 변수나 함수는 다른 스크립트에서 접근할 수 없습니다. 브라우저 환경에서도 <script type="module"> 을 사용해 모듈을 만들면 독립적인 스코프가 만들어집니다.
  • 동일한 모듈이 여러 곳에서 사용되더라도 모듈은 최초 호출 시 단 한 번만 실행됩니다. 실행 후 결과는 이 모듈을 가져가려는 모든 모듈에 내보내 집니다.

[여러 객체 export & import 하기]

✏️main.js

function funcA() {
	console.log("functionAA");
}
function funcB(test) {
	console.log(test, "functionbb");
}
const varC = "hello";
export { funcA, funcB, varC };

import 할 때는 \{\} 를 이용합니다. ✏️module.html

<script type="module">
  import {funcA,funcB,varC} from './main.js';  
  funcA()
  funcB(varC)
</script>

실행화면


default export와 named export 차이점

1. Default Export

  • default 로 선언된 모듈은 하나의 파일에서 단 하나의 변수 또는 클래스 등만 export 할 수 있다.
//app.js
const app= () => {
     ...
}export default app
  • import 할 때는 아무 이름으로나 import 가능하다.
//app-child1.js
import ypp from '../app'

또는

//app-child2.js
import bpp from '../app'

이렇게 사용하는것이 가능

2. named export

  • 한 파일 내에서 여러 변수/클래스 등등을 export 하는 것이 가능하다.
export class MyFirstClass { /* ... */ }
export class MySecondClass { /* ... */ }
  • 다만, import 시 {} 안에다가 export 된 이름과 동일하게 설정해야 한다.
import { MyFirstClass, MySecondClass } from './MyClass'
  • 다른 이름으로 import 할 수 있으나 아래처럼 **as**를 사용해야 한다.
import { MyFirstClass as BlahBlahClass, MySecondClass } from './MyClass'
  • as 를 사용하면 한 파일에 있는 클래스/변수들을 한 번에 import 할 수 있다.
import * as Hello from './MyClass'
// 이렇게 import 하면 Hello.MyFirstClass 이런식으로 사용해야 함

목차

  • **1. Default Export**
  • **2. named export**