JavaScript/Basic

모듈(Module)

yunajoe 2022. 12. 31. 13:45

모듈이 되는 파일은 그 파일만의 '독립적'인 스코프를 가져야 한다

모듈 파일 내부에서 선언한 변수나 함수는 그 파일 안에서만! 사용을 해야 한다

각각의 모듈 파일들이 다른 모듈과는 스코프를 공유할 수 없도록 해야한다 

 

<!DOCTYPE html>
<html lang="en">
<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>   
  <script src="printer.js"></script>   
  <script src="index.js"></script>
</body>
</html>
// printer.js
const title = 'Printer모듈입니다'; 

function print(value){
    console.log(value);
}
// index.js

// printer.js에 있는 print(value)
print(title);  

// 이러한 형태의 모듈은 문제가 된다 
// printer.js에 있는 같은 이름의 함수를 여기에다가 적는다면?! printer.js의 함수가 지워진다
function print(value) {
    console.log('index모듈에있는 print함수입니다')
}

 

다른모듈파일에서 사용할 수 없게 하려면?!

-   script type="module"을 붙인다.

- 내보내고 싶은 변수나 함수에 export를 붙여주고 사용하고 싶은 변수나 함수에 import를 붙여주면 된다

<!DOCTYPE html>
<html lang="en">
<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>   
  <script type="module" src="index.js"></script>
</body>
</html>
// printer.js

export const title = 'Printer모듈입니다';  
export function print(value){
    console.log(value);
}
// index.js
import { title, print } from './printer.js';  
print(title);