В экосистеме JavaScript веб-хранилища localStorage и
sessionStorage позволяют сохранять данные на стороне
клиента. В рамках Quasar эти механизмы интегрируются через стандартный
API браузера, но Quasar добавляет удобные утилиты и подходы для их
эффективного использования.
LocalStorage сохраняет данные без ограничения по времени, даже после закрытия браузера. Объём хранилища обычно ограничен 5–10 МБ, зависит от браузера.
SessionStorage действует только в рамках текущей сессии. После закрытия вкладки данные удаляются.
Ключевые моменты:
Quasar предоставляет возможность использовать
LocalStorage через собственный модуль
@quasar/quasar-app-extension-localstorage, но чаще
применяется стандартный API:
// Сохранение данных
localStorage.setItem('user', JSON.stringify({ name: 'Ivan', role: 'admin' }));
// Получение данных
const user = JSON.parse(localStorage.getItem('user'));
// Удаление данных
localStorage.removeItem('user');
// Очистка всего хранилища
localStorage.clear();
Особенности использования в Quasar:
Пример создания утилиты для работы с LocalStorage:
export const storage = {
set(key, value) {
localStorage.setItem(key, JSON.stringify(value));
},
get(key, defaultValue = null) {
const stored = localStorage.getItem(key);
return stored ? JSON.parse(stored) : defaultValue;
},
remove(key) {
localStorage.removeItem(key);
},
clear() {
localStorage.clear();
}
};
Теперь взаимодействие с хранилищем сводится к простым вызовам:
storage.set('theme', 'dark');
const theme = storage.get('theme', 'light');
С API SessionStorage работа идентична, но данные живут только в текущей сессии:
// Сохранение данных
sessionStorage.setItem('step', '2');
// Получение данных
const step = sessionStorage.getItem('step');
// Удаление данных
sessionStorage.removeItem('step');
// Очистка хранилища
sessionStorage.clear();
Можно создать аналогичную обертку для удобного использования:
export const session = {
set(key, value) {
sessionStorage.setItem(key, JSON.stringify(value));
},
get(key, defaultValue = null) {
const stored = sessionStorage.getItem(key);
return stored ? JSON.parse(stored) : defaultValue;
},
remove(key) {
sessionStorage.removeItem(key);
},
clear() {
sessionStorage.clear();
}
};
В Quasar + Vue данные из LocalStorage или SessionStorage можно
автоматически синхронизировать с состоянием компонентов через
computed или ref.
Пример синхронизации с темой интерфейса:
import { ref, watch } from 'vue';
import { storage } from 'src/utils/storage';
const theme = ref(storage.get('theme', 'light'));
watch(theme, (newTheme) => {
storage.set('theme', newTheme);
});
Такое решение обеспечивает:
Важно учитывать:
Quasar предоставляет удобные плагины и composables для работы с хранилищем, например:
useQuasar() позволяет подключать глобальные утилиты для
управления состоянием и локальными настройками.Пример реактивного состояния с использованием composable:
import { reactive, watch } from 'vue';
import { storage } from 'src/utils/storage';
const settings = reactive(storage.get('settings', { language: 'ru', notifications: true }));
watch(settings, (newSettings) => {
storage.set('settings', newSettings);
}, { deep: true });
Это позволяет легко поддерживать актуальные пользовательские настройки без ручного обновления LocalStorage после каждого изменения.
Такая организация работы с LocalStorage и SessionStorage в Quasar обеспечивает удобство, безопасность и масштабируемость приложения.