Quasar Framework предоставляет встроенную поддержку Progressive Web App (PWA), что позволяет создавать веб-приложения с возможностью установки на устройства, оффлайн-доступом и push-уведомлениями. Для активации PWA режима необходимо использовать CLI Quasar и корректно настроить конфигурацию проекта.
При создании нового проекта через Quasar CLI важно указать поддержку PWA:
quasar create my-app
Во время конфигурации будет предложено выбрать тип сборки. Для PWA
нужно включить опцию Progressive Web App. После генерации
проекта структура каталогов будет включать папку src-pwa,
содержащую все файлы, необходимые для работы PWA.
src-pwamanifest.jsonФайл манифеста управляет внешним видом и поведением приложения при установке:
{
"name": "My Quasar PWA",
"short_name": "QuasarPWA",
"description": "Пример PWA на Quasar",
"display": "standalone",
"orientation": "portrait",
"background_color": "#ffffff",
"theme_color": "#027be3",
"icons": [
{
"src": "icons/icon-128x128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "icons/icon-256x256.png",
"sizes": "256x256",
"type": "image/png"
},
{
"src": "icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
Ключевые параметры:
standalone, fullscreen,
minimal-ui, browser).portrait или landscape).Service Worker отвечает за оффлайн-доступ, кеширование и
push-уведомления. В Quasar используется Workbox, который интегрирован
через @quasar/pwa:
// src-pwa/sw.js
import { precacheAndRoute } from 'workbox-precaching';
import { registerRoute } from 'workbox-routing';
import { StaleWhileRevalidate } from 'workbox-strategies';
// Кеширование статических ресурсов
precacheAndRoute(self.__WB_MANIFEST);
// Пример динамического кеширования API
registerRoute(
({ url }) => url.origin === 'https://api.example.com',
new StaleWhileRevalidate({
cacheName: 'api-cache',
})
);
Основные стратегии кеширования:
Регистрация Service Worker выполняется в
src-pwa/register-service-worker.js:
import { register } from 'register-service-worker';
if (process.env.PROD) {
register(`${process.env.BASE_URL}service-worker.js`, {
ready() {
console.log('Service worker активен.');
},
registered() {
console.log('Service worker зарегистрирован.');
},
cached() {
console.log('Контент закеширован для оффлайн работы.');
},
updatefound() {
console.log('Найдено обновление.');
},
updated() {
console.log('Приложение обновлено.');
},
offline() {
console.log('Отсутствует интернет, работаем в оффлайн режиме.');
},
error(error) {
console.error('Ошибка регистрации service worker:', error);
},
});
}
Регистрация выполняется только в продакшн-сборке, что предотвращает конфликты при разработке.
quasar.conf.jsВ разделе pwa можно задать стратегию кеширования и
другие параметры:
pwa: {
workboxPluginMode: 'InjectManifest',
workboxOptions: {},
manifest: {
name: 'My Quasar PWA',
short_name: 'QuasarPWA',
description: 'Пример PWA на Quasar',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [
{ src: 'icons/icon-128x128.png', sizes: '128x128', type: 'image/png' },
{ src: 'icons/icon-256x256.png', sizes: '256x256', type: 'image/png' },
{ src: 'icons/icon-512x512.png', sizes: '512x512', type: 'image/png' }
]
}
}
'GenerateSW' —
автоматически генерирует service worker, 'InjectManifest' —
использует кастомный sw.js.quasar build -m pwa
quasar serve dist/pwa
Открыть DevTools → Application → Manifest, Service Workers. Проверить:
Приложение должно предлагать установку на рабочий стол или мобильное устройство, отображать splash screen и корректно работать без сети.
Для динамических данных можно использовать IndexedDB или LocalStorage совместно с Service Worker, чтобы кешировать API-ответы. Для push-уведомлений интегрируется Web Push через VAPID-ключи, а Quasar PWA предоставляет шаблон для их обработки в Service Worker.
manifest.json
и храниться в папке icons/.background_color и иконок.theme_color) влияет на внешний
вид приложения на Android.Таким образом, Quasar позволяет создавать полнофункциональные PWA с
минимальной ручной настройкой, обеспечивая оффлайн-доступ, установку на
устройство, кеширование и поддержку push-уведомлений. Все элементы
конфигурации находятся в src-pwa и
quasar.conf.js, что делает процесс прозрачным и гибким.