๐ŸŸจ JavaScript/๋ชจ๋“ˆ

[JavaScript] ๋ชจ๋“ˆํ™”๊ฐ€ ํ•„์š”ํ•œ ์ด์œ (Module)

10000COW 2023. 1. 24. 22:29
728x90

Module์ด๋ž€?

์ฝ”๋“œ๋ฅผ ํ•ด๋‹น ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ๋งŒ ํ•œ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ฒƒ

์ฆ‰, ํ•œ ๋ชจ๋“ˆ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ํ•œ ํŒŒ์ผ ์•ˆ์— ์ž‘์„ฑ๋ผ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋งํ•œ๋‹ค.

 

๋ชจ๋“ˆํ™”๋ฅผ ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“ˆ(์ฆ‰ ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ)์—์„œ๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ์— ์žˆ๋Š” ๊ฒƒ๋“ค์„ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ณผ ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์–ด๋–ค ๋ชจ๋“ˆ์˜ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ œ๊ณตํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“ˆ์—์„œ๋Š” export๋ฅผ, ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“ˆ์—์„œ๋Š” import๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.


Module์˜ ํ•„์š”์„ฑ

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์ด ์žˆ์„ ๋•Œ ๊ฐ๊ฐ์˜ ํŒŒ์ผ์˜ ๋ชจ๋“  ์ฝ”๋“œ๋“ค์„ global scope๋กœ ์ธก์ •๋œ๋‹ค.

์ฆ‰ ํŒŒ์ผ ์•ˆ์— ์ž‘์„ฑ๋œ ํ•จ์ˆ˜๋“ค์€ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์ด๋ผ๋ฉด window์—, ๋…ธ๋“œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด global์— ๋“ฑ๋ก๋œ๋‹ค.

 

๋ฌธ์ œ๋Š” ์–ด๋–ค ํŒŒ์ผ๋“ค์—์„œ ์ค‘๋ณต์ ์ธ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๊ฐ€ ๊ตฌํ˜„๋ผ์žˆ์„ ๋•Œ ์ด๋ฆ„ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๊ทœ๋ชจ๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ ํฐ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค.


Module ์‚ฌ์šฉ๋ฒ•

1๏ธโƒฃ html์—์„œ JSํŒŒ์ผ์„ script๋กœ ์—ฐ๊ฒฐํ•  ๋•Œ type์„ module๋กœ ์ง€์ •ํ•ด์ค€๋‹ค.

<script type=“module” src=“๋ชจ๋“ˆํŒŒ์ผ์ด๋ฆ„.js”></script>

 

2๏ธโƒฃ export์— default๋ฅผ ๋ถ™์ด๋ฉด default๋กœ export๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ , default๋Š” ๋‹จ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜์—๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

importํ•  ๋•Œ default๋Š” ๋”ฐ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์ด์™ธ์˜ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋Š” {  }๋ฅผ ์‚ฌ์šฉํ•ด importํ•ด์ค€๋‹ค.

 

calculator.js

export function add(a, b) {
  return a + b;
}

export const price = 1000;

export function printPrice() {
  console.log('price: ', price);
}

 

mathExam.js

import calcaulator, {printPrice}  from './10-3-module1.js';
console.log(calculator.add(1, 2));
calculator.printPrice();
calculator.price;
728x90