λͺ¨λ ννμ μν¬νΈλ₯Ό μ¬μ©νμ¬ μλ°μ€ν¬λ¦½νΈμμ λμ λͺ¨λ μμ± λ° κ³ κΈ μν¬νΈ κΈ°μ μ μμ보μΈμ. λͺ¨λμ 쑰건λΆλ‘ λ‘λνκ³ μμ‘΄μ±μ ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νλ λ°©λ²μ λ°°μλλ€.
μλ°μ€ν¬λ¦½νΈ λͺ¨λ ννμ μν¬νΈ: λμ λͺ¨λ μμ± λ° κ³ κΈ ν¨ν΄
μλ°μ€ν¬λ¦½νΈμ λͺ¨λ μμ€ν
μ μ½λλ₯Ό ꡬμ±νκ³ μ¬μ¬μ©νλ κ°λ ₯ν λ°©λ²μ μ 곡ν©λλ€. import λ¬Έμ μ¬μ©νλ μ μ μν¬νΈκ° κ°μ₯ μΌλ°μ μΈ μ κ·Ό λ°©μμ΄μ§λ§, λμ λͺ¨λ ννμ μν¬νΈλ νμμ λ°λΌ λͺ¨λμ μμ±νκ³ κ°μ Έμ¬ μ μλ μ μ°ν λμμ μ 곡ν©λλ€. import() ννμμ ν΅ν΄ μ¬μ©ν μ μλ μ΄ μ κ·Ό λ°©μμ μ‘°κ±΄λΆ λ‘λ©, μ§μ° μ΄κΈ°ν, μμ‘΄μ± μ£Όμ
κ³Ό κ°μ κ³ κΈ ν¨ν΄μ κ°λ₯νκ² νμ¬ λ ν¨μ¨μ μ΄κ³ μ μ§λ³΄μνκΈ° μ¬μ΄ μ½λλ₯Ό λ§λλλ€. μ΄ κΈμμλ λͺ¨λ ννμ μν¬νΈμ 볡μ‘μ±μ κΉμ΄ νκ³ λ€μ΄ κ·Έ κΈ°λ₯μ νμ©νκΈ° μν μ€μ©μ μΈ μμ μ λͺ¨λ² μ¬λ‘λ₯Ό μ 곡ν©λλ€.
λͺ¨λ ννμ μν¬νΈ μ΄ν΄νκΈ°
λͺ¨λ μλ¨μ μ μΈλκ³ μ»΄νμΌ μμ μ νμΈλλ μ μ μν¬νΈμ λ¬λ¦¬, λͺ¨λ ννμ μν¬νΈ(import())λ νλ‘λ―Έμ€(promise)λ₯Ό λ°ννλ ν¨μμ κ°μ ννμμ
λλ€. μ΄ νλ‘λ―Έμ€λ λͺ¨λμ΄ λ‘λλκ³ μ€νλλ©΄ λͺ¨λμ exports κ°μ²΄λ‘ νμΈ(resolve)λ©λλ€. μ΄λ¬ν λμ νΉμ± λλΆμ λ°νμ 쑰건μ λ°λΌ λλ μ€μ λ‘ νμν λ λͺ¨λμ 쑰건λΆλ‘ λ‘λν μ μμ΅λλ€.
ꡬ문:
λͺ¨λ ννμ μν¬νΈμ κΈ°λ³Έ ꡬ문μ κ°λ¨ν©λλ€:
import('./my-module.js').then(module => {
// μ¬κΈ°μ λͺ¨λμ exportsλ₯Ό μ¬μ©ν©λλ€
console.log(module.myFunction());
});
μ¬κΈ°μ './my-module.js'λ λͺ¨λ μ§μ μ(specifier)λ‘, κ°μ Έμ€λ €λ λͺ¨λμ κ²½λ‘μ
λλ€. then() λ©μλλ νλ‘λ―Έμ€ νμΈμ μ²λ¦¬νκ³ λͺ¨λμ exportsμ μ κ·Όνλ λ° μ¬μ©λ©λλ€.
λμ λͺ¨λ μν¬νΈμ μ΄μ
λμ λͺ¨λ μν¬νΈλ μ μ μν¬νΈμ λΉν΄ λͺ κ°μ§ μ£Όμ μ΄μ μ μ 곡ν©λλ€:
- μ‘°κ±΄λΆ λ‘λ©: νΉμ μ‘°κ±΄μ΄ μΆ©μ‘±λ λλ§ λͺ¨λμ λ‘λν μ μμ΅λλ€. μ΄λ νΉν μ νμ κΈ°λ₯μ΄ μλ λκ·λͺ¨ μ ν리μΌμ΄μ μ μ΄κΈ° λ‘λ μκ°μ μ€μ΄κ³ μ±λ₯μ ν₯μμν΅λλ€.
- μ§μ° μ΄κΈ°ν: λͺ¨λμ΄ μ²μ νμν λλ§ λ‘λν μ μμ΅λλ€. μ΄λ νΉμ μΈμ λμ μ¬μ©λμ§ μμ μ μλ λͺ¨λμ λΆνμν λ‘λ©μ λ°©μ§ν©λλ€.
- μ¨λ맨λ λ‘λ©: λ²νΌ ν΄λ¦μ΄λ νΉμ κ²½λ‘λ‘μ μ΄λκ³Ό κ°μ μ¬μ©μ νλμ μλ΅νμ¬ λͺ¨λμ λ‘λν μ μμ΅λλ€.
- μ½λ μ€ν리ν : λμ μν¬νΈλ μ½λ μ€ν리ν μ ν΅μ¬μΌλ‘, μ ν리μΌμ΄μ μ λ 립μ μΌλ‘ λ‘λν μ μλ λ μμ λ²λ€λ‘ λλ μ μκ² ν΄μ€λλ€. μ΄λ μ΄κΈ° λ‘λ μκ°κ³Ό μ λ°μ μΈ μ ν리μΌμ΄μ μλ΅μ±μ ν¬κ² ν₯μμν΅λλ€.
- μμ‘΄μ± μ£Όμ : λμ μν¬νΈλ μμ‘΄μ± μ£Όμ μ μ©μ΄νκ² νμ¬, λͺ¨λμ ν¨μλ ν΄λμ€μ μΈμλ‘ μ λ¬ν μ μκ² λ§λ€μ΄ μ½λλ₯Ό λ λͺ¨λννκ³ ν μ€νΈνκΈ° μ½κ² λ§λλλ€.
λͺ¨λ ννμ μν¬νΈμ μ€μ μμ
1. κΈ°λ₯ νμ§μ κΈ°λ°ν μ‘°κ±΄λΆ λ‘λ©
νΉμ λΈλΌμ°μ APIλ₯Ό μ¬μ©νλ λͺ¨λμ΄ μμ§λ§, ν΄λΉ APIλ₯Ό μ§μνμ§ μλ λΈλΌμ°μ μμλ μ ν리μΌμ΄μ μ΄ μλνκΈ°λ₯Ό μνλ€κ³ μμν΄λ³΄μΈμ. λμ μν¬νΈλ₯Ό μ¬μ©νμ¬ APIκ° μ¬μ© κ°λ₯ν κ²½μ°μλ§ λͺ¨λμ λ‘λν μ μμ΅λλ€:
if ('IntersectionObserver' in window) {
import('./intersection-observer-module.js').then(module => {
module.init();
}).catch(error => {
console.error('IntersectionObserver λͺ¨λ λ‘λ μ€ν¨:', error);
});
} else {
console.log('IntersectionObserverκ° μ§μλμ§ μμ΅λλ€. λ체 μλ¨μ μ¬μ©ν©λλ€.');
// ꡬν λΈλΌμ°μ λ₯Ό μν λ체 λ©μ»€λμ¦ μ¬μ©
}
μ΄ μμ λ λΈλΌμ°μ μμ IntersectionObserver APIλ₯Ό μ¬μ©ν μ μλμ§ νμΈν©λλ€. λ§μ½ μ¬μ© κ°λ₯νλ€λ©΄ intersection-observer-module.jsκ° λμ μΌλ‘ λ‘λλ©λλ€. κ·Έλ μ§ μλ€λ©΄ λ체 λ©μ»€λμ¦μ΄ μ¬μ©λ©λλ€.
2. μ΄λ―Έμ§ μ§μ° λ‘λ©
μ΄λ―Έμ§ μ§μ° λ‘λ©μ νμ΄μ§ λ‘λ μκ°μ κ°μ νκΈ° μν μΌλ°μ μΈ μ΅μ ν κΈ°μ μ λλ€. λμ μν¬νΈλ₯Ό μ¬μ©νμ¬ μ΄λ―Έμ§κ° λ·°ν¬νΈμ λ³΄μΌ λλ§ μ΄λ―Έμ§λ₯Ό λ‘λν μ μμ΅λλ€:
const imageElement = document.querySelector('img[data-src]');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
const src = img.dataset.src;
import('./image-loader.js').then(module => {
module.loadImage(img, src);
observer.unobserve(img);
}).catch(error => {
console.error('μ΄λ―Έμ§ λ‘λ λͺ¨λ λ‘λ μ€ν¨:', error);
});
}
});
});
observer.observe(imageElement);
μ΄ μμ μμλ IntersectionObserverλ₯Ό μ¬μ©νμ¬ μ΄λ―Έμ§κ° λ·°ν¬νΈμ 보μ΄λ μμ μ κ°μ§ν©λλ€. μ΄λ―Έμ§κ° 보μ΄κ² λλ©΄ image-loader.js λͺ¨λμ΄ λμ μΌλ‘ λ‘λλ©λλ€. μ΄ λͺ¨λμ μ΄λ―Έμ§λ₯Ό λ‘λνκ³ img μμμ src μμ±μ μ€μ ν©λλ€.
image-loader.js λͺ¨λμ λ€μκ³Ό κ°μ μ μμ΅λλ€:
// image-loader.js
export function loadImage(img, src) {
return new Promise((resolve, reject) => {
img.onload = () => resolve(img);
img.onerror = reject;
img.src = src;
});
}
3. μ¬μ©μ μ€μ μ κΈ°λ°ν λͺ¨λ λ‘λ©
μ ν리μΌμ΄μ μ μ¬λ¬ ν λ§κ° μκ³ μ¬μ©μμ μ νΈλμ λ°λΌ ν λ§λ³ CSS λλ μλ°μ€ν¬λ¦½νΈ λͺ¨λμ λμ μΌλ‘ λ‘λνκ³ μΆλ€κ³ κ°μ ν΄ λ΄ μλ€. μ¬μ©μμ μ νΈλλ₯Ό λ‘컬 μ€ν 리μ§μ μ μ₯νκ³ μ μ ν λͺ¨λμ λ‘λν μ μμ΅λλ€:
const theme = localStorage.getItem('theme') || 'light'; // κΈ°λ³Έκ°μ λΌμ΄νΈ ν
λ§
import(`./themes/${theme}-theme.js`).then(module => {
module.applyTheme();
}).catch(error => {
console.error(`${theme} ν
λ§ λ‘λ μ€ν¨:`, error);
// κΈ°λ³Έ ν
λ§λ₯Ό λ‘λνκ±°λ μ€λ₯ λ©μμ§ νμ
});
μ΄ μμ λ λ‘컬 μ€ν 리μ§μ μ μ₯λ μ¬μ©μ μ νΈλμ λ°λΌ ν λ§λ³ λͺ¨λμ λ‘λν©λλ€. μ νΈλκ° μ€μ λμ§ μμ κ²½μ° 'λΌμ΄νΈ' ν λ§κ° κΈ°λ³Έκ°μΌλ‘ μ¬μ©λ©λλ€.
4. λμ μν¬νΈλ₯Ό μ¬μ©ν κ΅μ ν(i18n)
λμ μν¬νΈλ κ΅μ νμ λ§€μ° μ μ©ν©λλ€. μ¬μ©μμ λ‘μΌμΌ μ€μ μ λ°λΌ μΈμ΄λ³ 리μμ€ λ²λ€(λ²μ νμΌ)μ μ¨λ맨λλ‘ λ‘λν μ μμ΅λλ€. μ΄λ κ² νλ©΄ νμν λ²μλ§ λ‘λνμ¬ μ±λ₯μ κ°μ νκ³ μ ν리μΌμ΄μ μ μ΄κΈ° λ€μ΄λ‘λ ν¬κΈ°λ₯Ό μ€μΌ μ μμ΅λλ€. μλ₯Ό λ€μ΄, μμ΄, νλμ€μ΄, μ€νμΈμ΄ λ²μμ μν λ³λμ νμΌμ΄ μμ μ μμ΅λλ€.
const locale = navigator.language || navigator.userLanguage || 'en'; // μ¬μ©μ λ‘μΌμΌ κ°μ§
import(`./locales/${locale}.js`).then(translations => {
// λ²μμ μ¬μ©νμ¬ UI λ λλ§
document.getElementById('welcome-message').textContent = translations.welcome;
}).catch(error => {
console.error(`${locale}μ λν λ²μ λ‘λ μ€ν¨:`, error);
// κΈ°λ³Έ λ²μμ λ‘λνκ±°λ μ€λ₯ λ©μμ§ νμ
});
μ΄ μμ λ μ¬μ©μμ λΈλΌμ°μ λ‘μΌμΌμ ν΄λΉνλ λ²μ νμΌμ λ‘λνλ €κ³ μλν©λλ€. νμΌμ μ°Ύμ μ μλ κ²½μ° κΈ°λ³Έ λ‘μΌμΌλ‘ λ체νκ±°λ μ€λ₯ λ©μμ§λ₯Ό νμν μ μμ΅λλ€. κ²½λ‘ μν(path traversal) μ·¨μ½μ μ λ°©μ§νκΈ° μν΄ λ‘μΌμΌ λ³μλ₯Ό μ μ (sanitize)νλ κ²μ μμ§ λ§μΈμ.
κ³ κΈ ν¨ν΄ λ° κ³ λ €μ¬ν
1. μ€λ₯ μ²λ¦¬
λμ λͺ¨λ λ‘λ© μ€μ λ°μν μ μλ μ€λ₯λ₯Ό μ²λ¦¬νλ κ²μ΄ μ€μν©λλ€. import() ννμμ νλ‘λ―Έμ€λ₯Ό λ°ννλ―λ‘ catch() λ©μλλ₯Ό μ¬μ©νμ¬ μ€λ₯λ₯Ό μ²λ¦¬ν μ μμ΅λλ€:
import('./my-module.js').then(module => {
// μ¬κΈ°μ λͺ¨λμ exportsλ₯Ό μ¬μ©ν©λλ€
}).catch(error => {
console.error('λͺ¨λ λ‘λ μ€ν¨:', error);
// μ€λ₯λ₯Ό μ μμ μΌλ‘ μ²λ¦¬ (μ: μ¬μ©μμκ² μ€λ₯ λ©μμ§ νμ)
});
μ μ ν μ€λ₯ μ²λ¦¬λ λͺ¨λ λ‘λμ μ€ν¨νλλΌλ μ ν리μΌμ΄μ μ΄ μ€λ¨λμ§ μλλ‘ λ³΄μ₯ν©λλ€.
2. λͺ¨λ μ§μ μ(Module Specifiers)
import() ννμμ λͺ¨λ μ§μ μλ μλ κ²½λ‘(μ: './my-module.js'), μ λ κ²½λ‘(μ: '/path/to/my-module.js') λλ λ² μ΄(bare) λͺ¨λ μ§μ μ(μ: 'lodash')μΌ μ μμ΅λλ€. λ² μ΄ λͺ¨λ μ§μ μλ μΉν©(Webpack)μ΄λ νμ¬(Parcel)κ³Ό κ°μ λͺ¨λ λ²λ€λ¬κ° μ΄λ₯Ό μ¬λ°λ₯΄κ² νμΈν΄μΌ ν©λλ€.
3. κ²½λ‘ μν μ·¨μ½μ λ°©μ§
μ¬μ©μ μ 곡 μ λ ₯μ μ¬μ©νμ¬ λμ μν¬νΈλ₯Ό μ¬μ©ν λλ κ²½λ‘ μν μ·¨μ½μ μ λ°©μ§νκΈ° μν΄ λ§€μ° μ£Όμν΄μΌ ν©λλ€. 곡격μλ μ μ¬μ μΌλ‘ μ λ ₯μ μ‘°μνμ¬ μλ²μ μμ νμΌμ λ‘λνμ¬ λ³΄μ μΉ¨ν΄λ₯Ό μ λ°ν μ μμ΅λλ€. λͺ¨λ μ§μ μμμ μ¬μ©νκΈ° μ μ νμ μ¬μ©μ μ λ ₯μ μ μ νκ³ κ²μ¦ν΄μΌ ν©λλ€.
μ·¨μ½ν μ½λ μμ:
const userInput = window.location.hash.substring(1); //μ¬μ©μλ‘λΆν°μ μ
λ ₯ μμ
import(`./modules/${userInput}.js`).then(...); // μν: κ²½λ‘ μνλ‘ μ΄μ΄μ§ μ μμ
μμ ν μ κ·Ό λ°©μ:
const userInput = window.location.hash.substring(1);
const allowedModules = ['moduleA', 'moduleB', 'moduleC'];
if (allowedModules.includes(userInput)) {
import(`./modules/${userInput}.js`).then(...);
} else {
console.error('μ ν¨νμ§ μμ λͺ¨λμ΄ μμ²λμμ΅λλ€.');
}
μ΄ μ½λλ 미리 μ μλ νμ΄νΈλ¦¬μ€νΈμ μλ λͺ¨λλ§ λ‘λνμ¬ κ³΅κ²©μκ° μμμ νμΌμ λ‘λνλ κ²μ λ°©μ§ν©λλ€.
4. async/await μ¬μ©
async/await ꡬ문μ μ¬μ©νμ¬ λμ λͺ¨λ μν¬νΈλ₯Ό λ¨μνν μλ μμ΅λλ€:
async function loadModule() {
try {
const module = await import('./my-module.js');
// μ¬κΈ°μ λͺ¨λμ exportsλ₯Ό μ¬μ©ν©λλ€
console.log(module.myFunction());
} catch (error) {
console.error('λͺ¨λ λ‘λ μ€ν¨:', error);
// μ€λ₯λ₯Ό μ μμ μΌλ‘ μ²λ¦¬
}
}
loadModule();
μ΄λ κ² νλ©΄ μ½λκ° λ μ½κΈ° μ½κ³ μ΄ν΄νκΈ° μ¬μμ§λλ€.
5. λͺ¨λ λ²λ€λ¬μμ ν΅ν©
λμ μν¬νΈλ μΌλ°μ μΌλ‘ μΉν©, νμ¬ λλ λ‘€μ (Rollup)κ³Ό κ°μ λͺ¨λ λ²λ€λ¬μ ν¨κ» μ¬μ©λ©λλ€. μ΄λ¬ν λ²λ€λ¬λ μ½λ μ€ν리ν κ³Ό μμ‘΄μ± κ΄λ¦¬λ₯Ό μλμΌλ‘ μ²λ¦¬νμ¬ μ ν리μΌμ΄μ μ μ΅μ νλ λ²λ€μ λ μ½κ² λ§λ€ μ μλλ‘ ν©λλ€.
μΉν© μ€μ :
μλ₯Ό λ€μ΄ μΉν©μ λμ import() λ¬Έμ μλμΌλ‘ μΈμνκ³ κ°μ Έμ¨ λͺ¨λμ λν΄ λ³λμ μ²ν¬(chunk)λ₯Ό μμ±ν©λλ€. μ ν리μΌμ΄μ
ꡬ쑰μ λ°λΌ μ½λ μ€ν리ν
μ μ΅μ ννκΈ° μν΄ μΉν© μ€μ μ μ‘°μ ν΄μΌ ν μλ μμ΅λλ€.
6. ν΄λ¦¬ν λ° λΈλΌμ°μ νΈνμ±
λμ μν¬νΈλ λͺ¨λ μ΅μ λΈλΌμ°μ μμ μ§μλ©λλ€. νμ§λ§ ꡬν λΈλΌμ°μ μμλ ν΄λ¦¬νμ΄ νμν μ μμ΅λλ€. es-module-shimsμ κ°μ ν΄λ¦¬νμ μ¬μ©νμ¬ κ΅¬ν λΈλΌμ°μ μμ λμ μν¬νΈλ₯Ό μ§μν μ μμ΅λλ€.
λͺ¨λ ννμ μν¬νΈ μ¬μ©μ μν λͺ¨λ² μ¬λ‘
- λμ μν¬νΈλ λλ¬Όκ² μ¬μ©νμΈμ: λμ μν¬νΈλ μ μ°μ±μ μ 곡νμ§λ§, κ³Όλνκ² μ¬μ©νλ©΄ 볡μ‘ν μ½λμ μ±λ₯ λ¬Έμ λ₯Ό μΌκΈ°ν μ μμ΅λλ€. μ‘°κ±΄λΆ λ‘λ©μ΄λ μ§μ° μ΄κΈ°νμ κ°μ΄ νμν λλ§ μ¬μ©νμΈμ.
- μ€λ₯λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νμΈμ: λμ λͺ¨λ λ‘λ© μ€μ λ°μν μ μλ μ€λ₯λ₯Ό νμ μ²λ¦¬ν΄μΌ ν©λλ€.
- μ¬μ©μ μ λ ₯μ μ μ νμΈμ: μ¬μ©μ μ 곡 μ λ ₯μ μ¬μ©νμ¬ λμ μν¬νΈλ₯Ό μ¬μ©ν λλ κ²½λ‘ μν μ·¨μ½μ μ λ°©μ§νκΈ° μν΄ νμ μ λ ₯μ μ μ νκ³ κ²μ¦ν΄μΌ ν©λλ€.
- λͺ¨λ λ²λ€λ¬λ₯Ό μ¬μ©νμΈμ: μΉν©μ΄λ νμ¬κ³Ό κ°μ λͺ¨λ λ²λ€λ¬λ μ½λ μ€ν리ν κ³Ό μμ‘΄μ± κ΄λ¦¬λ₯Ό λ¨μννμ¬ λμ μν¬νΈλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νκΈ° μ½κ² λ§λλλ€.
- μ½λλ₯Ό μ² μ ν ν μ€νΈνμΈμ: μ½λλ₯Ό ν μ€νΈνμ¬ λμ μν¬νΈκ° λ€λ₯Έ λΈλΌμ°μ μ νκ²½μμ μ¬λ°λ₯΄κ² μλνλμ§ νμΈνμΈμ.
μ μΈκ³μ μ€μ μ¬λ‘
λ§μ λκΈ°μ κ³Ό μ€ν μμ€ νλ‘μ νΈκ° λ€μν λͺ©μ μΌλ‘ λμ μν¬νΈλ₯Ό νμ©ν©λλ€:
- μ μμκ±°λ νλ«νΌ: μ¬μ©μ μνΈμμ©μ λ°λΌ μν μμΈ μ 보μ μΆμ²μ λμ μΌλ‘ λ‘λν©λλ€. μΌλ³Έμ ν μ μμκ±°λ μΉμ¬μ΄νΈλ μ§μμ μꡬμ¬νκ³Ό μ¬μ©μ μ νΈλμ λ°λΌ λΈλΌμ§μ μΉμ¬μ΄νΈμλ λ€λ₯Έ μν μ 보 νμ μ»΄ν¬λνΈλ₯Ό λ‘λν μ μμ΅λλ€.
- μ½ν μΈ κ΄λ¦¬ μμ€ν (CMS): μ¬μ©μ μν κ³Ό κΆνμ λ°λΌ λ€μν μ½ν μΈ νΈμ§κΈ°μ νλ¬κ·ΈμΈμ λμ μΌλ‘ λ‘λν©λλ€. λ μΌμμ μ¬μ©λλ CMSλ GDPR κ·μ μ μ€μνλ λͺ¨λμ λ‘λν μ μμ΅λλ€.
- μμ λ―Έλμ΄ νλ«νΌ: μ¬μ©μ νλκ³Ό μμΉμ λ°λΌ λ€μν κΈ°λ₯κ³Ό λͺ¨λμ λμ μΌλ‘ λ‘λν©λλ€. μΈλμμ μ¬μ©λλ μμ λ―Έλμ΄ νλ«νΌμ λ€νΈμν¬ λμν μ νμΌλ‘ μΈν΄ λ€λ₯Έ λ°μ΄ν° μμΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ‘λν μ μμ΅λλ€.
- μ§λ μ ν리μΌμ΄μ : μ¬μ©μμ νμ¬ μμΉμ λ°λΌ μ§λ νμΌκ³Ό λ°μ΄ν°λ₯Ό λμ μΌλ‘ λ‘λν©λλ€. μ€κ΅μ μ§λ μ±μ μ§λ¦¬ λ°μ΄ν° μ νμΌλ‘ μΈν΄ λ―Έκ΅μ μ±κ³Όλ λ€λ₯Έ μ§λ λ°μ΄ν° μμ€λ₯Ό λ‘λν μ μμ΅λλ€.
- μ¨λΌμΈ νμ΅ νλ«νΌ: νμμ μ§λμ νμ΅ μ€νμΌμ λ°λΌ λνν μ°μ΅ λ¬Έμ μ νκ°λ₯Ό λμ μΌλ‘ λ‘λν©λλ€. μ μΈκ³ νμλ€μκ² μλΉμ€λ₯Ό μ 곡νλ νλ«νΌμ λ€μν 컀리νλΌ μꡬμ μ μν΄μΌ ν©λλ€.
κ²°λ‘
λͺ¨λ ννμ μν¬νΈλ λͺ¨λμ λμ μΌλ‘ μμ±νκ³ λ‘λν μ μκ² ν΄μ£Όλ μλ°μ€ν¬λ¦½νΈμ κ°λ ₯ν κΈ°λ₯μ λλ€. μ΄λ μ‘°κ±΄λΆ λ‘λ©, μ§μ° μ΄κΈ°ν, μ¨λ맨λ λ‘λ© λ± μ μ μν¬νΈμ λΉν΄ μ¬λ¬ μ΄μ μ μ 곡ν©λλ€. λͺ¨λ ννμ μν¬νΈμ 볡μ‘μ±μ μ΄ν΄νκ³ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄, κ·Έ κΈ°λ₯μ νμ©νμ¬ λ ν¨μ¨μ μ΄κ³ μ μ§λ³΄μνκΈ° μ¬μ°λ©° νμ₯ κ°λ₯ν μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€. μΉ μ ν리μΌμ΄μ μ ν₯μμν€κ³ μ΅μ μ μ¬μ©μ κ²½νμ μ 곡νκΈ° μν΄ λμ μν¬νΈλ₯Ό μ λ΅μ μΌλ‘ νμ©νμΈμ.