๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JS

[JavaScript] : Import / Export ๋ชจ๋“ˆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•.

by ๊ถŒ์Šพํ–„ 2023. 6. 5.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“ˆ์ด๋ž€, ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ , ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•จ์— ์žˆ์–ด์„œ๋„ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

src = "import ํ•œ js ํŒŒ์ผ"

import


export

type = "module"


src๋กœ html ํŒŒ์ผ๊ณผ, js ํŒŒ์ผ ์—ฐ๋™ํ•˜๊ธฐ.
  • ์ƒˆ๋กœ์šด html ํŒŒ์ผ์— ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ , live server๋ฅผ ์‹คํ–‰ํ•ด์„œ, ์ฝ˜์†”๋กœ ์ž‘๋™ ํ™•์ธ์„ ํ•ด๋ณด์•˜๋‹ค.
// html ํŒŒ์ผ์—์„œ live server ์—ด์–ด ์ฝ˜์†”๋กœ๊ทธ ํ™•์ธ
<script>
    function getLengthOfString(str) {
        return +str.length;
    }
    const result = getLengthOfString('abcde');
    console.log(result); // 5
</script>

 

์ •์ƒ์ž‘๋™ ํ™•์ธ ์™„๋ฃŒ.

html ํŒŒ์ผ๊ณผ js ํŒŒ์ผ๋กœ ์œ„ ์ฝ”๋“œ ๋ถ„๋ฆฌ.

์œ„์ฒ˜๋Ÿผ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋ถ„๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

// index.html ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

<script src="./main.js"></script>
// main.js ํŒŒ์ผ ์ž…๋‹ˆ๋‹ค.

function getLengthOfString(str) {
    return +str.length;
}
const result = getLengthOfString('abcde');
console.log(result); // 5

์ด์ œ ๋” ์ด์ƒ html ํŒŒ์ผ์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ,

์ด๋ ‡๊ฒŒ ํŒŒ์ผ์„ ๋ถ„๋ฆฌ์‹œ์ผœ๋„, script์˜ ์›์ฒœ์ด main.js ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, html ํŒŒ์ผ์—์„œ live server๋ฅผ ์—ด์–ด์„œ ์ฝ˜์†”๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด๋„, ์ •์ƒ์ ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

src ์˜ ๋œป.

src = source ์˜ ์•ฝ์ž


์ƒˆ๋กœ์šด js ํŒŒ์ผ์ธ test.js ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

Export
'์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์•ˆ' ์—์„œ ํ•จ์ˆ˜, ๋ณ€์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ์™ธ๋ถ€๋กœ ๊ณต๊ฐœ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
// test.js ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

// Export ์‚ฌ์šฉ๋ฒ•

export const result = getLengthOfString('abcde');
// ์™ธ๋ถ€์— ๊ณต๊ฐœํ•˜๊ณ ์ž ํ•˜๋Š” ํ•จ์ˆ˜, ๋ณ€์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋ช… ์•ž์— export ๋ฅผ ์จ์ค€๋‹ค.
// test.js ํŒŒ์ผ ์ž…๋‹ˆ๋‹ค.

export function getLengthOfString(str) {
    return +str.length;
}
export const result = getLengthOfString('abcde');

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

Import
'์™ธ๋ถ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ' ์—์„œ ํ•จ์ˆ˜, ๋ณ€์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
// main.js ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

// Import ์‚ฌ์šฉ๋ฒ•

import { ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ์€ ํ•จ์ˆ˜๋ช… ๋˜๋Š” ๋ณ€์ˆ˜๋ช…, ํด๋ž˜์Šค๋ช… } from "./test.js";
// main.js ํŒŒ์ผ ์ž…๋‹ˆ๋‹ค.

import { getLengthOfString, result } from './test.js';
console.log(result);

์œ„์ฒ˜๋Ÿผ ์„ธํŒ…์„ ์™„๋ฃŒ ํ›„ index.html ์—์„œ ์ฝ˜์†”๋กœ๊ทธ๊ฐ€ ์ž˜ ์ฐํžˆ๋Š”์ง€ ํ™•์ธ.


Syntax Error (๊ตฌ๋ฌธ ์˜ค๋ฅ˜)
Uncaught SyntaxError: Cannot use import statement outside a module
๋ชจ๋“ˆ ์™ธ๋ถ€์—์„œ import ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ณผ์ • ์ง„๋‹จ ๋ฐ ํ•ด๊ฒฐ

1. export ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋ฅผ ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ๊ณต๊ฐœ๋ฅผ ํ•ด์ฃผ์—ˆ๊ณ ,

2. import ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ, test.js ํŒŒ์ผ์˜ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋ฅผ main.js ๋กœ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉ์€ ํ–ˆ์œผ๋‚˜,

3. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ์„ index.html ํŒŒ์ผ์—์„œ ๋ถˆ๋Ÿฌ์˜ฌ๋ ค๋ฉด, script ํƒœ๊ทธ์— type="module" ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

<!-- index.html ํŒŒ์ผ ์ž…๋‹ˆ๋‹ค. -->
<script type="module" src="./main.js"></script>

์ด๋ ‡๊ฒŒ ์„ธํŒ…์„ ์™„๋ฃŒํ•œ๋‹ค๋ฉด,

๋ชจ๋“ˆ ์ •์ƒ ํ™•์ธ.

์ •์ƒ์ ์œผ๋กœ console.log ๊ฐ€ ์ž˜ ์ฐํžˆ๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

#javascript_๋ชจ๋“ˆ #import #export #type_module #src #syntaxerror #jsํŒŒ์ผ๋ถ„๋ฆฌ