μ μΈκ³ κ°λ°μλ₯Ό μν΄ JavaScript λͺ¨λ κ°μ Έμ€κΈ°κ° μ μ λΆμμ ν΅ν΄ μ΄λ»κ² μ΅μ νλμ΄ μ ν리μΌμ΄μ μ±λ₯κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€λμ§ μ¬μΈ΅μ μΌλ‘ μμλ΄ λλ€.
μ±λ₯ μ κΈ ν΄μ : JavaScript λͺ¨λ κ°μ Έμ€κΈ° λ° μ μ λΆμ μ΅μ ν
λμμμ΄ μ§ννλ μΉ κ°λ° νκ²½μμ μ±λ₯κ³Ό μ μ§λ³΄μμ±μ 무μλ³΄λ€ μ€μν©λλ€. JavaScript μ ν리μΌμ΄μ μ 볡μ‘μ±μ΄ μ¦κ°ν¨μ λ°λΌ μ’ μμ±μ κ΄λ¦¬νκ³ ν¨μ¨μ μΈ μ½λ μ€νμ 보μ₯νλ κ²μ΄ μ€μν κ³Όμ κ° λ©λλ€. μ΅μ νλ₯Ό μν κ°μ₯ μν₯λ ₯ μλ μμ μ€ νλλ JavaScript λͺ¨λ κ°μ Έμ€κΈ°μ μ΄κ²μ΄ μ΄λ»κ² μ²λ¦¬λλμ§, νΉν μ μ λΆμμ κ΄μ μμ μ΄ν΄λ΄ λλ€. μ΄ κ²μλ¬Όμ λͺ¨λ κ°μ Έμ€κΈ°μ 볡μ‘μ±μ κΉμ΄ νκ³ λ€κ³ , λΉν¨μ¨μ±μ μλ³νκ³ ν΄κ²°νλ λ° μμ΄ μ μ λΆμμ κ°λ ₯ν νμ νꡬνλ©°, μ μΈκ³ κ°λ°μλ€μ΄ λ λΉ λ₯΄κ³ κ²¬κ³ ν μ ν리μΌμ΄μ μ ꡬμΆν μ μλλ‘ μ€ν κ°λ₯ν ν΅μ°°λ ₯μ μ 곡ν κ²μ λλ€.
JavaScript λͺ¨λ μ΄ν΄νκΈ°: νλ κ°λ°μ κΈ°λ°
μ΅μ νμ λν΄ μμΈν μμ보기 μ μ JavaScript λͺ¨λμ λν νμ€ν μ΄ν΄κ° νμμ μ λλ€. λͺ¨λμ μ¬μ©νλ©΄ μ½λλ₯Ό λ μκ³ κ΄λ¦¬νκΈ° μ¬μ°λ©° μ¬μ¬μ© κ°λ₯ν μ‘°κ°μΌλ‘ λΆν΄ν μ μμ΅λλ€. μ΄λ¬ν λͺ¨λ λ°©μμ νμ₯ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆνκ³ , λ λμ μ½λ ꡬμ±μ μ΄μ§νλ©°, μ§λ¦¬μ μμΉμ κ΄κ³μμ΄ κ°λ° ν κ°μ νμ μ μ©μ΄νκ² νλ λ° κΈ°λ³Έμ΄ λ©λλ€.
CommonJS λ ES λͺ¨λ: λ μμ€ν μ μ΄μΌκΈ°
μμ¬μ μΌλ‘ JavaScript κ°λ°μ Node.js νκ²½μμ λ리 μ¬μ©λλ CommonJS λͺ¨λ μμ€ν μ ν¬κ² μμ‘΄νμ΅λλ€. CommonJSλ λκΈ°μ ν¨μ κΈ°λ°μ `require()` ꡬ문μ μ¬μ©ν©λλ€. ν¨κ³Όμ μ΄μ§λ§, μ΄λ¬ν λκΈ°μ νΉμ±μ μ±λ₯μ μν΄ λΉλκΈ° λ‘λ©μ΄ μ νΈλλ λΈλΌμ°μ νκ²½μμ λ¬Έμ λ₯Ό μΌκΈ°ν μ μμ΅λλ€.
ECMAScript λͺ¨λ(ES Modules)μ λ±μ₯μ λͺ¨λ κ΄λ¦¬μ νμ€νλκ³ μ μΈμ μΈ μ κ·Ό λ°©μμ κ°μ Έμμ΅λλ€. `import` λ° `export` ꡬ문μ ν΅ν΄ ES λͺ¨λμ λ κ°λ ₯νκ³ μ μ°ν μμ€ν μ μ 곡ν©λλ€. μ£Όμ μ₯μ μ λ€μκ³Ό κ°μ΅λλ€:
- μ μ λΆμ μΉνμ±: `import` λ° `export` λ¬Έμ λΉλ μμ μ ν΄μλλ―λ‘ λκ΅¬κ° μ½λλ₯Ό μ€ννμ§ μκ³ λ μ’ μμ±μ λΆμνκ³ μ΅μ νν μ μμ΅λλ€.
- λΉλκΈ° λ‘λ©: ES λͺ¨λμ ν¨μ¨μ μΈ λΈλΌμ°μ λ λλ§μ μ€μν λΉλκΈ° λ‘λ©μ μν΄ λ³Έμ§μ μΌλ‘ μ€κ³λμμ΅λλ€.
- μ΅μμ `await` λ° λμ κ°μ Έμ€κΈ°: μ΄λ¬ν κΈ°λ₯μ λͺ¨λ λ‘λ©μ λν λ μ κ΅ν μ μ΄λ₯Ό κ°λ₯νκ² ν©λλ€.
Node.jsλ μ μ°¨ ES λͺ¨λμ μ±ννκ³ μμ§λ§, λ§μ κΈ°μ‘΄ νλ‘μ νΈλ μ¬μ ν CommonJSλ₯Ό νμ©ν©λλ€. μ°¨μ΄μ μ μ΄ν΄νκ³ μΈμ κ°κ°μ μ¬μ©ν΄μΌ νλμ§ μλ κ²μ ν¨κ³Όμ μΈ λͺ¨λ κ΄λ¦¬μ νμμ μ λλ€.
λͺ¨λ μ΅μ νμμ μ μ λΆμμ μ€μν μν
μ μ λΆμμ μ½λλ₯Ό μ€μ λ‘ μ€ννμ§ μκ³ κ²μ¬νλ κ²μ ν¬ν¨ν©λλ€. JavaScript λͺ¨λμ λ§₯λ½μμ μ μ λΆμ λꡬλ λ€μμ μνν μ μμ΅λλ€:
- λ°λ μ½λ μλ³: κ°μ Έμμ§λ§ μ¬μ©λμ§ μλ μ½λλ₯Ό κ°μ§νκ³ μ κ±°ν©λλ€.
- μ’ μμ± ν΄κ²°: μ ν리μΌμ΄μ μ μ 체 μ’ μμ± κ·Έλνλ₯Ό λ§€νν©λλ€.
- λ²λ€λ§ μ΅μ ν: λ λΉ λ₯Έ λ‘λ©μ μν΄ κ΄λ ¨ λͺ¨λμ ν¨μ¨μ μΌλ‘ κ·Έλ£Ήνν©λλ€.
- μ€λ₯ μ‘°κΈ° κ°μ§: μν μ’ μμ± λλ μλͺ»λ κ°μ Έμ€κΈ°μ κ°μ μ μ¬μ μΈ λ¬Έμ λ₯Ό λ°νμ μ μ ν¬μ°©ν©λλ€.
μ΄λ¬ν μ¬μ μλ°©μ μ κ·Ό λ°©μμ νλ JavaScript λΉλ νμ΄νλΌμΈμ ν΅μ¬μ λλ€. Webpack, Rollup, Parcelκ³Ό κ°μ λꡬλ μ μ λΆμμ ν¬κ² μμ‘΄νμ¬ κΈ°λ₯μ μνν©λλ€.
νΈλ¦¬ μμ΄νΉ: μ¬μ©νμ§ μλ κ² μ κ±°νκΈ°
ES λͺ¨λμ μ μ λΆμμΌλ‘ κ°λ₯ν΄μ§ κ°μ₯ μ€μν μ΅μ νλ νΈλ¦¬ μμ΄νΉμ λλ€. νΈλ¦¬ μμ΄νΉμ λͺ¨λ κ·Έλνμμ μ¬μ©λμ§ μλ λ΄λ³΄λ΄κΈ°λ₯Ό μ κ±°νλ κ³Όμ μ λλ€. λ²λ€λ¬κ° `import` λ¬Έμ μ μ μΌλ‘ λΆμν μ μμ λ, μ ν리μΌμ΄μ μμ μ€μ λ‘ μ¬μ©λλ νΉμ ν¨μ, ν΄λμ€ λλ λ³μλ₯Ό κ²°μ ν μ μμ΅λλ€. μ°Έμ‘°λμ§ μλ λ΄λ³΄λ΄κΈ°λ μ΅μ’ λ²λ€μμ μμ νκ² μ κ±°λ μ μμ΅λλ€.
μ 체 μ νΈλ¦¬ν° λΌμ΄λΈλ¬λ¦¬λ₯Ό κ°μ Έμ€λ μλ리μ€λ₯Ό κ³ λ €ν΄ λ³΄μΈμ:
// utils.js
export function usefulFunction() {
// ...
}
export function anotherUsefulFunction() {
// ...
}
export function unusedFunction() {
// ...
}
κ·Έλ¦¬κ³ μ ν리μΌμ΄μ μμ:
// main.js
import { usefulFunction } from './utils';
usefulFunction();
νΈλ¦¬ μμ΄νΉμ μννλ λ²λ€λ¬λ `usefulFunction`λ§ κ°μ Έμ€κ³ μ¬μ©λλ€λ κ²μ μΈμν κ²μ λλ€. `anotherUsefulFunction` λ° `unusedFunction`μ μ΅μ’ λ²λ€μμ μ μΈλμ΄ λ μκ³ λΉ λ₯΄κ² λ‘λ©λλ μ ν리μΌμ΄μ μΌλ‘ μ΄μ΄μ§λλ€. μ΄λ λ§μ μ νΈλ¦¬ν°λ₯Ό λ ΈμΆνλ λΌμ΄λΈλ¬λ¦¬μ νΉν ν¨κ³Όμ μ΄λ©°, μ¬μ©μλ νμν κ²λ§ κ°μ Έμ¬ μ μμ΅λλ€.
ν΅μ¬ μμ : νΈλ¦¬ μμ΄νΉ κΈ°λ₯μ μ΅λν νμ©νλ €λ©΄ ES λͺ¨λ(`import`/`export`)μ μμ©νμΈμ.
λͺ¨λ ν΄μ: νμν κ²μ μ°ΎκΈ°
`import` λ¬Έμ μμ±ν λ JavaScript λ°νμ λλ λΉλ λꡬλ ν΄λΉ λͺ¨λμ μ°ΎμμΌ ν©λλ€. μ΄ νλ‘μΈμ€λ₯Ό λͺ¨λ ν΄μμ΄λΌκ³ ν©λλ€. μ μ λΆμμ λ€μκ³Ό κ°μ κ·μΉμ μ΄ν΄ν¨μΌλ‘μ¨ μ€μν μν μ ν©λλ€:
- νμΌ νμ₯μ: `.js`, `.mjs`, `.cjs`κ° μμλλμ§ μ¬λΆ.
- `package.json` `main`, `module`, `exports` νλ: μ΄ νλλ λ²λ€λ¬κ° ν¨ν€μ§μ μ¬λ°λ₯Έ μ§μ μ μ μ°Ύλ λ° λμμ μ£Όλ©°, μ’ μ’ CommonJS λ° ES λͺ¨λ λ²μ μ ꡬλΆν©λλ€.
- μΈλ±μ€ νμΌ: λλ ν°λ¦¬κ° λͺ¨λλ‘ μ²λ¦¬λλ λ°©λ² (μ: `import 'lodash'`λ `lodash/index.js`λ‘ ν΄μλ μ μμ΅λλ€).
- λͺ¨λ κ²½λ‘ λ³μΉ: λΉλ λꡬμ μ¬μ©μ μ§μ ꡬμ±μΌλ‘ κ°μ Έμ€κΈ° κ²½λ‘λ₯Ό λ¨μΆνκ±°λ λ³μΉμ μ§μ ν©λλ€ (μ: `../../components/Button` λμ `@/components/Button`).
μ μ λΆμμ λͺ¨λ ν΄μμ΄ κ²°μ λ‘ μ μ΄κ³ μμΈ‘ κ°λ₯νλλ‘ λ³΄μ₯νμ¬ λ°νμ μ€λ₯λ₯Ό μ€μ΄κ³ λ€λ₯Έ μ΅μ νλ₯Ό μν μ’ μμ± κ·Έλνμ μ νμ±μ ν₯μμν΅λλ€.
μ½λ λΆν : μ£Όλ¬Έν λ‘λ©
`import` λ¬Έ μ체μ μ§μ μ μΈ μ΅μ νλ μλμ§λ§, μ μ λΆμμ μ½λ λΆν μ μ€μν©λλ€. μ½λ λΆν μ μ¬μ©νλ©΄ μ ν리μΌμ΄μ λ²λ€μ νμμ λ°λΌ λ‘λν μ μλ λ μμ μ²ν¬λ‘ λΆν ν μ μμ΅λλ€. μ΄λ νΉν λκ·λͺ¨ λ¨μΌ νμ΄μ§ μ ν리μΌμ΄μ (SPA)μ μ΄κΈ° λ‘λ© μκ°μ ν¬κ² ν₯μμν΅λλ€.
λμ `import()` κ΅¬λ¬Έμ΄ μ¬κΈ°μ ν΅μ¬μ λλ€:
// Load a component only when needed, e.g., on button click
button.addEventListener('click', async () => {
const module = await import('./heavy-component');
const HeavyComponent = module.default;
// Render HeavyComponent
});
Webpackκ³Ό κ°μ λ²λ€λ¬λ μ΄λ¬ν λμ `import()` νΈμΆμ μ μ μΌλ‘ λΆμνμ¬ κ°μ Έμ¨ λͺ¨λμ λν λ³λμ μ²ν¬λ₯Ό μμ±ν μ μμ΅λλ€. μ΄λ μ¬μ©μ λΈλΌμ°μ κ° νμ¬ λ³΄κΈ°μ νμν JavaScriptλ§ λ€μ΄λ‘λνμ¬ μ ν리μΌμ΄μ μ΄ ν¨μ¬ λ λ°μμ μΌλ‘ λκ»΄μ§κ² ν©λλ€.
κΈλ‘λ² μν₯: μΈν°λ· μ°κ²° μλκ° λλ¦° μ§μμ μ¬μ©μμκ² μ½λ λΆν μ μ ν리μΌμ΄μ μ μ κ·Ό κ°λ₯νκ³ μ±λ₯ μ’κ² λ§λλ κ²μ 체μΈμ κ° λ μ μμ΅λλ€.
λͺ¨λ κ°μ Έμ€κΈ°λ₯Ό μ΅μ ννκΈ° μν μ€μ©μ μΈ μ λ΅
λͺ¨λ κ°μ Έμ€κΈ° μ΅μ νλ₯Ό μν΄ μ μ λΆμμ νμ©νλ €λ©΄ μ½λλ₯Ό ꡬμ±νκ³ λΉλ λꡬλ₯Ό ꡬμ±νλ λ°©μμ μμμ μΈ λ Έλ ₯μ΄ νμν©λλ€.
1. ES λͺ¨λ(ESM) μμ©
κ°λ₯ν κ²½μ° μ½λλ² μ΄μ€λ₯Ό ES λͺ¨λμ μ¬μ©νλλ‘ λ§μ΄κ·Έλ μ΄μ νμμμ€. μ΄λ νΈλ¦¬ μμ΄νΉκ³Ό κ°μ μ μ λΆμ κΈ°λ₯μ μ΄μ μ λ릴 μ μλ κ°μ₯ μ§μ μ μΈ κ²½λ‘λ₯Ό μ 곡ν©λλ€. λ§μ μ΅μ JavaScript λΌμ΄λΈλ¬λ¦¬λ μ΄μ ESM λΉλλ₯Ό μ 곡νλ©°, μ’ μ’ `package.json`μ `module` νλλ‘ νμλ©λλ€.
2. νΈλ¦¬ μμ΄νΉμ μν΄ λ²λ€λ¬ ꡬμ±
λλΆλΆμ μ΅μ λ²λ€λ¬(Webpack, Rollup, Parcel, Vite)λ ES λͺ¨λμ μ¬μ©ν λ κΈ°λ³Έμ μΌλ‘ νΈλ¦¬ μμ΄νΉμ΄ νμ±νλμ΄ μμ΅λλ€. κ·Έλ¬λ νμ±νλμ΄ μλμ§ νμΈνκ³ ν΄λΉ ꡬμ±μ μ΄ν΄νλ κ²μ΄ μ’μ΅λλ€:
- Webpack: `mode`κ° `'production'`μΌλ‘ μ€μ λμ΄ μλμ§ νμΈνμΈμ. Webpackμ νλ‘λμ λͺ¨λλ νΈλ¦¬ μμ΄νΉμ μλμΌλ‘ νμ±νν©λλ€.
- Rollup: νΈλ¦¬ μμ΄νΉμ ν΅μ¬ κΈ°λ₯μ΄λ©° κΈ°λ³Έμ μΌλ‘ νμ±νλμ΄ μμ΅λλ€.
- Vite: νλ‘λμ λΉλλ₯Ό μν΄ λ΄λΆμ μΌλ‘ Rollupμ νμ©νμ¬ λ°μ΄λ νΈλ¦¬ μμ΄νΉμ 보μ₯ν©λλ€.
μ μ§ κ΄λ¦¬νλ λΌμ΄λΈλ¬λ¦¬μ κ²½μ°, λΉλ νλ‘μΈμ€κ° ES λͺ¨λμ μ¬λ°λ₯΄κ² λ΄λ³΄λ΄μ΄ μλΉμμκ² νΈλ¦¬ μμ΄νΉμ κ°λ₯νκ² νλμ§ νμΈνμΈμ.
3. μ½λ λΆν μ μν΄ λμ κ°μ Έμ€κΈ° νμ©
μ¦μ νμνμ§ μμ μ ν리μΌμ΄μ λΆλΆ(μ: μμ£Ό μ‘μΈμ€νμ§ μλ κΈ°λ₯, λκ·λͺ¨ κ΅¬μ± μμ, κ²½λ‘)μ μλ³νκ³ λμ `import()`λ₯Ό μ¬μ©νμ¬ μ§μ° λ‘λνμμμ€. μ΄λ μΈμ§ μ±λ₯μ ν₯μμν€λ κ°λ ₯ν κΈ°μ μ λλ€.
μμ: React Routerμ κ°μ νλ μμν¬μ κ²½λ‘ κΈ°λ° μ½λ λΆν :
import React, { Suspense, lazy } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const HomePage = lazy(() => import('./pages/HomePage'));
const AboutPage = lazy(() => import('./pages/AboutPage'));
const ContactPage = lazy(() => import('./pages/ContactPage'));
function App() {
return (
Loading...
μ΄ μμμμ κ° νμ΄μ§ κ΅¬μ± μμλ μ체 JavaScript μ²ν¬μ μμΌλ©°, μ¬μ©μκ° ν΄λΉ νΉμ κ²½λ‘λ‘ μ΄λν λλ§ λ‘λλ©λλ€.
4. νμ¬ λΌμ΄λΈλ¬λ¦¬ μ¬μ© μ΅μ ν
λκ·λͺ¨ λΌμ΄λΈλ¬λ¦¬μμ κ°μ Έμ¬ λλ νΈλ¦¬ μμ΄νΉμ μ΅λννκΈ° μν΄ κ°μ Έμ¬ λμμ λͺ νν μ§μ νμμμ€.
λ€μ λμ :
import _ from 'lodash';
_.debounce(myFunc, 300);
λ€μ μ νΈ:
import debounce from 'lodash/debounce';
debounce(myFunc, 300);
μ΄λ₯Ό ν΅ν΄ λ²λ€λ¬λ μ 체 Lodash λΌμ΄λΈλ¬λ¦¬ λμ `debounce` ν¨μλ§ λ μ ννκ² μλ³νκ³ ν¬ν¨ν μ μμ΅λλ€.
5. λͺ¨λ κ²½λ‘ λ³μΉ ꡬμ±
Webpack, Vite, Parcelκ³Ό κ°μ λꡬλ₯Ό μ¬μ©νλ©΄ κ²½λ‘ λ³μΉμ ꡬμ±ν μ μμ΅λλ€. μ΄λ `import` λ¬Έμ λ¨μννκ³ κ°λ μ±μ λμ΄λ©°, λΉλ λꡬμ λͺ¨λ ν΄μ νλ‘μΈμ€λ₯Ό λμ΅λλ€.
`vite.config.js`μ μμ ꡬμ±:
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': '/src',
'@components': '/src/components',
},
},
});
μ΄λ₯Ό ν΅ν΄ λ€μμ μμ±ν μ μμ΅λλ€:
import Button from '@/components/Button';
λ€μ λμ :
import Button from '../../components/Button';
6. μ¬μ΄λ μ΄ννΈ μ μ
νΈλ¦¬ μμ΄νΉμ μ μ `import` λ° `export` λ¬Έμ λΆμνμ¬ μλν©λλ€. λͺ¨λμ λ΄λ³΄λΈ κ°μ μ§μ μ°κ²°λμ§ μμ μ¬μ΄λ μ΄ννΈ(μ: μ μ κ°μ²΄ μμ , νλ¬κ·ΈμΈ λ±λ‘)κ° μλ κ²½μ°, λ²λ€λ¬λ μ΄λ₯Ό μμ νκ² μ κ±°νλ λ° μ΄λ €μμ κ²ͺμ μ μμ΅λλ€. λΌμ΄λΈλ¬λ¦¬λ `package.json`μ `"sideEffects": false` μμ±μ μ¬μ©νμ¬ λͺ¨λμ μ¬μ΄λ μ΄ννΈκ° μμμ λ²λ€λ¬μ λͺ μμ μΌλ‘ μλ € λ μ κ·Ήμ μΈ νΈλ¦¬ μμ΄νΉμ κ°λ₯νκ² ν΄μΌ ν©λλ€.
λΌμ΄λΈλ¬λ¦¬ μλΉμλ‘μ, ν¨κ³Όμ μΌλ‘ νΈλ¦¬ μμ΄νΉλμ§ μλ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λλ κ²½μ° ν΄λΉ `package.json`μμ `sideEffects` μμ±μ νμΈνμμμ€. μ΄ μμ±μ΄ `false`λ‘ μ€μ λμ΄ μμ§ μκ±°λ μ¬μ΄λ μ΄ννΈλ₯Ό μ ννκ² λμ΄νμ§ μμΌλ©΄ μ΅μ νλ₯Ό λ°©ν΄ν μ μμ΅λλ€.
7. μν μ’ μμ± μ΄ν΄
μν μ’ μμ±μ λͺ¨λ Aκ° λͺ¨λ Bλ₯Ό κ°μ Έμ€κ³ λͺ¨λ Bκ° λͺ¨λ Aλ₯Ό κ°μ Έμ¬ λ λ°μν©λλ€. CommonJSλ λλλ‘ μ΄λ₯Ό νμ©ν μ μμ§λ§, ES λͺ¨λμ λ μ격νλ©° μκΈ°μΉ μμ λμμ΄λ λΆμμ ν μ΄κΈ°νλ‘ μ΄μ΄μ§ μ μμ΅λλ€. μ μ λΆμ λꡬλ μ’ μ’ μ΄λ₯Ό κ°μ§ν μ μμΌλ©°, λΉλ λꡬμλ μ΄μ κ΄λ ¨λ νΉμ μ λ΅μ΄λ μ€λ₯κ° μμ μ μμ΅λλ€. μν μ’ μμ±μ ν΄κ²°νλ κ²(μ’ μ’ λ¦¬ν©ν λ§νκ±°λ κ³΅ν΅ λ Όλ¦¬λ₯Ό μΆμΆνμ¬)μ 건μ ν λͺ¨λ κ·Έλνμ λ§€μ° μ€μν©λλ€.
κΈλ‘λ² κ°λ°μ κ²½ν: μΌκ΄μ±κ³Ό μ±λ₯
μ μΈκ³ κ°λ°μμκ² μ΄λ¬ν λͺ¨λ μ΅μ ν κΈ°μ μ μ΄ν΄νκ³ μ μ©νλ κ²μ λ μΌκ΄λκ³ μ±λ₯ μ’μ κ°λ° κ²½νμΌλ‘ μ΄μ΄μ§λλ€:
- λ λΉ λ₯Έ λΉλ μκ°: ν¨μ¨μ μΈ λͺ¨λ μ²λ¦¬λ κ°λ° μ€ λ λΉ λ₯Έ νΌλλ°± 루νλ‘ μ΄μ΄μ§ μ μμ΅λλ€.
- μ€μ΄λ λ²λ€ ν¬κΈ°: λ²λ€ ν¬κΈ°κ° μμμ§λ©΄ λ€μ΄λ‘λ μλκ° λΉ¨λΌμ§κ³ μ ν리μΌμ΄μ μμ μλκ° λΉ¨λΌμ§λ©°, λ€μν λ€νΈμν¬ μ‘°κ±΄μ μ¬μ©μμκ² λ§€μ° μ€μν©λλ€.
- ν₯μλ λ°νμ μ±λ₯: ꡬ문 λΆμνκ³ μ€νν μ½λκ° μ€μ΄λ€λ©΄ λ λΉ λ¦Ών μ¬μ©μ κ²½νμΌλ‘ μ§κ²°λ©λλ€.
- ν₯μλ μ μ§λ³΄μμ±: μ ꡬ쑰νλκ³ λͺ¨λνλ μ½λλ² μ΄μ€λ μ΄ν΄νκ³ λλ²κΉ νλ©° νμ₯νκΈ° λ μ½μ΅λλ€.
μ΄λ¬ν κ΄νμ μ±νν¨μΌλ‘μ¨ κ°λ° νμ μΈν°λ· μλλ μ₯μΉ κΈ°λ₯μ κ΄κ³μμ΄ μ ν리μΌμ΄μ μ΄ μ μΈκ³ μ¬μ©μμκ² μ±λ₯ μ’κ³ μ κ·Ό κ°λ₯νλλ‘ λ³΄μ₯ν μ μμ΅λλ€.
λ―Έλ λν₯ λ° κ³ λ € μ¬ν
JavaScript μνκ³λ λμμμ΄ νμ νκ³ μμ΅λλ€. λͺ¨λ κ°μ Έμ€κΈ° λ° μ΅μ νμ κ΄λ ¨νμ¬ μ£Όλͺ©ν΄μΌ ν λͺ κ°μ§ λν₯μ λ€μκ³Ό κ°μ΅λλ€:
- HTTP/3 λ° μλ² νΈμ: μλ‘μ΄ λ€νΈμν¬ νλ‘ν μ½μ λͺ¨λμ΄ μ 곡λλ λ°©μμ μν₯μ λ―Έμ³ μ½λ λΆν λ° λ²λ€λ§μ μνμ μ μ¬μ μΌλ‘ λ³κ²½ν μ μμ΅λλ€.
- λΈλΌμ°μ μ λ€μ΄ν°λΈ ES λͺ¨λ: κ΄λ²μνκ² μ§μλμ§λ§, λΈλΌμ°μ λ€μ΄ν°λΈ λͺ¨λ λ‘λ©μ λ―Έλ¬ν μ°¨μ΄λ κ³μ μ§ννκ³ μμ΅λλ€.
- λΉλ λꡬ μ§ν: Viteμ κ°μ λꡬλ λ λΉ λ₯Έ λΉλ μκ°κ³Ό λ μ§λ₯μ μΈ μ΅μ νλ₯Ό ν΅ν΄ κ²½κ³λ₯Ό νλ¬Όκ³ μμΌλ©°, μ’ μ’ μ μ λΆμμ λ°μ μ νμ©ν©λλ€.
- WebAssembly (Wasm): Wasmμ΄ μ£Όλͺ©μ λ°μμ λ°λΌ λͺ¨λμ΄ Wasm μ½λμ μνΈ μμ©νλ λ°©μμ μ΄ν΄νλ κ²μ΄ μ μ λ μ€μν΄μ§ κ²μ λλ€.
κ²°λ‘
JavaScript λͺ¨λ κ°μ Έμ€κΈ°λ λ¨μν ꡬ문 κ·Έ μ΄μμ λλ€. μ΄λ νλ μ ν리μΌμ΄μ μν€ν μ²μ μ€μΆμ λλ€. ES λͺ¨λμ κ°μ μ μ΄ν΄νκ³ μ κ΅ν λΉλ λꡬλ₯Ό ν΅ν΄ μ μ λΆμμ νμ νμ©ν¨μΌλ‘μ¨ κ°λ°μλ μλΉν μ±λ₯ ν₯μμ λ¬μ±ν μ μμ΅λλ€. νΈλ¦¬ μμ΄νΉ, μ½λ λΆν λ° μ΅μ νλ λͺ¨λ ν΄μκ³Ό κ°μ κΈ°μ μ λ¨μν μ΅μ νλ₯Ό μν μ΅μ νκ° μλλλ€. μ΄λ μ μΈκ³ μ¬μ©μμκ² νμν κ²½νμ μ 곡νλ λΉ λ₯΄κ³ νμ₯ κ°λ₯νλ©° μ μ§λ³΄μ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν νμμ μΈ κ΄νμ λλ€. κ°λ° μν¬νλ‘μ°μμ λͺ¨λ μ΅μ νλ₯Ό μ°μ μμλ‘ μΌκ³ JavaScript νλ‘μ νΈμ μ§μ ν μ μ¬λ ₯μ μ κΈ ν΄μ νμμμ€.
μ€ν κ°λ₯ν ν΅μ°°λ ₯:
- ES λͺ¨λ μ±νμ μ°μ μνμμμ€.
- μ κ·Ήμ μΈ νΈλ¦¬ μμ΄νΉμ μν΄ λ²λ€λ¬λ₯Ό ꡬμ±νμμμ€.
- λΉν΅μ¬ κΈ°λ₯μ μ½λ λΆν μ μν΄ λμ κ°μ Έμ€κΈ°λ₯Ό ꡬννμμμ€.
- νμ¬ λΌμ΄λΈλ¬λ¦¬μμ κ°μ Έμ¬ λ ꡬ체μ μΌλ‘ λͺ μνμμμ€.
- λ κΉλν κ°μ Έμ€κΈ°λ₯Ό μν΄ κ²½λ‘ λ³μΉμ νμνκ³ κ΅¬μ±νμμμ€.
- μ¬μ©νλ λΌμ΄λΈλ¬λ¦¬κ° "sideEffects"λ₯Ό μ¬λ°λ₯΄κ² μ μΈνλμ§ νμΈνμμμ€.
μ΄λ¬ν μΈ‘λ©΄μ μ§μ€ν¨μΌλ‘μ¨ κΈλ‘λ² μ¬μ©μ κΈ°λ°μ μν λ ν¨μ¨μ μ΄κ³ μ±λ₯ μ’μ μ ν리μΌμ΄μ μ ꡬμΆν μ μμ΅λλ€.