[Lv1] Оптимизация на уровне маршрутов: трёхуровневая ленивая загрузка
Ленивая загрузка на уровне маршрутов уменьшает начальный размер JavaScript и улучшает скорость загрузки первого экрана, доставляя код по требованию.
Ситуация
В мультитенантных продуктах каждый арендатор часто имеет собственную тему и дерево маршрутов. Если всё объединить в один bundle, стартовый JS становится слишком большим.
Типичные симптомы:
- Медленная начальная загрузка в мобильных сетях
- Большой bundle
main.js - Ненужный код для маршрутов, которые пользователь никогда не посетит
Задача
- Сохранять бюджет начального JS минимальным
- Загружать только необходимые модули арендатора и маршрута
- Сохранять удобство поддержки и скорость разработки
Действие: трёхуровневая ленивая загрузка
Уровень 1: Динамический модуль маршрутов на уровне арендатора
// src/router/routes.ts
export default async function getRoutes(siteKey: string) {
const module = await import(`../../template/${siteKey}/router/routes.ts`);
return module.routes;
}
Загружается только дерево маршрутов активного арендатора.