๋ชจ๋ ํด์์ ์ ์ดํ๊ณ , ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๋ฉฐ, ๋ค์ํ ํ๊ฒฝ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ํฌํธ ๋งต์ ์ดํด๋ณด์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ์ํฌํธ ๋งต(Import Maps): ๋ชจ๋ ํด์ ๋ฐ ์์กด์ฑ ๊ด๋ฆฌ์ ํ์
๋์์์ด ๋ฐ์ ํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์์กด์ฑ์ ํจ์จ์ ์ด๊ณ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ธฐ์กด์ ์ ๊ทผ ๋ฐฉ์๋ ๊ธฐ๋ฅ์ ์ผ๋ก๋ ์ถฉ๋ถํ์ง๋ง, ์ข ์ข ๋ณต์ก์ฑ๊ณผ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ด๋ํ์ต๋๋ค. ๋ฐ๋ก ์ด๋, ๊ฐ๋ฐ์์๊ฒ ๋ชจ๋ ํด์์ ๋ํ ์ ๋ก ์๋ ์ ์ด๊ถ์ ๋ถ์ฌํ์ฌ ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์๋ก์ด ์๋๋ฅผ ์ฌ๋ ํ๊ธฐ์ ์ธ ๊ธฐ๋ฅ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ํฌํธ ๋งต์ด ๋ฑ์ฅํ์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ํฌํธ ๋งต์ด๋ ๋ฌด์์ธ๊ฐ์?
ํต์ฌ์ ์ผ๋ก ์ํฌํธ ๋งต์ ๋ชจ๋ ์ง์ ์(import
๋ฌธ์์ ์ฌ์ฉ๋๋ ๋ฌธ์์ด)๋ฅผ ํน์ URL์ ๋งคํํ๋ JSON ๊ฐ์ฒด์
๋๋ค. ์ด ๋งคํ์ ํตํด ๋ธ๋ผ์ฐ์ ๋ ํ์ผ ์์คํ
์ด๋ ๊ธฐ์กด ํจํค์ง ๊ด๋ฆฌ์์๋ง ์์กดํ์ง ์๊ณ ๋ ๋ชจ๋์ ํด์ํ ์ ์์ต๋๋ค. ์ฝ๋์์ ์ด๋ป๊ฒ ์ฐธ์กฐ๋๋์ง์ ์๊ด์์ด ๊ฐ ๋ชจ๋์ ์ด๋์ ์ฐพ์์ผ ํ๋์ง ๋ธ๋ผ์ฐ์ ์ ์ ํํ ์๋ ค์ฃผ๋ ์ค์ ๋๋ ํ ๋ฆฌ๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
์ํฌํธ ๋งต์ HTML์ <script type="importmap">
ํ๊ทธ ์์ ์ ์๋ฉ๋๋ค. ์ด ํ๊ทธ๋ ๋ธ๋ผ์ฐ์ ์ ๋ชจ๋ ์ํฌํธ๋ฅผ ํด์ํ๋ ๋ฐ ํ์ํ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค.
์์:
<script type="importmap">
{
"imports": {
"lodash": "https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js",
"my-module": "/modules/my-module.js",
"lit": "https://cdn.jsdelivr.net/npm/lit@3/+esm"
}
}
</script>
์ด ์์์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ import _ from 'lodash';
๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์ง์ ๋ CDN URL์์ Lodash ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก import * as myModule from 'my-module';
์ /modules/my-module.js
ํ์ผ์์ ๋ชจ๋์ ๋ก๋ํฉ๋๋ค.
์ํฌํธ ๋งต ์ฌ์ฉ์ ์ด์
์ํฌํธ ๋งต์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์๋ง์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. ํฅ์๋ ๋ชจ๋ ํด์ ์ ์ด
์ํฌํธ ๋งต์ ๋ชจ๋์ด ํด์๋๋ ๋ฐฉ์์ ๋ํ ์ธ๋ฐํ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ์ง์ ์๋ฅผ ํน์ URL์ ๋ช ์์ ์ผ๋ก ๋งคํํ์ฌ ์์กด์ฑ์ ์ ํํ ๋ฒ์ ๊ณผ ์์ค๊ฐ ์ฌ์ฉ๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด๋ ํจํค์ง ๊ด๋ฆฌ์๋ ์๋ ํ์ผ ๊ฒฝ๋ก์๋ง ์์กดํ ๋ ๋ฐ์ํ ์ ์๋ ๋ชจํธ์ฑ์ ์ ๊ฑฐํ๊ณ ์ ์ฌ์ ์ธ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
์์: ํ๋ก์ ํธ ๋ด ๋ ๊ฐ์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ผํ ์์กด์ฑ์ ๋ค๋ฅธ ๋ฒ์ (์: Lodash)์ ํ์๋ก ํ๋ ์๋๋ฆฌ์ค๋ฅผ ์์ํด ๋ณด์ธ์. ์ํฌํธ ๋งต์ ์ฌ์ฉํ๋ฉด ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๋ณ๋์ ๋งคํ์ ์ ์ํ์ฌ ์ถฉ๋ ์์ด ๋ ๋ค ์ฌ๋ฐ๋ฅธ ๋ฒ์ ์ ๋ฐ๋๋ก ํ ์ ์์ต๋๋ค:
<script type="importmap">
{
"imports": {
"lodash": "https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js",
"library-a/lodash": "https://cdn.jsdelivr.net/npm/lodash@3.10.1/lodash.min.js"
}
}
</script>
์ด์ import _ from 'lodash';
๋ ๋ฒ์ 4.17.15๋ฅผ ์ฌ์ฉํ๊ณ , library-a
๋ด์์ import _ from 'library-a/lodash';
๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ ๋ฒ์ 3.10.1์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
2. ๋จ์ํ๋ ์์กด์ฑ ๊ด๋ฆฌ
์ํฌํธ ๋งต์ ๋ชจ๋ ํด์ ๋ก์ง์ ํ ๊ณณ์ ์ค์ ์ง์คํํ์ฌ ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค. ์ด๋ก ์ธํด ํน์ ์๋๋ฆฌ์ค์์๋ ๋ณต์กํ ๋น๋ ํ๋ก์ธ์ค๋ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ํ์ ์๊ฒ ๋์ด, ํนํ ์๊ท๋ชจ ํ๋ก์ ํธ๋ ํ๋กํ ํ์ ์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์ด ๋ ๊ฐ๋จํ๊ณ ์ ๊ทผํ๊ธฐ ์ฌ์์ง๋๋ค.
๋ชจ๋ ์ง์ ์๋ฅผ ๋ฌผ๋ฆฌ์ ์์น์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ์์กด์ฑ์ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ด๋ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๊ณ ์ ๋ฐ์ดํธ ์ค ์ค๋ฅ ๋ฐ์ ์ํ์ ์ค์ ๋๋ค.
3. ์ฑ๋ฅ ํฅ์
์ํฌํธ ๋งต์ ๋ธ๋ผ์ฐ์ ๊ฐ CDN(์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ)์์ ์ง์ ๋ชจ๋์ ๊ฐ์ ธ์ค๋๋ก ํ์ฉํ์ฌ ์ฑ๋ฅ ํฅ์์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค. CDN์ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด ๊ณณ์ ์ฝํ ์ธ ๋ฅผ ์บ์ํ๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ๋คํธ์ํฌ๋ก, ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ๋ค์ด๋ก๋ ์๋๋ฅผ ํฅ์์ํต๋๋ค. ๋ํ, ๋ณต์กํ ๋น๋ ํ๋ก์ธ์ค๊ฐ ํ์ ์์ด์ง๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
์์: ๋ชจ๋ ์์กด์ฑ์ ํ๋์ ํฐ ํ์ผ๋ก ๋ฒ๋ค๋งํ๋ ๋์ , ์ํฌํธ ๋งต์ ์ฌ์ฉํ์ฌ ํ์์ ๋ฐ๋ผ CDN์์ ๊ฐ๋ณ ๋ชจ๋์ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ํนํ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ฌ์ฉ์์๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
4. ๋ณด์ ๊ฐํ
์ํฌํธ ๋งต์ ์์กด์ฑ์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ ๋ณด์์ ๊ฐํํ ์ ์์ต๋๋ค. ์ํฌํธ ๋งต์์ SRI(Subresource Integrity) ํด์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ธ์จ ๋ชจ๋์ด ๋ณ์กฐ๋์ง ์์๋์ง ํ์ธํ ์ ์์ต๋๋ค. SRI ํด์๋ ๋ค์ด๋ก๋๋ ๋ฆฌ์์ค๊ฐ ์์๋ ์ฝํ ์ธ ์ ์ผ์นํ๋์ง ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฒ์ฆํ ์ ์๊ฒ ํ๋ ์ํธํ ์ง๋ฌธ์ ๋๋ค.
์์:
<script type="importmap">
{
"imports": {
"lodash": "https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"
},
"integrity": {
"https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js": "sha384-ZjhEQh0yTDUwVfiuLd+J7sWk9/c6xM/HnJ+e0eJ7x/mJ3c8E+Jv1bWv6a+L7xP"
}
}
</script>
integrity
์น์
์์๋ ๊ฐ URL์ ๋ํ SRI ํด์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ค์ด๋ก๋๋ ํ์ผ์ด ์ ๊ณต๋ ํด์์ ์ผ์นํ๋์ง ํ์ธํ์ฌ ์
์ฑ ์ฝ๋ ์คํ์ ๋ฐฉ์งํฉ๋๋ค.
5. ES ๋ชจ๋๊ณผ์ ์ํํ ํตํฉ
์ํฌํธ ๋งต์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค ๋ชจ๋ ์์คํ ์ธ ES ๋ชจ๋๊ณผ ์ํํ๊ฒ ์๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ก ์ธํด ์ด๋ฏธ ES ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ธฐ์กด ํ๋ก์ ํธ์ ์ํฌํธ ๋งต์ ์ฝ๊ฒ ๋์ ํ ์ ์์ต๋๋ค. ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ฐฉํดํ์ง ์๊ณ ์ ์ง์ ์ผ๋ก ์์กด์ฑ์ ์ํฌํธ ๋งต์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค.
6. ์ ์ฐ์ฑ๊ณผ ์ ์์ฑ
์ํฌํธ ๋งต์ ์๋ฐ์คํฌ๋ฆฝํธ ์์กด์ฑ ๊ด๋ฆฌ์ ์์ด ํ์ ์ถ์ข ์ ๋ถํํ๋ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ๋ฒ์ ์ผ๋ก ์ฝ๊ฒ ์ ํํ๊ฑฐ๋, ๋ค๋ฅธ CDN์ ์ฌ์ฉํ๊ฑฐ๋, ์์ฒด ์๋ฒ์์ ๋ชจ๋์ ๋ก๋ํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ์ ์์ฑ ๋๋ถ์ ์ํฌํธ ๋งต์ ๊ด๋ฒ์ํ ์น ๊ฐ๋ฐ ์๋๋ฆฌ์ค์์ ์ ์ฉํ ๋๊ตฌ๊ฐ ๋ฉ๋๋ค.
์ํฌํธ ๋งต์ ์ฌ์ฉ ์ฌ๋ก
์ํฌํธ ๋งต์ ๋ค์ํ ์น ๊ฐ๋ฐ ์ปจํ ์คํธ์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค:
1. ํ๋กํ ํ์ดํ ๋ฐ ๋น ๋ฅธ ๊ฐ๋ฐ
์ํฌํธ ๋งต์ ๋ณต์กํ ๋น๋ ํ๋ก์ธ์ค๊ฐ ํ์ ์๊ธฐ ๋๋ฌธ์ ํ๋กํ ํ์ดํ ๋ฐ ๋น ๋ฅธ ๊ฐ๋ฐ์ ์ด์์ ์ ๋๋ค. ๋น๋ ๋๊ตฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ์ง ์๊ณ ๋ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ์ ์ํ๊ฒ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ธฐ๋ฅ์ ์ง์คํ๊ณ ๋น ๋ฅด๊ฒ ๋ฐ๋ณต ์์ ์ ์ํํ ์ ์์ต๋๋ค.
2. ์ค์ ๊ท๋ชจ ํ๋ก์ ํธ
์ค์ ๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์ํฌํธ ๋งต์ ๊ธฐ์กด ํจํค์ง ๊ด๋ฆฌ์์ ๋ํ ๋จ์ํ๋ ๋์์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ํ ๊ณณ์ ์ค์ ์ง์คํํจ์ผ๋ก์จ ๋ณต์ก์ฑ์ ์ค์ด๊ณ ์ฝ๋๋ฒ ์ด์ค ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ์ด๋ ํนํ ์์กด์ฑ ์๊ฐ ์ ํ์ ์ธ ํ๋ก์ ํธ์ ์ ์ฉํฉ๋๋ค.
3. ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค
์ํฌํธ ๋งต์ ์ค๋๋ ๋ชจ๋ ์์คํ ์ ์์กดํ๋ ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํ๋ํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ชจ๋์ ์ ์ง์ ์ผ๋ก ES ๋ชจ๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์ํฌํธ ๋งต์ ์ฌ์ฉํ์ฌ ์์กด์ฑ์ ๊ด๋ฆฌํจ์ผ๋ก์จ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์์ฑํ์ง ์๊ณ ๋ ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ์ต์ ์ํ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ๊ฐ์ ์ ์ด์ ์ ํ์ฉํ ์ ์์ต๋๋ค.
4. ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)
์ํฌํธ ๋งต์ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์์ ๋ชจ๋ ๋ก๋ฉ์ ์ต์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ํ์์ ๋ฐ๋ผ ๋ชจ๋์ ๋ก๋ํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ด๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ํฌํธ ๋งต์ ๋ํ ๋ชจ๋ ์๊ฐ ๋ง์ SPA์์ ์์กด์ฑ์ ๋ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
5. ํ๋ ์์ํฌ์ ๊ตฌ์ ๋ฐ์ง ์๋ ๊ฐ๋ฐ
์ํฌํธ ๋งต์ ํ๋ ์์ํฌ์ ๊ตฌ์ ๋ฐ์ง ์์ผ๋ฏ๋ก ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๋ค์ํ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์น ๊ฐ๋ฐ์์๊ฒ ๋ค์ฌ๋ค๋ฅํ ๋๊ตฌ๊ฐ ๋ฉ๋๋ค. React, Angular, Vue.js ๋๋ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ , ์ํฌํธ ๋งต์ ์์กด์ฑ์ ๋ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
6. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)
์ฃผ๋ก ํด๋ผ์ด์ธํธ ์ธก ๊ธฐ์ ์ด์ง๋ง, ์ํฌํธ ๋งต์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ์๋๋ฆฌ์ค์ ๊ฐ์ ์ ์ผ๋ก ๋์์ด ๋ ์ ์์ต๋๋ค. ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ผ๊ด๋ ๋ชจ๋ ํด์์ ๋ณด์ฅํจ์ผ๋ก์จ ์ํฌํธ ๋งต์ ํ์ด๋๋ ์ด์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ณ SSR ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค. ์ฌ์ฉ๋๋ SSR ํ๋ ์์ํฌ์ ๋ฐ๋ผ ์ ์คํ ๊ณ ๋ ค์ ์ ์ฌ์ ์ธ ์กฐ๊ฑด๋ถ ๋ก๋ฉ์ด ํ์ํ ์ ์์ต๋๋ค.
์ํฌํธ ๋งต ์ฌ์ฉ์ ์ค์ ์์
์ค์ ์๋๋ฆฌ์ค์์ ์ํฌํธ ๋งต์ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์ค์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์์ 1: ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ CDN ์ฌ์ฉ
ํ๋ก์ ํธ์์ ๋ ์ง ์กฐ์์ ์ํด date-fns
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค. npm์ ํตํด ์ค์นํ๊ณ ๋ฒ๋ค๋งํ๋ ๋์ , ์ํฌํธ ๋งต์ ์ฌ์ฉํ์ฌ CDN์์ ์ง์ ๋ก๋ํ ์ ์์ต๋๋ค:
<script type="importmap">
{
"imports": {
"date-fns": "https://cdn.jsdelivr.net/npm/date-fns@2.29.3/esm/index.js"
}
}
</script>
<script type="module">
import { format } from 'date-fns';
const today = new Date();
console.log(format(today, 'yyyy-MM-dd'));
</script>
์ด ์ฝ๋ ์ค๋ํซ์ CDN์์ date-fns
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๋ํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ๋ ์ง์ ํ์์ ์ง์ ํฉ๋๋ค. CDN ์์น์์ ์ง์ ์ํฌํธํ๋ ๊ฒ์ ์ฃผ๋ชฉํ์ธ์. ์ด๋ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ ์์ฒญ์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์บ์ํ ์ ์๋๋ก ํฉ๋๋ค.
์์ 2: ๋ก์ปฌ ๋ชจ๋ ์ฌ์ฉ
์ํฌํธ ๋งต์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ง์ ์๋ฅผ ๋ก์ปฌ ํ์ผ์ ๋งคํํ ์๋ ์์ต๋๋ค:
<script type="importmap">
{
"imports": {
"my-custom-module": "/modules/my-custom-module.js"
}
}
</script>
<script type="module">
import { myFunction } from 'my-custom-module';
myFunction();
</script>
์ด ์์์์ my-custom-module
์ง์ ์๋ /modules/my-custom-module.js
ํ์ผ์ ๋งคํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋ชจ๋๋ก ๊ตฌ์ฑํ๊ณ ES ๋ชจ๋ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ก๋ํ ์ ์์ต๋๋ค.
์์ 3: ๋ฒ์ ๊ณ ์ ๋ฐ CDN ํด๋ฐฑ
ํ๋ก๋์ ํ๊ฒฝ์์๋ ์์กด์ฑ์ ํน์ ๋ฒ์ ์ ๊ณ ์ ํ๊ณ CDN์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ ํด๋ฐฑ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
<script type="importmap">
{
"imports": {
"react": "https://cdn.jsdelivr.net/npm/react@18.2.0/umd/react.production.min.js",
"react-dom": "https://cdn.jsdelivr.net/npm/react-dom@18.2.0/umd/react-dom.production.min.js"
},
"scopes": {
"./": {
"react": "/local_modules/react.production.min.js",
"react-dom": "/local_modules/react-dom.production.min.js"
}
}
}
</script>
์ฌ๊ธฐ์๋ React์ ReactDOM์ ๋ฒ์ 18.2.0์ผ๋ก ๊ณ ์ ํ๊ณ CDN์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๋ก์ปฌ ํ์ผ๋ก์ ํด๋ฐฑ์ ์ ๊ณตํฉ๋๋ค. scopes
์น์
์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค๋ฅธ ๋ถ๋ถ์ ๋ํด ๋ค๋ฅธ ๋งคํ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ํ์ฌ ๋๋ ํ ๋ฆฌ(./
)์ ๋ชจ๋ ๋ชจ๋์ ๋ํด CDN์ด ์คํจํ๋ฉด ๋ก์ปฌ ๋ฒ์ ์ React ๋ฐ ReactDOM์ ์ฌ์ฉํ๋๋ก ์ง์ ํ๊ณ ์์ต๋๋ค.
๊ณ ๊ธ ๊ฐ๋ ๋ฐ ๊ณ ๋ ค ์ฌํญ
์ํฌํธ ๋งต์ ๋น๊ต์ ์ฌ์ฉํ๊ธฐ ๊ฐ๋จํ์ง๋ง, ์ผ๋์ ๋์ด์ผ ํ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ฐ๋ ๊ณผ ๊ณ ๋ ค ์ฌํญ์ด ์์ต๋๋ค:
1. ์ค์ฝํ(Scopes)
์ด์ ์์์์ ๋ณด์ฌ์ค ๊ฒ์ฒ๋ผ, scopes
๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค๋ฅธ ๋ถ๋ถ์ ๋ํด ๋ค๋ฅธ ๋งคํ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฝ๋๋ฒ ์ด์ค์ ๋ค๋ฅธ ๋ถ๋ถ์์ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ ์ ์ฉํฉ๋๋ค. `scopes` ๊ฐ์ฒด์ ํค๋ URL ์ ๋์ฌ์
๋๋ค. URL์ด ํด๋น ์ ๋์ฌ๋ก ์์ํ๋ ๋ชจ๋ ๋ด์ ๋ชจ๋ ์ํฌํธ๋ ํด๋น ์ค์ฝํ ๋ด์ ์ ์๋ ๋งคํ์ ์ฌ์ฉํฉ๋๋ค.
2. ํด๋ฐฑ ๋ฉ์ปค๋์ฆ
CDN์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ํด๋ฐฑ ๋ฉ์ปค๋์ฆ์ ๋ง๋ จํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋์ฒด URL์ ์ ๊ณตํ๊ฑฐ๋ ์์ฒด ์๋ฒ์์ ๋ชจ๋์ ๋ก๋ํ์ฌ ์ด๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. scopes
๊ธฐ๋ฅ์ ์ด๋ฅผ ๋ฌ์ฑํ๋ ์ข์ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ์ด์ ๋ณต์๋ ฅ์ ์ ์คํ๊ฒ ๊ณ ๋ คํ์ธ์. ์ค์ํ CDN์ด ๋ค์ด๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
3. ๋ณด์ ๊ณ ๋ ค ์ฌํญ
์ ์ก ์ค์ ๊ฐ์ ธ์จ ๋ชจ๋์ด ๋ณ์กฐ๋์ง ์๋๋ก ํญ์ CDN URL์ HTTPS๋ฅผ ์ฌ์ฉํ์ธ์. ์์กด์ฑ์ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ๊ธฐ ์ํด SRI ํด์ ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์. ํ์ฌ CDN ์ฌ์ฉ์ ๋ณด์์ ํจ์์ ์ ์ํด์ผ ํฉ๋๋ค.
4. ๋ธ๋ผ์ฐ์ ํธํ์ฑ
์ํฌํธ ๋งต์ Chrome, Firefox, Safari, Edge๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ ์ํฌํธ ๋งต์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ํด๋ฆฌํ์ ์ฌ์ฉํ์ฌ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ์ํฌํธ ๋งต์ ์ง์ํ ์ ์์ต๋๋ค. ์ต์ ํธํ์ฑ ์ ๋ณด๋ caniuse.com์ ํ์ธํ์ธ์.
5. ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ
์ํฌํธ ๋งต์ด ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ ์ ์์ง๋ง, ๋ช
ํํ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๋ง๋ จํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ ์ผ๊ด๋ ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด es-module-shims
์ ๊ฐ์ ๋๊ตฌ ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์ด ๋๊ตฌ๋ ๋ชจ๋ ์๋ฐ ๋ฐ ๋์ ์ํฌํธ ์ง์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ ํ์ฑํํฉ๋๋ค.
6. ๋ชจ๋ ์ง์ ์ ํด์
์ํฌํธ ๋งต์ ๋ ๊ฐ์ง ์ฃผ์ ํํ์ ๋ชจ๋ ์ง์ ์๋ฅผ ์ ๊ณตํฉ๋๋ค: ๋ฒ ์ด ๋ชจ๋ ์ง์ ์(์: 'lodash')์ ์๋ URL ์ง์ ์(์: './my-module.js'). ์ฐจ์ด์ ๊ณผ ์ํฌํธ ๋งต์ด ์ด๋ฅผ ์ด๋ป๊ฒ ํด์ํ๋์ง ์ดํดํ๋ ๊ฒ์ ํจ๊ณผ์ ์ธ ์์กด์ฑ ๊ด๋ฆฌ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ฒ ์ด ๋ชจ๋ ์ง์ ์๋ ์ํฌํธ ๋งต์ `imports` ์น์ ์ ์ฌ์ฉํ์ฌ ํด์๋ฉ๋๋ค. ์๋ URL ์ง์ ์๋ ์ค์ฝํ์ ์ํด ์ฌ์ ์๋์ง ์๋ ํ ํ์ฌ ๋ชจ๋์ URL์ ๊ธฐ์ค์ผ๋ก ํด์๋ฉ๋๋ค.
7. ๋์ ์ํฌํธ
์ํฌํธ ๋งต์ ๋์ ์ํฌํธ(import()
)์ ์ํํ๊ฒ ์๋ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์์ ๋ฐ๋ผ ๋ชจ๋์ ๋ก๋ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ์ ๋์ฑ ์ต์ ํํ ์ ์์ต๋๋ค. ๋์ ์ํฌํธ๋ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์ฒ๋ฆฌํ๋ ๋ชจ๋์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํน์ ๋ถ๋ถ์์๋ง ์ฌ์ฉ๋๋ ๋ชจ๋๊ณผ ๊ฐ์ด ํน์ ์ํฉ์์๋ง ํ์ํ ๋ชจ๋์ ๋ก๋ํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
๊ธฐ์กด ์์กด์ฑ ๊ด๋ฆฌ์์ ๋น๊ต
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ์กด ์์กด์ฑ ๊ด๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก npm์ด๋ yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์์ webpack์ด๋ Parcel๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ๋ฅผ ํฌํจํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๊ฐ๋ ฅํ๊ณ ๋๋ฆฌ ์ฌ์ฉ๋์ง๋ง ๋ณต์ก์ฑ๊ณผ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์๋ ์์ต๋๋ค. ์ํฌํธ ๋งต์ ๊ธฐ์กด ์์กด์ฑ ๊ด๋ฆฌ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค:
๊ธฐ๋ฅ | ๊ธฐ์กด ์์กด์ฑ ๊ด๋ฆฌ (npm, webpack) | ์ํฌํธ ๋งต |
---|---|---|
๋ณต์ก์ฑ | ๋์ (์ค์ ๋ฐ ๋น๋ ํ๋ก์ธ์ค ํ์) | ๋ฎ์ (๊ฐ๋จํ JSON ์ค์ ) |
์ฑ๋ฅ | ์ฝ๋ ๋ถํ ๋ฐ ํธ๋ฆฌ ์์ดํน์ผ๋ก ์ต์ ํ ๊ฐ๋ฅ | CDN ์ฌ์ฉ์ผ๋ก ์ฑ๋ฅ ํฅ์ ๊ฐ๋ฅ์ฑ |
๋ณด์ | ํจํค์ง ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ ๋ฐ ์ทจ์ฝ์ ์ค์บ์ ์์กด | SRI ํด์๋ก ๊ฐํ ๊ฐ๋ฅ |
์ ์ฐ์ฑ | ๋ชจ๋ ํด์์ ์ ์ฐ์ฑ ์ ํ์ | ๋ชจ๋ ํด์์ ์ ์ฐ์ฑ ๋์ |
ํ์ต ๊ณก์ | ๊ฐํ๋ฅธ ํ์ต ๊ณก์ | ์๋งํ ํ์ต ๊ณก์ |
๋ณด์๋ค์ํผ, ์ํฌํธ ๋งต์ ํน์ ์๋๋ฆฌ์ค์์ ๊ธฐ์กด ์์กด์ฑ ๊ด๋ฆฌ์ ๋ํ ๋ ๊ฐ๋จํ๊ณ ์ ์ฐํ ๋์์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ํฌํธ ๋งต์ด ๋ชจ๋ ๊ฒฝ์ฐ์ ํจํค์ง ๊ด๋ฆฌ์์ ๋น๋ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ์๋๋ผ๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ฌ์ ํ ๊ธฐ์กด ์์กด์ฑ ๊ด๋ฆฌ๊ฐ ์ ํธ๋๋ ์ ๊ทผ ๋ฐฉ์์ผ ์ ์์ต๋๋ค.
์ํฌํธ ๋งต์ ๋ฏธ๋
์ํฌํธ ๋งต์ ๋น๊ต์ ์๋ก์ด ๊ธฐ์ ์ด์ง๋ง, ์น ๊ฐ๋ฐ์ ๋ฏธ๋์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ํฌํธ ๋งต ์ง์์ ๊ณ์ ๊ฐ์ ํ๊ณ ๊ฐ๋ฐ์๋ค์ด ๊ทธ ๊ธฐ๋ฅ์ ๋ ์ต์ํด์ง์ ๋ฐ๋ผ, ๋ค์ํ ์น ๊ฐ๋ฐ ์๋๋ฆฌ์ค์์ ์ํฌํธ ๋งต์ ์ฑํ์ด ํ๋๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํ ์ ์์ต๋๋ค. ํ์คํ ๊ณผ์ ์ด ์งํ ์ค์ด๋ฉฐ, ํฅํ ์ํฌํธ ๋งต ์ฌ์์ ๋ํ ์ถ๊ฐ์ ์ธ ๊ฐ์ ๋ฐ ์ ์ ๊ฐ ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค.
๋ํ, ์ํฌํธ ๋งต์ ๋ค์๊ณผ ๊ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋ํ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ์ํ ๊ธธ์ ์ด๊ณ ์์ต๋๋ค:
- ๋ชจ๋ ํ๋๋ ์ด์ : ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐํ์์ ์ฝ๋๋ฅผ ๊ณต์ ํ ์ ์๊ฒ ํ๋ ๊ธฐ์ ์ ๋๋ค. ์ํฌํธ ๋งต์ ํ๋๋ ์ด์ ๋ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ ์ ์์ต๋๋ค.
- ์ ๋ก ๊ตฌ์ฑ ๊ฐ๋ฐ: ์ํฌํธ ๋งต์ ๋ณต์กํ ๋น๋ ๊ตฌ์ฑ์ ํ์์ฑ์ ์ ๊ฑฐํ์ฌ ๋ ๊ฐ์ํ๋ ๊ฐ๋ฐ ๊ฒฝํ์ ๊ฐ๋ฅํ๊ฒ ํ ์ ์์ต๋๋ค.
- ํ์ ๊ฐ์ : ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ์ค์ ์ง์ค์ ์ด๊ณ ํฌ๋ช ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํจ์ผ๋ก์จ ์ํฌํธ ๋งต์ ๊ฐ๋ฐ์ ๊ฐ์ ํ์ ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ์ํฌํธ ๋งต์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ํด์ ๋ฐ ์์กด์ฑ ๊ด๋ฆฌ์์ ์ค์ํ ๋ฐ์ ์ ๋ํ๋ ๋๋ค. ์ธ๋ฐํ ์ ์ด๋ฅผ ์ ๊ณตํ๊ณ , ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๋ฉฐ, ์ฑ๋ฅ์ ํฅ์์ํด์ผ๋ก์จ ์ํฌํธ ๋งต์ ๊ธฐ์กด ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๊ฐ๋ ฅํ ๋์์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ์ ์ ํฉํ์ง๋ ์์ ์ ์์ง๋ง, ์ํฌํธ ๋งต์ ์๋ฐ์คํฌ๋ฆฝํธ ์์กด์ฑ์ ๋ ์ ์ฐํ๊ณ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ ํ๋ ๊ฐ๋ฐ์์๊ฒ ๊ท์คํ ๋๊ตฌ์ ๋๋ค.
์ํฌํธ ๋งต์ ์ธ๊ณ๋ฅผ ํํํ๋ฉด์ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ์ ๊ณ ๋ คํ๊ณ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ์ ์คํ ๊ณํ๊ณผ ๊ตฌํ์ ํตํด ์ํฌํธ ๋งต์ ๋ ๊ฒฌ๊ณ ํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ:
- ๋ค์ ์๊ท๋ชจ ํ๋ก์ ํธ๋ ํ๋กํ ํ์ ์์ ์ํฌํธ ๋งต ์คํ์ ์์ํด ๋ณด์ธ์.
- ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํ๋ํํ๊ธฐ ์ํด ์ํฌํธ ๋งต ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณด์ธ์.
- ์์กด์ฑ์ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํด SRI ํด์ ์ฌ์ฉ์ ํ์ํด ๋ณด์ธ์.
- ์ํฌํธ ๋งต ๊ธฐ์ ์ ์ต์ ๊ฐ๋ฐ ๋ํฅ์ ๊ณ์ ์ฃผ์ํ์ธ์.
์ํฌํธ ๋งต์ ์์ฉํจ์ผ๋ก์จ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด๊ณ ์ง์ ์ผ๋ก ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค.