[JavaScript]๋ชจ๋“ˆ

2 ๋ถ„ ์†Œ์š”

๋ชจ๋“ˆ

๋ชจ๋“ˆ์€ ๊ฐ„๋‹จํ•˜๊ฒŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ํ•˜๋‚˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๊ณ  ๋งŽ์€ ์–‘์˜ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๊ฐ๊ฐ์˜ ํŒŒ์ผ๋กœ ๋‚˜๋ˆ  ๊ด€๋ฆฌํ•˜๋ฉด

  1. ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ ,
  2. ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ์Šค์ฝ”ํ”„

๋ชจ๋“ˆ ํŒŒ์ผ ์•ˆ์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์™ธ๋ถ€์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ๋ง‰์•„์•ผ ํ•˜๋Š”๋ฐ์š”. ๋‹ค์‹œ ๋งํ•ด ๋ชจ๋“ˆ์€ ํŒŒ์ผ ์•ˆ์—์„œ ๋ชจ๋“ˆ ํŒŒ์ผ๋งŒ์˜ ๋…๋ฆฝ์ ์ธ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HTMLํŒŒ์ผ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๋ชจ๋“ˆ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๊ฒŒ ํ•˜๋ ค๋ฉด scriptํƒœ๊ทธ์— type์†์„ฑ์„ module์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<body>
  <script type="module" src="index.js"></script>
</body>

๋ชจ๋“ˆ ๋ฌธ๋ฒ•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“ˆ ๋ฌธ๋ฒ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ export์™€ import ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“ˆ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ์—์„œ ์™ธ๋ถ€๋กœ ๋‚ด๋ณด๋‚ด๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ export ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๋‚ด๋ณด๋‚ด๊ณ , ๋ชจ๋“ˆ ํŒŒ์ผ์—์„œ ๋‚ด๋ณด๋‚ธ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋“ค์€ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ import ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

// printer.js
export const title = 'CodeitPrinter';

export function print(value) {
  console.log(value);
};
// index.js
import { title, print } from './printer.js';

print(title);

์ด๋ฆ„ ๋ฐ”๊ฟ” import ํ•˜๊ธฐ

import ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ as ํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด importํ•˜๋Š” ๋Œ€์ƒ๋“ค์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. import ํ•  ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์กฐ๊ธˆ ๋” ๊ฐ„๊ฒฐํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜, ํ˜น์€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ ํ™œ์šฉํ•˜๋ฉด ์ข‹๊ฒ ์ฃ ? ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์„œ import ํ•˜๋ฉด ์—ฌ๋Ÿฌ ํŒŒ์ผ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋Œ€์ƒ๋“ค์˜ ์ด๋ฆ„์ด ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

import { title as printerTitle, print, printArr } from './printer.js';
import { title, data as members } from './members.js';

printer(title);
arrPrinter(members);

ํ•œ๊บผ๋ฒˆ์— import ํ•˜๊ธฐ

importํ•  ๋•Œ ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž(*)์™€ as๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ชจ๋“ˆ ํŒŒ์ผ์—์„œ exportํ•˜๋Š” ๋ชจ๋“  ๋Œ€์ƒ์„ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import * as printerJS from './printer.js';

console.log(printerJS.title); // CodeitPrinter
console.log(printerJS.print); // ฦ’ print(value) { console.log(value); }

ํ•œ๊บผ๋ฒˆ์— export ํ•˜๊ธฐ

๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์•ž์— ๋งค๋ฒˆ export ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋ชจ์•„ ํ•œ๊บผ๋ฒˆ์— ๋‚ด๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ as ํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์„œ exportํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

const title = 'CodeitPrinter';

function print(value) {
  console.log(value);
}

function printArr(arr) {
  arr.forEach((el, i) => {
    console.log(`${i + 1}. ${el}`);
  });
}

export { title as printerTitle, print, printArr };

default export

export๋ฅผ ํ•  ๋•Œ default ํ‚ค์›Œ๋“œ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“ˆ ํŒŒ์ผ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ exportํ•  ๋Œ€์ƒ์„ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“ˆ ํŒŒ์ผ์—์„œ export ๋Œ€์ƒ์ด ํ•˜๋‚˜๋ผ๋ฉด, ์ด default ํ‚ค์›Œ๋“œ๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์กฐ๊ธˆ ๋” ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š”๋ฐ์š”.

const title = 'CodeitPrinter';

function print(value) {
  console.log(value);
}

export default print;

default export๋Š” importํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ,

import { default as printerJS } from './printer.js';

console.log(printerJS.title); // CodeitPrinter
console.log(printerJS.print); // ฦ’ print(value) { console.log(value); }

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ•์•ฝํ˜• ๋ฌธ๋ฒ•์œผ๋กœ import ํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

import printerJS from './printer.js';

console.log(printerJS.title); // CodeitPrinter
console.log(printerJS.print); // ฦ’ print(value) { console.log(value); }

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ