main.js

Download
javascript 50 lines 1.4 KB
 1/**
 2 * Vite ν”„λ‘œμ νŠΈ 메인 μ§„μž…μ 
 3 *
 4 * Vite νŠΉμ§•:
 5 * - λ„€μ΄ν‹°λΈŒ ES λͺ¨λ“ˆ μ‚¬μš© (λΉ λ₯Έ 개발 μ„œλ²„)
 6 * - HMR (Hot Module Replacement) 지원
 7 * - μ΅œμ ν™”λœ ν”„λ‘œλ•μ…˜ λΉŒλ“œ
 8 */
 9
10// CSS μž„ν¬νŠΈ (Viteκ°€ μžλ™μœΌλ‘œ 처리)
11import './styles/main.css';
12
13// λͺ¨λ“ˆ μž„ν¬νŠΈ
14import { setupCounter } from './components/counter.js';
15import { formatDate } from './utils/helpers.js';
16
17// μ•± μ΄ˆκΈ°ν™”
18function initApp() {
19    console.log('πŸš€ Vite 앱이 μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€!');
20    console.log(`πŸ“… ν˜„μž¬ μ‹œκ°„: ${formatDate(new Date())}`);
21
22    // μΉ΄μš΄ν„° μ„€μ •
23    const counterButton = document.getElementById('counter');
24    if (counterButton) {
25        setupCounter(counterButton);
26    }
27
28    // 개발 λͺ¨λ“œμ—μ„œλ§Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
29    if (import.meta.env.DEV) {
30        console.log('πŸ”§ 개발 λͺ¨λ“œλ‘œ μ‹€ν–‰ 쀑');
31        console.log('ν™˜κ²½ λ³€μˆ˜:', import.meta.env);
32    }
33
34    // ν”„λ‘œλ•μ…˜ λͺ¨λ“œμ—μ„œλ§Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
35    if (import.meta.env.PROD) {
36        console.log('πŸš€ ν”„λ‘œλ•μ…˜ λͺ¨λ“œλ‘œ μ‹€ν–‰ 쀑');
37    }
38}
39
40// DOM λ‘œλ“œ ν›„ μ΄ˆκΈ°ν™”
41document.addEventListener('DOMContentLoaded', initApp);
42
43// HMR (Hot Module Replacement) 예제
44if (import.meta.hot) {
45    import.meta.hot.accept('./components/counter.js', (newModule) => {
46        console.log('πŸ”„ counter λͺ¨λ“ˆμ΄ μ—…λ°μ΄νŠΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€!');
47        // ν•„μš”ν•œ 경우 μƒνƒœ 볡원 둜직 μΆ”κ°€
48    });
49}