Создание приложений, работающих оффлайн, требует интеграции нескольких технологий, основная из которых в Angular — Service Worker. Он обеспечивает кэширование ресурсов и управление запросами в отсутствие интернет-соединения.
ng add @angular/pwa
Команда добавляет поддержку сервис-воркера, создает
ngsw-config.json и обновляет angular.json.
ngsw-config.json: Файл содержит правила
кэширования:Пример кэширования API данных:
{
"name": "api-cache",
"urls": ["/api/**"],
"cacheConfig": {
"strategy": "performance",
"maxSize": 100,
"maxAge": "6h"
}
}
Стратегия performance сначала использует кэш, если есть,
а затем обновляет данные из сети.
Angular предоставляет сервис SwUpdate, который позволяет
отслеживать состояние обновлений приложения:
constructor(private swUpdate: SwUpdate) {
if (this.swUpdate.isEnabled) {
this.swUpdate.available.subscribe(() => {
this.swUpdate.activateUpdate().then(() => document.location.reload());
});
}
}
Это гарантирует, что пользователи будут видеть актуальную версию приложения даже после перехода в онлайн.
Для приложений с частыми API-запросами используется комбинация
dataGroups и стратегий обновления:
Для улучшения UX можно использовать сервисы, отслеживающие состояние соединения:
fromEvent(window, 'online').subscribe(() => console.log('Сеть восстановлена'));
fromEvent(window, 'offline').subscribe(() => console.log('Нет подключения'));
Это позволяет динамически изменять интерфейс и уведомлять пользователя о состоянии приложения.
В Angular временные функции анимаций и оффлайн-функциональность тесно интегрируются с архитектурой приложения. Правильное использование этих инструментов обеспечивает плавные интерфейсы и надежность работы в любых условиях сети.