Як зменшити розмір JavaScript-бандла на 70%
Більшість вебдодатків надсилають занадто багато коду. Середня сторінка завантажує 1,7 МБ JavaScript. Розробники використовують лише 35% коду, який вони випускають.
Менші бандли підвищують швидкість. Ви покращуєте показники Largest Contentful Paint та Time to Interactive.
Дотримуйтесь цих 10 кроків, щоб зменшити розмір.
Tree shaking Видаляйте невикористані експорти. Використовуйте синтаксис ES Module. Додайте
"sideEffects": falseу вашpackage.json. Це видаляє близько 18% невикористаного коду.Code splitting Розділяйте свій код на менші частини (chunks).
Dynamic imports Завантажуйте код лише тоді, коли він потрібен користувачам. Використовуйте lazy loading для маршрутів. Це може зменшити початковий розмір бандла на 28%.
Оптимізація зображень Використовуйте трансформації на основі URL від CDN. Припиніть використовувати великі inline SVG.
Аудит залежностей Перевіряйте розмір пакетів за допомогою
npx bundle-phobia. • Використовуйтеdate-fns(13 КБ) замістьmoment.js(67 КБ). • Використовуйтеlodash-esзамістьlodash. • Використовуйтеdayjs(2 КБ) для простих дат.Мініфікація Видаляйте зайві пробіли та символи. Більшість бандлерів роблять це автоматично.
Стиснення Використовуйте Brotli замість Gzip. Brotli стискає файли на 15–25% краще.
Видалення мертвого коду Видаляйте код, до якого комп'ютер ніколи не зможе дістатися.
Lazy loading компонентів Відкладайте завантаження частин сторінки, які знаходяться нижче першого екрана (below the fold).
Очищення поліфілів Використовуйте
@babel/preset-env. Надсилайте лише ті поліфіли, які дійсно потрібні браузерам ваших користувачів.
Припиніть робити ці помилки:
- Надсилання збірок для розробки (development builds). Завжди використовуйте
NODE_ENV=production. - Імпорт цілих бібліотек. Замість цього імпортуйте конкретні функції.
- Ігнорування аналізу. Використовуйте
webpack-bundle-analyzer, щоб побачити свої великі чанки. - Забування про стиснення. Нестиснуті файли у 5 разів більші за файли Brotli.
Відстежуйте свій прогрес за допомогою цих цілей:
- Загальний розмір JS: менше 120 КБ.
- LCP: менше 2,5 с.
- TTI: менше 3,5 с.
Спочатку зосередьтеся на tree shaking, code splitting та аудиті. Ці три кроки часто забезпечують скорочення на 50–70% за один спринт.
Джерело: https://dev.to/kui_luo/how-to-reduce-your-javascript-bundle-size-by-70-in-10-steps-3j1g