μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν μΈ ESM(ECMAScript Modules), CommonJS, AMDλ₯Ό μ’ ν©μ μΌλ‘ νꡬν©λλ€. μ΄λ€μ λ°μ κ³Όμ , μ°¨μ΄μ , νλ μΉ κ°λ°μ μν λͺ¨λ² μ¬λ‘λ₯Ό μμ보μΈμ.
μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν : ESM, CommonJS, AMDμ λ°μ κ³Όμ
μλ°μ€ν¬λ¦½νΈμ λ°μ μ λͺ¨λ μμ€ν κ³Ό λΆκ°λΆμ κ΄κ³μ μμ΅λλ€. μλ°μ€ν¬λ¦½νΈ νλ‘μ νΈκ° 볡μ‘ν΄μ§λ©΄μ μ½λλ₯Ό 체κ³μ μΌλ‘ ꡬμ±νκ³ κ³΅μ νλ λ°©λ²μ λν νμμ±μ΄ λλλμμ΅λλ€. μ΄λ‘ μΈν΄ κ°κ°μ μ₯λ¨μ μ κ°μ§ λ€μν λͺ¨λ μμ€ν μ΄ κ°λ°λμμ΅λλ€. μ΄λ¬ν μμ€ν μ μ΄ν΄νλ κ²μ νμ₯ κ°λ₯νκ³ μ μ§λ³΄μνκΈ° μ¬μ΄ μ ν리μΌμ΄μ μ ꡬμΆνλ €λ λͺ¨λ μλ°μ€ν¬λ¦½νΈ κ°λ°μμκ² λ§€μ° μ€μν©λλ€.
λͺ¨λ μμ€ν μ΄ μ€μν μ΄μ
λͺ¨λ μμ€ν μ΄ λ±μ₯νκΈ° μ , μλ°μ€ν¬λ¦½νΈ μ½λλ μ’ μ’ μΌλ ¨μ μ μ λ³μλ‘ μμ±λμ΄ λ€μκ³Ό κ°μ λ¬Έμ λ₯Ό μΌκΈ°νμ΅λλ€:
- μ΄λ¦ μΆ©λ: λ€λ₯Έ μ€ν¬λ¦½νΈκ° μ°μ°ν λμΌν λ³μ μ΄λ¦μ μ¬μ©νμ¬ μκΈ°μΉ μμ λμμ μ λ°ν μ μμ΅λλ€.
- μ½λ ꡬμ±: μ½λλ₯Ό λ Όλ¦¬μ λ¨μλ‘ κ΅¬μ±νκΈ° μ΄λ €μ μ΄ν΄νκ³ μ μ§λ³΄μνκΈ°κ° νλ€μμ΅λλ€.
- μμ‘΄μ± κ΄λ¦¬: μ½λμ λ€λ₯Έ λΆλΆ κ°μ μμ‘΄μ±μ μΆμ νκ³ κ΄λ¦¬νλ κ²μ΄ μλμ μ΄κ³ μ€λ₯κ° λ°μνκΈ° μ¬μ΄ κ³Όμ μ΄μμ΅λλ€.
- 보μ λ¬Έμ : μ μ μ€μ½νμ μ½κ² μ κ·Όνκ³ μμ ν μ μμ΄ λ³΄μ μνμ΄ μμμ΅λλ€.
λͺ¨λ μμ€ν μ μ½λλ₯Ό μ¬μ¬μ© κ°λ₯ν λ¨μλ‘ μΊ‘μννκ³ , μμ‘΄μ±μ λͺ μμ μΌλ‘ μ μΈνλ©°, μ΄λ¬ν λ¨μμ λ‘λ©κ³Ό μ€νμ κ΄λ¦¬νλ λ°©λ²μ μ 곡νμ¬ μ΄λ¬ν λ¬Έμ λ€μ ν΄κ²°ν©λλ€.
μ£Όμ μμ€ν : CommonJS, AMD, ESM
μΈ κ°μ§ μ£Όμ λͺ¨λ μμ€ν μΈ CommonJS, AMD, κ·Έλ¦¬κ³ ESM(ECMAScript λͺ¨λ)μ΄ μλ°μ€ν¬λ¦½νΈ μνκ³λ₯Ό νμ±ν΄ μμ΅λλ€. κ°κ°μ λν΄ μμΈν μμλ³΄κ² μ΅λλ€.
CommonJS
κΈ°μ: μλ²μ¬μ΄λ μλ°μ€ν¬λ¦½νΈ(Node.js)
μ£Όμ μ¬μ© μ¬λ‘: μλ²μ¬μ΄λ κ°λ°. λ²λ€λ¬λ₯Ό μ¬μ©νλ©΄ λΈλΌμ°μ μμλ μ¬μ© κ°λ₯ν©λλ€.
μ£Όμ νΉμ§:
- λκΈ°μ λ‘λ©: λͺ¨λμ΄ λκΈ°μ μΌλ‘ λ‘λλκ³ μ€νλ©λλ€.
require()μmodule.exports: λͺ¨λμ κ°μ Έμ€κ³ λ΄λ³΄λ΄λ ν΅μ¬ λ©μ»€λμ¦μ λλ€.
μμ:
// math.js
const add = (a, b) => a + b;
const subtract = (a, b) => a - b;
module.exports = {
add,
subtract,
};
// app.js
const math = require('./math');
console.log(math.add(2, 3)); // μΆλ ₯: 5
console.log(math.subtract(5, 2)); // μΆλ ₯: 3
μ₯μ :
- λ¨μν λ¬Έλ²: μ΄ν΄νκ³ μ¬μ©νκΈ° μ¬μ°λ©°, νΉν λ€λ₯Έ μΈμ΄μμ μ¨ κ°λ°μλ€μκ² μΉμν©λλ€.
- Node.jsμμμ λμ μ±ν: μλ λμ μλ²μ¬μ΄λ μλ°μ€ν¬λ¦½νΈ κ°λ°μ μ¬μ€μ νμ€μ΄μμ΅λλ€.
λ¨μ :
- λκΈ°μ λ‘λ©: λ€νΈμν¬ μ§μ°μ΄ μ±λ₯μ ν° μν₯μ λ―ΈμΉ μ μλ λΈλΌμ°μ νκ²½μλ μ΄μμ μ΄μ§ μμ΅λλ€. λκΈ°μ λ‘λ©μ λ©μΈ μ€λ λλ₯Ό μ°¨λ¨νμ¬ μ’μ§ μμ μ¬μ©μ κ²½νμ μ λ°ν μ μμ΅λλ€.
- λΈλΌμ°μ μμ κΈ°λ³Έμ μΌλ‘ μ§μλμ§ μμ: λΈλΌμ°μ μμ μ¬μ©νλ €λ©΄ λ²λ€λ¬(μ: Webpack, Browserify)κ° νμν©λλ€.
AMD (λΉλκΈ° λͺ¨λ μ μ)
κΈ°μ: λΈλΌμ°μ μ¬μ΄λ μλ°μ€ν¬λ¦½νΈ
μ£Όμ μ¬μ© μ¬λ‘: λΈλΌμ°μ μ¬μ΄λ κ°λ°, νΉν λκ·λͺ¨ μ ν리μΌμ΄μ .
μ£Όμ νΉμ§:
- λΉλκΈ°μ λ‘λ©: λͺ¨λμ΄ λΉλκΈ°μ μΌλ‘ λ‘λλκ³ μ€νλμ΄ λ©μΈ μ€λ λ μ°¨λ¨μ λ°©μ§ν©λλ€.
define()κ³Όrequire(): λͺ¨λκ³Ό κ·Έ μμ‘΄μ±μ μ μνλ λ° μ¬μ©λ©λλ€.- μμ‘΄μ± λ°°μ΄: λͺ¨λμ΄ μμ μ μμ‘΄μ±μ λ°°μ΄λ‘ λͺ μμ μΌλ‘ μ μΈν©λλ€.
μμ (RequireJS μ¬μ©):
// math.js
define([], function() {
const add = (a, b) => a + b;
const subtract = (a, b) => a - b;
return {
add,
subtract,
};
});
// app.js
require(['./math'], function(math) {
console.log(math.add(2, 3)); // μΆλ ₯: 5
console.log(math.subtract(5, 2)); // μΆλ ₯: 3
});
μ₯μ :
- λΉλκΈ°μ λ‘λ©: μ°¨λ¨μ λ°©μ§νμ¬ λΈλΌμ°μ μ±λ₯μ ν₯μμν΅λλ€.
- μμ‘΄μ± μ²λ¦¬ μ©μ΄: λͺ μμ μΈ μμ‘΄μ± μ μΈμΌλ‘ λͺ¨λμ΄ μ¬λ°λ₯Έ μμλ‘ λ‘λλλλ‘ λ³΄μ₯ν©λλ€.
λ¨μ :
- μ₯ν©ν λ¬Έλ²: CommonJSμ λΉν΄ μμ±νκ³ μ½κΈ°κ° λ 볡μ‘ν μ μμ΅λλ€.
- νμ¬λ μΈκΈ°κ° μ μ: ESMκ³Ό λͺ¨λ λ²λ€λ¬μ μν΄ λ체λμμ§λ§, λ κ±°μ νλ‘μ νΈμμλ μ¬μ ν μ¬μ©λ©λλ€.
ESM (ECMAScript λͺ¨λ)
κΈ°μ: νμ€ μλ°μ€ν¬λ¦½νΈ (ECMAScript μ¬μ)
μ£Όμ μ¬μ© μ¬λ‘: λΈλΌμ°μ λ° μλ²μ¬μ΄λ κ°λ° (Node.js μ§μ ν¬ν¨)
μ£Όμ νΉμ§:
- νμ€νλ λ¬Έλ²: 곡μ μλ°μ€ν¬λ¦½νΈ μΈμ΄ μ¬μμ μΌλΆμ λλ€.
importμexport: λͺ¨λμ κ°μ Έμ€κ³ λ΄λ³΄λ΄λ λ° μ¬μ©λ©λλ€.- μ μ λΆμ: λκ΅¬κ° λͺ¨λμ μ μ μΌλ‘ λΆμνμ¬ μ±λ₯μ κ°μ νκ³ μ€λ₯λ₯Ό μ‘°κΈ°μ λ°κ²¬ν μ μμ΅λλ€.
- λΉλκΈ°μ λ‘λ© (λΈλΌμ°μ μμ): μ΅μ λΈλΌμ°μ λ ESMμ λΉλκΈ°μ μΌλ‘ λ‘λν©λλ€.
- λ€μ΄ν°λΈ μ§μ: λΈλΌμ°μ μ Node.jsμμ λ€μ΄ν°λΈ μ§μμ΄ μ¦κ°νκ³ μμ΅λλ€.
μμ:
// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
// app.js
import { add, subtract } from './math.js';
console.log(add(2, 3)); // μΆλ ₯: 5
console.log(subtract(5, 2)); // μΆλ ₯: 3
μ₯μ :
- νμ€νλ¨: μλ°μ€ν¬λ¦½νΈ μΈμ΄μ μΌλΆμ΄λ―λ‘ μ₯κΈ°μ μΈ νΈνμ±κ³Ό μ§μμ΄ λ³΄μ₯λ©λλ€.
- μ μ λΆμ: κ³ κΈ μ΅μ ν λ° μ€λ₯ κ°μ§λ₯Ό κ°λ₯νκ² ν©λλ€.
- λ€μ΄ν°λΈ μ§μ: λΈλΌμ°μ μ Node.jsμμ λ€μ΄ν°λΈ μ§μμ΄ μ¦κ°νμ¬ νΈλμ€νμΌλ§μ νμμ±μ μ€μ¬μ€λλ€.
- νΈλ¦¬ μ °μ΄νΉ: λ²λ€λ¬κ° μ¬μ©νμ§ μλ μ½λ(λ°λ μ½λ μ κ±°)λ₯Ό μ κ±°νμ¬ λ²λ€ ν¬κΈ°λ₯Ό μ€μΌ μ μμ΅λλ€.
- λ λͺ νν λ¬Έλ²: AMDμ λΉν΄ λ κ°κ²°νκ³ κ°λ μ± μ’μ λ¬Έλ²μ κ°μ§λλ€.
λ¨μ :
- λΈλΌμ°μ νΈνμ±: ꡬν λΈλΌμ°μ μμλ νΈλμ€νμΌλ§(Babelκ³Ό κ°μ λꡬ μ¬μ©)μ΄ νμν μ μμ΅λλ€.
- Node.js μ§μ: Node.jsκ° μ΄μ ESMμ μ§μνμ§λ§, λ§μ κΈ°μ‘΄ Node.js νλ‘μ νΈμμλ μ¬μ ν CommonJSκ° μ§λ°°μ μΈ λͺ¨λ μμ€ν μ λλ€.
λ°μ κ³Ό μ±ν
μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν μ λ°μ μ μΉ κ°λ° νκ²½μ λ³ννλ μꡬλ₯Ό λ°μν©λλ€:
- μ΄μ°½κΈ°: λͺ¨λ μμ€ν μμ΄ μ μ λ³μλ§ μ¬μ©νμ΅λλ€. μ΄λ μμ νλ‘μ νΈμμλ κ΄λ¦¬ κ°λ₯νμ§λ§ μ½λλ² μ΄μ€κ° 컀μ§λ©΄μ κΈλ°© λ¬Έμ κ° λμμ΅λλ€.
- CommonJS: Node.jsμ ν¨κ» μλ²μ¬μ΄λ μλ°μ€ν¬λ¦½νΈ κ°λ°μ μꡬλ₯Ό ν΄κ²°νκΈ° μν΄ λ±μ₯νμ΅λλ€.
- AMD: λΈλΌμ°μ μμ λΉλκΈ° λͺ¨λ λ‘λ©μ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ κ°λ°λμμ΅λλ€.
- UMD (Universal Module Definition): CommonJSμ AMD νκ²½ λͺ¨λμ νΈνλλ λͺ¨λμ λ§λλ κ²μ λͺ©νλ‘ νμ¬ λ μ¬μ΄μ λ€λ¦¬ μν μ νμ΅λλ€. ESMμ΄ λ리 μ§μλλ μ§κΈμ λ μ€μν©λλ€.
- ESM: νμ¬ λΈλΌμ°μ μ μλ²μ¬μ΄λ κ°λ° λͺ¨λμμ μ νΈλλ νμ€νλ λͺ¨λ μμ€ν μ λλ€.
μ€λλ ESMμ νμ€ν, μ±λ₯ μ΄μ , κ·Έλ¦¬κ³ μ¦κ°νλ λ€μ΄ν°λΈ μ§μμ νμ μ΄ λΉ λ₯΄κ² μ±νλκ³ μμ΅λλ€. κ·Έλ¬λ κΈ°μ‘΄ Node.js νλ‘μ νΈμμλ CommonJSκ° μ¬μ ν λ리 μ¬μ©λκ³ μμΌλ©°, λ κ±°μ λΈλΌμ°μ μ ν리μΌμ΄μ μμλ AMDλ₯Ό μ¬μ ν μ°Ύμλ³Ό μ μμ΅λλ€.
λͺ¨λ λ²λ€λ¬: κ°κ·Ή λ©μ°κΈ°
Webpack, Rollup, Parcelκ³Ό κ°μ λͺ¨λ λ²λ€λ¬λ νλ μλ°μ€ν¬λ¦½νΈ κ°λ°μμ μ€μν μν μ ν©λλ€. μ΄λ€μ λ€μκ³Ό κ°μ μμ μ μνν©λλ€:
- λͺ¨λ κ²°ν©: μ¬λ¬ μλ°μ€ν¬λ¦½νΈ νμΌ(λ° κΈ°ν μμ°)μ λ°°ν¬λ₯Ό μν΄ νλ λλ λͺ κ°μ μ΅μ νλ νμΌλ‘ λ¬Άμ΅λλ€.
- μ½λ νΈλμ€νμΌ: μ΅μ μλ°μ€ν¬λ¦½νΈ(ESM ν¬ν¨)λ₯Ό ꡬν λΈλΌμ°μ μμ μ€νλ μ μλ μ½λλ‘ λ³νν©λλ€.
- μ½λ μ΅μ ν: μ±λ₯ ν₯μμ μν΄ μΆμ(minification), νΈλ¦¬ μ °μ΄νΉ, μ½λ λΆν κ³Ό κ°μ μ΅μ νλ₯Ό μνν©λλ€.
- μμ‘΄μ± κ΄λ¦¬: μμ‘΄μ±μ ν΄κ²°νκ³ ν¬ν¨νλ κ³Όμ μ μλνν©λλ€.
λΈλΌμ°μ μ Node.jsμμ ESMμ λ€μ΄ν°λΈλ‘ μ§μνλλΌλ, λͺ¨λ λ²λ€λ¬λ 볡μ‘ν μλ°μ€ν¬λ¦½νΈ μ ν리μΌμ΄μ μ μ΅μ ννκ³ κ΄λ¦¬νλ λ° μ¬μ ν μ μ©ν λꡬμ λλ€.
μ¬λ°λ₯Έ λͺ¨λ μμ€ν μ ννκΈ°
"μ΅κ³ μ" λͺ¨λ μμ€ν μ νλ‘μ νΈμ νΉμ λ§₯λ½κ³Ό μꡬ μ¬νμ λ°λΌ λ€λ¦ λλ€:
- μ νλ‘μ νΈ: ESMμ νμ€ν, μ±λ₯ μ΄μ λ° μ¦κ°νλ λ€μ΄ν°λΈ μ§μμΌλ‘ μΈν΄ μΌλ°μ μΌλ‘ μ νλ‘μ νΈμ κΆμ₯λλ μ νμ λλ€.
- Node.js νλ‘μ νΈ: κΈ°μ‘΄ Node.js νλ‘μ νΈμμλ μ¬μ ν CommonJSκ° λ리 μ¬μ©λμ§λ§, ESMμΌλ‘ λ§μ΄κ·Έλ μ΄μ
νλ κ²μ΄ μ μ λ κΆμ₯λκ³ μμ΅λλ€. Node.jsλ λ λͺ¨λ μμ€ν
μ λͺ¨λ μ§μνλ―λ‘ νμμ κ°μ₯ μ ν©ν κ²μ μ ννκ±°λ λμ
import()λ₯Ό μ¬μ©νμ¬ ν¨κ» μ¬μ©ν μλ μμ΅λλ€. - λ κ±°μ λΈλΌμ°μ νλ‘μ νΈ: ꡬν λΈλΌμ°μ νλ‘μ νΈμλ AMDκ° μ‘΄μ¬ν μ μμ΅λλ€. μ±λ₯ λ° μ μ§λ³΄μμ± ν₯μμ μν΄ λͺ¨λ λ²λ€λ¬μ ν¨κ» ESMμΌλ‘ λ§μ΄κ·Έλ μ΄μ νλ κ²μ κ³ λ €νμμμ€.
- λΌμ΄λΈλ¬λ¦¬ λ° ν¨ν€μ§: λΈλΌμ°μ μ Node.js νκ²½ λͺ¨λμμ μ¬μ©λ λΌμ΄λΈλ¬λ¦¬μ κ²½μ°, νΈνμ±μ κ·ΉλννκΈ° μν΄ CommonJSμ ESM λ²μ μ λͺ¨λ κ²μνλ κ²μ κ³ λ €νμμμ€. λ§μ λκ΅¬κ° μ΄ μμ μ μλμΌλ‘ μ²λ¦¬ν΄ μ€λλ€.
κ΅κ²½μ λλλλ μ€μ μ¬λ‘
μ μΈκ³μ μΌλ‘ λ€μν λ§₯λ½μμ λͺ¨λ μμ€ν μ΄ μ΄λ»κ² μ¬μ©λλμ§μ λν μμλ λ€μκ³Ό κ°μ΅λλ€:
- μΌλ³Έμ μ΄μ»€λ¨Έμ€ νλ«νΌ: λκ·λͺ¨ μ΄μ»€λ¨Έμ€ νλ«νΌμ νλ‘ νΈμλμ Reactμ ν¨κ» ESMμ μ¬μ©νμ¬ μΌλ³Έ μ¬μ©μλ₯Ό μν νμ΄μ§ λ‘λ μκ°μ κ°μ νκ³ λ²λ€ ν¬κΈ°λ₯Ό μ€μ΄κΈ° μν΄ νΈλ¦¬ μ °μ΄νΉμ νμ©ν μ μμ΅λλ€. Node.jsλ‘ κ΅¬μΆλ λ°±μλλ μ μ§μ μΌλ‘ CommonJSμμ ESMμΌλ‘ λ§μ΄κ·Έλ μ΄μ ν μ μμ΅λλ€.
- λ μΌμ κΈμ΅ μ ν리μΌμ΄μ : μ격ν 보μ μꡬ μ¬νμ΄ μλ κΈμ΅ μ ν리μΌμ΄μ μ Webpackμ μ¬μ©νμ¬ λͺ¨λμ λ²λ€λ§νμ¬ λͺ¨λ μ½λκ° λ μΌ κΈμ΅ κΈ°κ΄μ λ°°ν¬λκΈ° μ μ μ μ νκ² κ²ν λκ³ μ΅μ νλλλ‘ ν μ μμ΅λλ€. μ΄ μ ν리μΌμ΄μ μ μλ‘μ΄ κ΅¬μ± μμμλ ESMμ, λ μ€λλκ³ ν립λ λͺ¨λμλ CommonJSλ₯Ό μ¬μ©ν μ μμ΅λλ€.
- λΈλΌμ§μ κ΅μ‘ νλ«νΌ: μ¨λΌμΈ νμ΅ νλ«νΌμ λΈλΌμ§ νμλ€μ μν λͺ¨λμ λΉλκΈ° λ‘λ©μ κ΄λ¦¬νκΈ° μν΄ λ κ±°μ μ½λλ² μ΄μ€μμ AMD(RequireJS)λ₯Ό μ¬μ©ν μ μμ΅λλ€. μ΄ νλ«νΌμ μ±λ₯κ³Ό κ°λ°μ κ²½νμ κ°μ νκΈ° μν΄ Vue.jsμ κ°μ μ΅μ νλ μμν¬λ₯Ό μ¬μ©νμ¬ ESMμΌλ‘ λ§μ΄κ·Έλ μ΄μ μ κ³νν μ μμ΅λλ€.
- μ μΈκ³μ μΌλ‘ μ¬μ©λλ νμ
λꡬ: κΈλ‘λ² νμ
λꡬλ ESMκ³Ό λμ
import()λ₯Ό μ‘°ν©νμ¬ μ¬μ©μμ μμΉμ μΈμ΄ μ€μ μ λ°λΌ μ¬μ©μ κ²½νμ λ§μΆ€ννλ©΄μ νμμ λ°λΌ κΈ°λ₯μ λ‘λν μ μμ΅λλ€. Node.jsλ‘ κ΅¬μΆλ λ°±μλ APIλ μ μ λ ESM λͺ¨λμ μ¬μ©νκ³ μμ΅λλ€.
μ€μ©μ μΈ ν΅μ°°κ³Ό λͺ¨λ² μ¬λ‘
μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν μμ μ λ€μκ³Ό κ°μ μ€μ©μ μΈ ν΅μ°°κ³Ό λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄μμμ€:
- ESM μ±ν: μ νλ‘μ νΈμμλ ESMμ μ°μ μνκ³ κΈ°μ‘΄ νλ‘μ νΈλ₯Ό ESMμΌλ‘ λ§μ΄κ·Έλ μ΄μ νλ κ²μ κ³ λ €νμμμ€.
- λͺ¨λ λ²λ€λ¬ μ¬μ©: λ€μ΄ν°λΈ ESM μ§μμ΄ μλλΌλ μ΅μ ν λ° μμ‘΄μ± κ΄λ¦¬λ₯Ό μν΄ Webpack, Rollup λλ Parcelκ³Ό κ°μ λͺ¨λ λ²λ€λ¬λ₯Ό μ¬μ©νμμμ€.
- λ²λ€λ¬ μ¬λ°λ₯΄κ² ꡬμ±: λ²λ€λ¬κ° ESM λͺ¨λμ μ¬λ°λ₯΄κ² μ²λ¦¬νκ³ νΈλ¦¬ μ °μ΄νΉμ μννλλ‘ κ΅¬μ±λμλμ§ νμΈνμμμ€.
- λͺ¨λμ μ½λ μμ±: λͺ¨λμ±μ μΌλμ λκ³ μ½λλ₯Ό μ€κ³νμ¬ ν° κ΅¬μ± μμλ₯Ό λ μκ³ μ¬μ¬μ© κ°λ₯ν λͺ¨λλ‘ λλμμμ€.
- μμ‘΄μ± λͺ μμ μ μΈ: κ° λͺ¨λμ μμ‘΄μ±μ λͺ ννκ² μ μνμ¬ μ½λμ λͺ νμ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€μμμ€.
- TypeScript μ¬μ© κ³ λ €: TypeScriptλ μ μ νμ΄νκ³Ό κ°μ λ λꡬλ₯Ό μ 곡νμ¬ λͺ¨λ μμ€ν μ¬μ©μ μ΄μ μ λμ± ν₯μμν¬ μ μμ΅λλ€.
- μ΅μ μ 보 μ μ§: μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν λ° λͺ¨λ λ²λ€λ¬μ μ΅μ κ°λ° λν₯μ κ³μ μ£Όμνμμμ€.
- λͺ¨λ μ² μ ν ν μ€νΈ: λ¨μ ν μ€νΈλ₯Ό μ¬μ©νμ¬ κ°λ³ λͺ¨λμ λμμ κ²μ¦νμμμ€.
- λͺ¨λ λ¬Έμν: λ€λ₯Έ κ°λ°μκ° μ½κ² μ΄ν΄νκ³ μ¬μ©ν μ μλλ‘ κ° λͺ¨λμ λν λͺ ννκ³ κ°κ²°ν λ¬Έμλ₯Ό μ 곡νμμμ€.
- λΈλΌμ°μ νΈνμ± μ μ: Babelκ³Ό κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό νΈλμ€νμΌνμ¬ κ΅¬ν λΈλΌμ°μ μμ νΈνμ±μ 보μ₯νμμμ€.
κ²°λ‘
μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν μ μ μ λ³μ μλμμ λ¨Ό κΈΈμ μμ΅λλ€. CommonJS, AMD, ESMμ κ°κ° νλ μλ°μ€ν¬λ¦½νΈ νκ²½μ νμ±νλ λ° μ€μν μν μ νμ΅λλ€. μ΄μ ESMμ΄ λλΆλΆμ μ νλ‘μ νΈμμ μ νΈλλ μ νμ΄μ§λ§, μ΄λ¬ν μμ€ν μ μμ¬μ λ°μ μ μ΄ν΄νλ κ²μ λͺ¨λ μλ°μ€ν¬λ¦½νΈ κ°λ°μμκ² νμμ μ λλ€. λͺ¨λμ±μ μ±ννκ³ μ¬λ°λ₯Έ λꡬλ₯Ό μ¬μ©ν¨μΌλ‘μ¨ μ μΈκ³ μ¬μ©μλ₯Ό μν νμ₯ κ°λ₯νκ³ μ μ§λ³΄μνκΈ° μ¬μ°λ©° μ±λ₯μ΄ λ°μ΄λ μλ°μ€ν¬λ¦½νΈ μ ν리μΌμ΄μ μ ꡬμΆν μ μμ΅λλ€.
μΆκ° μλ£
- ECMAScript λͺ¨λ: MDN μΉ λ¬Έμ
- Node.js λͺ¨λ: Node.js λ¬Έμ
- Webpack: Webpack 곡μ μΉμ¬μ΄νΈ
- Rollup: Rollup 곡μ μΉμ¬μ΄νΈ
- Parcel: Parcel 곡μ μΉμ¬μ΄νΈ