λ κΉλνκ³ μ μ§ κ΄λ¦¬νκΈ° μ¬μ΄ μ½λλ₯Ό μν΄ JavaScript λͺ¨λ λ€μμ€νμ΄μ€λ₯Ό λ§μ€ν°νμΈμ. κ³ κΈ λ΄λ³΄λ΄κΈ° μ λ΅κ³Ό νλ‘μ νΈ κ΅¬μ±μ λν λͺ¨λ² μ¬λ‘λ₯Ό λ°°μ°μΈμ.
JavaScript λͺ¨λ λ€μμ€νμ΄μ€: λ΄λ³΄λ΄κΈ° ꡬμ±μ μν μ’ ν© κ°μ΄λ
JavaScript νλ‘μ νΈμ 볡μ‘μ±μ΄ μ¦κ°ν¨μ λ°λΌ κΉλνκ³ μ²΄κ³μ μΈ μ½λλ² μ΄μ€λ₯Ό μ μ§νλ κ²μ΄ κ°μ₯ μ€μν©λλ€. μ΄λ₯Ό λ¬μ±νκΈ° μν κ°λ ₯ν κΈ°μ μ€ νλλ λͺ¨λ λ€μμ€νμ΄μ€λ₯Ό μ λ΅μ μΌλ‘ μ¬μ©νλ κ²μ λλ€. μ΄ κΈ°μ¬μμλ λͺ¨λ λ€μμ€νμ΄μ€μ λν μ¬μΈ΅μ μΈ λ΄μ©μ μ 곡νμ¬ μ½λ ꡬμ±μ κ°μ νκ³ μ΄λ¦ μΆ©λμ λ°©μ§νλ©° κΆκ·Ήμ μΌλ‘ JavaScript μ ν리μΌμ΄μ μ μ μ§ κ΄λ¦¬ λ° νμ₯μ±μ ν₯μμν€λ λ°©λ²μ μ΄ν΄λ΄ λλ€.
JavaScript λͺ¨λμ΄λ 무μμ λκΉ?
λ€μμ€νμ΄μ€λ₯Ό μ΄ν΄λ³΄κΈ° μ μ JavaScript λͺ¨λμ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. λͺ¨λμ κΈ°λ₯μ μΊ‘μννκ³ λ€λ₯Έ λͺ¨λμμ μ¬μ©ν μ μλλ‘ νΉμ λΆλΆμ λ
ΈμΆνλ μ체 ν¬ν¨λ μ½λ λ¨μμ
λλ€. λͺ¨λμ μ½λ μ¬μ¬μ©μ μ΄μ§νκ³ μ μ λ²μ μ€μΌμ μ€μ΄λ©° νλ‘μ νΈλ₯Ό λ μ½κ² μ΄ν΄ν μ μλλ‘ ν©λλ€. ECMAScript 2015(ES6) μ΄ν JavaScriptμλ import
λ° export
ν€μλλ₯Ό μ¬μ©νλ κΈ°λ³Έ μ 곡 λͺ¨λ μμ€ν
μ΄ μμ΅λλ€.
μλ₯Ό λ€μ΄ λ μ§ νμμ μ²λ¦¬νλ λͺ¨λμ μκ°ν΄ 보μμμ€.
// dateUtils.js
export function formatDate(date, format = 'YYYY-MM-DD') {
// Implementation for date formatting
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
switch (format) {
case 'YYYY-MM-DD':
return `${year}-${month}-${day}`;
case 'MM-DD-YYYY':
return `${month}-${day}-${year}`;
case 'DD-MM-YYYY':
return `${day}-${month}-${year}`;
default:
return `${year}-${month}-${day}`;
}
}
export function formatTime(date) {
// Implementation for time formatting
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${hours}:${minutes}:${seconds}`;
}
λ€λ₯Έ λͺ¨λμ μ΄λ¬ν ν¨μλ₯Ό κ°μ Έμμ μ¬μ©ν μ μμ΅λλ€.
// app.js
import { formatDate, formatTime } from './dateUtils.js';
const now = new Date();
const formattedDate = formatDate(now);
const formattedTime = formatTime(now);
console.log(`Today's date is: ${formattedDate}`);
console.log(`The time is: ${formattedTime}`);
JavaScript λͺ¨λ λ€μμ€νμ΄μ€λ 무μμ λκΉ?
λͺ¨λ λ€μμ€νμ΄μ€λ κ΄λ ¨ λ΄λ³΄λ΄κΈ°λ₯Ό λ¨μΌ μλ³μ μλμ κ·Έλ£Ήννλ λ°©λ²μ μ 곡ν©λλ€. μ΄λ λͺ¨λμ΄ νΉμ λλ©μΈκ³Ό κ΄λ ¨λ μ¬λ¬ ν¨μ, ν΄λμ€ λλ λ³μλ₯Ό λ΄λ³΄λΌ λ νΉν μ μ©ν©λλ€. λ€μμ€νμ΄μ€λ λͺ λͺ μΆ©λμ λ°©μ§νκ³ λͺ νν κ³μΈ΅ ꡬ쑰λ₯Ό λ§λ€μ΄ μ½λ ꡬμ±μ κ°μ νλ λ° λμμ΄ λ©λλ€.
JavaScriptμμ λ€μμ€νμ΄μ€λ κ΄λ ¨ ν¨μ, ν΄λμ€ λλ λ³μλ₯Ό ν¬ν¨νλ κ°μ²΄λ₯Ό λ΄λ³΄λ΄μ΄ ꡬνλ©λλ€. μ΄ κ°μ²΄λ λ€μμ€νμ΄μ€ μν μ ν©λλ€.
λͺ¨λ λ€μμ€νμ΄μ€ μμ± λ° μ¬μ©
dateUtils.js
μμ λ₯Ό λ€μ μ΄ν΄λ³΄κ³ λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νλλ‘ λ¦¬ν©ν°λ§ν΄ λ³΄κ² μ΅λλ€.
// dateUtils.js
const DateUtils = {
formatDate(date, format = 'YYYY-MM-DD') {
// Implementation for date formatting
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
switch (format) {
case 'YYYY-MM-DD':
return `${year}-${month}-${day}`;
case 'MM-DD-YYYY':
return `${month}-${day}-${year}`;
case 'DD-MM-YYYY':
return `${day}-${month}-${year}`;
default:
return `${year}-${month}-${day}`;
}
},
formatTime(date) {
// Implementation for time formatting
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${hours}:${minutes}:${seconds}`;
}
};
export { DateUtils };
μ΄μ app.js
μμ DateUtils
λ€μμ€νμ΄μ€λ₯Ό κ°μ Έμ ν΄λΉ λ©€λ²μ μ‘μΈμ€ν μ μμ΅λλ€.
// app.js
import { DateUtils } from './dateUtils.js';
const now = new Date();
const formattedDate = DateUtils.formatDate(now);
const formattedTime = DateUtils.formatTime(now);
console.log(`Today's date is: ${formattedDate}`);
console.log(`The time is: ${formattedTime}`);
μ΄ μ κ·Ό λ°©μμ formatDate
λ° formatTime
μ DateUtils
λ€μμ€νμ΄μ€ μλμ κ·Έλ£Ήννμ¬ μ΄λ¬ν ν¨μκ° λ μ§ λ° μκ° μ‘°μκ³Ό κ΄λ ¨λμ΄ μμμ λͺ
νν ν©λλ€.
λͺ¨λ λ€μμ€νμ΄μ€ μ¬μ©μ μ΄μ
- κ°μ λ μ½λ ꡬμ±: λ€μμ€νμ΄μ€λ κ΄λ ¨ κΈ°λ₯μ κ·Έλ£ΉννκΈ° μν λͺ νν ꡬ쑰λ₯Ό μ 곡νμ¬ μ½λλ₯Ό λ μ½κ² νμνκ³ μ΄ν΄ν μ μλλ‘ ν©λλ€.
- λͺ λͺ μΆ©λ κ°μ: λ€μμ€νμ΄μ€ λ΄μμ ν¨μμ λ³μλ₯Ό μΊ‘μνν¨μΌλ‘μ¨ λ€λ₯Έ λͺ¨λ λλ μ μ λ³μμμ λͺ λͺ μΆ©λ μνμ μ€μ λλ€.
- ν₯μλ μ μ§ κ΄λ¦¬μ±: κΈ°λ₯μ΄ λ Όλ¦¬μ μΌλ‘ κ·Έλ£Ήνλλ©΄ μλμΉ μμ λΆμμ©μ μΌμΌν€μ§ μκ³ μ½λλ₯Ό μμ , νμ₯ λ° λ¦¬ν©ν°λ§νκΈ°κ° λ μ¬μμ§λλ€.
- κ°λ μ± ν₯μ: λ€μμ€νμ΄μ€λ νΉμ ν¨μ λλ λ³μκ° μ΄λμμ μμλμλμ§ λͺ ννκ² νμ¬ μ½λ κ°λ μ±μ ν₯μμν€κ³ κ°λ°μκ° μ½λμ λͺ©μ μ λ μ½κ² μ΄ν΄ν μ μλλ‘ ν©λλ€.
λ€μμ€νμ΄μ€λ₯Ό μ¬μ©ν κ³ κΈ λ΄λ³΄λ΄κΈ° μ λ΅
λ€μμ€νμ΄μ€λ₯Ό λ΄λ³΄λ΄λ λ°©λ²μλ μ¬λ¬ κ°μ§κ° μμΌλ©° κ°κ° μ₯μ μ΄ μμ΅λλ€. λͺ κ°μ§ κ³ κΈ μ λ΅μ μ΄ν΄λ³΄κ² μ΅λλ€.
1. μ¬λ¬ λ€μμ€νμ΄μ€ λ΄λ³΄λ΄κΈ°
λ¨μΌ λͺ¨λμμ μ¬λ¬ λ€μμ€νμ΄μ€λ₯Ό λ΄λ³΄λΌ μ μμ΅λλ€. μ΄λ λμΌν λͺ¨λ λ΄μ λ€μν λ²μ£Όμ κ΄λ ¨ κΈ°λ₯μ΄ μλ κ²½μ°μ μ μ©ν©λλ€.
// utils.js
const DateUtils = {
formatDate(date) {
return date.toISOString().split('T')[0];
},
parseDate(dateString) {
return new Date(dateString);
}
};
const StringUtils = {
capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
},
reverse(str) {
return str.split('').reverse().join('');
}
};
export { DateUtils, StringUtils };
// app.js
import { DateUtils, StringUtils } from './utils.js';
const today = DateUtils.formatDate(new Date());
const greeting = StringUtils.capitalize('hello world');
console.log(today); // Output: 2023-10-27 (example)
console.log(greeting); // Output: Hello world
2. κΈ°λ³Έ λ€μμ€νμ΄μ€ λ΄λ³΄λ΄κΈ°
λ€μμ€νμ΄μ€λ₯Ό λͺ¨λμ κΈ°λ³Έ λ΄λ³΄λ΄κΈ°λ‘ λ΄λ³΄λΌ μ μμ΅λλ€. μ΄λ κ² νλ©΄ μλΉμλ₯Ό μν κ°μ Έμ€κΈ° κ΅¬λ¬Έμ΄ λ¨μνλ©λλ€.
// math.js
const MathUtils = {
add(a, b) {
return a + b;
},
subtract(a, b) {
return a - b;
},
multiply(a, b) {
return a * b;
},
divide(a, b) {
return a / b;
}
};
export default MathUtils;
// app.js
import MathUtils from './math.js';
const sum = MathUtils.add(5, 3);
console.log(sum); // Output: 8
3. λ€μμ€νμ΄μ€ λ€μ λ΄λ³΄λ΄κΈ°
λ€λ₯Έ λͺ¨λμμ λ€μμ€νμ΄μ€λ₯Ό λ€μ λ΄λ³΄λΌ μ μμ΅λλ€. μ΄λ μ¬λ¬ μμ€μ κΈ°λ₯μ κ²°ν©νλ μ§κ³ λͺ¨λμ λ§λλ λ° μ μ©ν©λλ€.
// api/index.js
export * as user from './userApi.js';
export * as product from './productApi.js';
// app.js
import * as api from './api/index.js';
api.user.getUser(123).then(user => {
console.log(user);
});
api.product.getProduct(456).then(product => {
console.log(product);
});
λͺ¨λ λ€μμ€νμ΄μ€ μ¬μ©μ μν λͺ¨λ² μ¬λ‘
- λ€μμ€νμ΄μ€λ₯Ό μ§μ€μ μΌλ‘ μ μ§: κ° λ€μμ€νμ΄μ€λ νΉμ κΈ°λ₯ μμμ μΊ‘μνν΄μΌ ν©λλ€. κ΄λ ¨ μλ μ½λλ₯Ό ν¬ν¨νλ μ§λμΉκ² κ΄λ²μν λ€μμ€νμ΄μ€λ₯Ό λ§λ€μ§ λ§μμμ€.
- μ€λͺ
μ μΈ μ΄λ¦ μ¬μ©: λ€μμ€νμ΄μ€μ λͺ©μ μ λνλ΄κΈ° μν΄ λͺ
ννκ³ μ€λͺ
μ μΈ μ΄λ¦μ μ ννμμμ€. μλ₯Ό λ€μ΄
DateUtils
λUtils
λ³΄λ€ λ μ μ΅ν©λλ€. - κΉμ΄ μ€μ²©λ λ€μμ€νμ΄μ€ λ°©μ§: λ€μμ€νμ΄μ€λ₯Ό μ€μ²©ν μ μμ§λ§ μ½λλ₯Ό μ½κ³ μ΄ν΄νκΈ° μ΄λ ΅κ² λ§λ€ μ μμΌλ―λ‘ μ§λμΉκ² 볡μ‘ν κ³μΈ΅ ꡬ쑰λ₯Ό λ§λ€μ§ λ§μμμ€.
- λ€μμ€νμ΄μ€ λ¬Έμν: JSDoc λλ μ μ¬ν λꡬλ₯Ό μ¬μ©νμ¬ λ€μμ€νμ΄μ€μ ν΄λΉ λ©€λ²λ₯Ό λ¬Έμνν©λλ€. μ΄λ κ² νλ©΄ λ€λ₯Έ κ°λ°μκ° μ½λλ₯Ό μ¬μ©νλ λ°©λ²μ μ΄ν΄νλ λ° λμμ΄ λ©λλ€.
- λμ κ³ λ €: λ€μμ€νμ΄μ€κ° μ μ©νμ§λ§ νΉμ μꡬ μ¬νμ λ μ ν©ν κ²½μ° ν΄λμ€ λλ ν©ν 리 ν¨μμ κ°μ λ€λ₯Έ λμμ κ³ λ €νμμμ€.
μ€μ μ ν리μΌμ΄μ μμ λͺ¨λ λ€μμ€νμ΄μ€μ μ
λ§μ μΈκΈ° μλ JavaScript λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬λ λͺ¨λ λ€μμ€νμ΄μ€λ₯Ό νμ©νμ¬ μ½λλ₯Ό ꡬμ±ν©λλ€. λͺ κ°μ§ μλ λ€μκ³Ό κ°μ΅λλ€.
- Lodash: λ리 μ¬μ©λλ μ νΈλ¦¬ν° λΌμ΄λΈλ¬λ¦¬μΈ Lodashλ λ°°μ΄ μ‘°μ ν¨μλ₯Ό μν
_.array
, λ¬Έμμ΄ μ‘°μ ν¨μλ₯Ό μν_.string
κ³Ό κ°μ΄ κ΄λ ¨ ν¨μλ₯Ό κ·Έλ£ΉννκΈ° μν΄ λ€μμ€νμ΄μ€λ₯Ό μ¬μ©ν©λλ€. μ΄λ κ² νλ©΄ λΌμ΄λΈλ¬λ¦¬ λ΄μμ κ΅¬μ± λ° κ²μ κ°λ₯μ±μ΄ ν₯μλ©λλ€. Lodashλ μΉ κ°λ° νλ‘μ νΈμμ μ μΈκ³μ μΌλ‘ λ리 μ¬μ©λ©λλ€. - Three.js: 3D κ·Έλν½ λΌμ΄λΈλ¬λ¦¬μΈ Three.jsλ 3D λͺ¨λΈ μμ±μ μν
THREE.Mesh
λ° μ₯λ©΄ κ·Έλν κ΄λ¦¬λ₯Ό μνTHREE.Scene
κ³Ό κ°μ΄ ν΄λμ€μ ν¨μλ₯Ό ꡬμ±νκΈ° μν΄ λ€μμ€νμ΄μ€λ₯Ό μ¬μ©ν©λλ€. μ΄λ 3D κ·Έλν½ νλ‘κ·Έλλ°μ 볡μ‘μ±μ κ΄λ¦¬νλ λ° μ€μν©λλ€. Three.jsλ₯Ό ν΅ν΄ κ°λ°μλ λ€μν μ§μ λ° μ₯μΉμ μ¬μ©μκ° μ‘μΈμ€ν μ μλ λͺ°μ ν 3D νκ²½μ λ§λ€ μ μμ΅λλ€. - Google Maps API: Google Maps APIλ λ§΅ μμ±μ μν
google.maps.Map
, λ§μ»€ μΆκ°λ₯Ό μνgoogle.maps.Marker
μ κ°μ΄ λ€μν κ΅¬μ± μμλ₯Ό ꡬμ±νκΈ° μν΄google.maps
μ κ°μ λ€μμ€νμ΄μ€λ₯Ό νμ©ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ μΈκ³ κ°λ°μλ λ§€ν κΈ°λ₯μ μ ν리μΌμ΄μ μ μ½κ² ν΅ν©ν μ μμ΅λλ€. κ°λ°μλ μμΉ κΈ°λ° μ 보μ μ‘μΈμ€νκ³ νμνκ³ μ§λ¦¬ 곡κ°μ κΈ°λ₯μ ꡬμΆν μ μμ΅λλ€.
νΌν΄μΌ ν μΌλ°μ μΈ ν¨μ
- λ€μμ€νμ΄μ€μ κ³Όλν μ¬μ©: λͺ¨λ λ¨μΌ ν¨μ λλ λ³μμ λν΄ λ€μμ€νμ΄μ€λ₯Ό λ§λ€μ§ λ§μμμ€. κ΄λ ¨ κΈ°λ₯μ κ·Έλ£ΉννκΈ° μν΄ μ λ΅μ μΌλ‘ μ¬μ©νμμμ€.
- λ€μμ€νμ΄μ€μ ν΄λμ€ νΌλ: λ€μμ€νμ΄μ€λ ν΄λμ€λ₯Ό λ체νλ κ²μ΄ μλλλ€. μνμ λμμ΄ μλ κ°μ²΄λ₯Ό λ§λ€μ΄μΌ ν λλ ν΄λμ€λ₯Ό μ¬μ©νμμμ€.
- μ½λ λͺ¨λμ± λ¬΄μ: λ€μμ€νμ΄μ€λ μ μ μλ λͺ¨λ κ²½κ³ λ° λͺ νν μ’ μμ±κ³Ό κ°μ λ€λ₯Έ λͺ¨λμ± κΈ°μ κ³Ό ν¨κ» μ¬μ©ν΄μΌ ν©λλ€.
- μ μ λ€μμ€νμ΄μ€ μ€μΌ: λͺ¨λμ μ¬μ©νλλΌλ μμμΉ λͺ»ν λμμ μ΄λν μ μλ μ μ λ³μλ₯Ό μ μ¬μ μΌλ‘ μμ±νκ±°λ μμ νλ λ° μ μνμμμ€.
λΉλ λꡬμ λ€μμ€νμ΄μ€ ν΅ν©
Webpack, Parcel, Rollupκ³Ό κ°μ μ΅μ JavaScript λΉλ λꡬλ λͺ¨λ λ€μμ€νμ΄μ€μ μννκ² μλν©λλ€. μ΄λ¬ν λꡬλ λͺ¨λ ν΄κ²°, λ²λ€λ§ λ° μ΅μ νλ₯Ό μ²λ¦¬νλ―λ‘ λ€μμ€νμ΄μ€λ₯Ό κ°λ° μν¬νλ‘μ μ½κ² ν΅ν©ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ Webpackμ λͺ¨λ κ°μ Έμ€κΈ°λ₯Ό μλμΌλ‘ ν΄κ²°νκ³ νλ‘λμ λ°°ν¬λ₯Ό μν΄ μ΅μ νλ λ²λ€μ μμ±νλλ‘ κ΅¬μ±ν μ μμ΅λλ€.
κ²°λ‘
JavaScript λͺ¨λ λ€μμ€νμ΄μ€λ μ½λλ₯Ό ꡬμ±νκ³ κ΅¬μ‘°ννλ λ° μ μ©ν λꡬμ λλ€. κ΄λ ¨ κΈ°λ₯μ λ¨μΌ μλ³μ μλμ κ·Έλ£Ήννλ©΄ μ½λ κ°λ μ±μ κ°μ νκ³ λͺ λͺ μΆ©λμ μ€μ΄λ©° μ μ§ κ΄λ¦¬μ±μ ν₯μμν¬ μ μμ΅λλ€. μ λ΅μ μΌλ‘ μ¬μ©νλ©΄ λ€μμ€νμ΄μ€λ JavaScript νλ‘μ νΈμ νμ₯μ±κ³Ό μ λ°μ μΈ νμ§μ ν¬κ² κΈ°μ¬ν μ μμ΅λλ€. μκ·λͺ¨ μΉ μ ν리μΌμ΄μ μ ꡬμΆνλ λκ·λͺ¨ μν°νλΌμ΄μ¦ μμ€ν μ ꡬμΆνλ λͺ¨λ λ€μμ€νμ΄μ€λ₯Ό λ§μ€ν°νλ κ²μ λͺ¨λ JavaScript κ°λ°μμκ² νμμ μΈ κΈ°μ μ λλ€.
λ€μμ€νμ΄μ€ μ¬μ© μ¬λΆλ₯Ό κ²°μ ν λ νλ‘μ νΈμ νΉμ μꡬ μ¬νμ κ³ λ €νμμμ€. λ€μμ€νμ΄μ€λ μλ§μ μ΄μ μ μ 곡νμ§λ§ κ³Όλνκ² μ¬μ©νμ§ μκ³ νλ‘μ νΈμ 볡μ‘μ± λ° μꡬ μ¬νμ λ°λΌ μ½λλ₯Ό ꡬμ±νλ μ¬λ°λ₯Έ μ κ·Ό λ°©μμ μ ννλ κ²μ΄ μ€μν©λλ€.