Basic Usage
These examples demonstrate the fundamental features of StorageManager.js. Each example can be opened in CodePen for live experimentation.
Simple Counter
Section titled “Simple Counter”A basic counter that persists across page reloads.
// Create storage instanceconst storage = new StorageManager(false, { namespace: 'counterApp', enableCompression: false});
// Initialize counterlet count = await storage.get('count') || 0;
// Update displayfunction updateDisplay() { document.getElementById('count').textContent = count;}
// Increment buttondocument.getElementById('increment').addEventListener('click', async () => { count++; await storage.set('count', count); updateDisplay();});
// Reset buttondocument.getElementById('reset').addEventListener('click', async () => { count = 0; await storage.remove('count'); updateDisplay();});
updateDisplay();User Preferences
Section titled “User Preferences”Store and retrieve user preferences like theme and language.
const storage = new StorageManager(false, { namespace: 'preferences', enableCompression: false});
// Load saved preferencesasync function loadPreferences() { const theme = await storage.get('theme') || 'light'; const lang = await storage.get('language') || 'en';
document.getElementById('theme').value = theme; document.getElementById('language').value = lang; applyTheme(theme);}
// Save preferencesasync function savePreferences() { const theme = document.getElementById('theme').value; const lang = document.getElementById('language').value;
await storage.set('theme', theme); await storage.set('language', lang); applyTheme(theme);
alert('Preferences saved!');}
function applyTheme(theme) { document.body.className = theme;}
loadPreferences();Form Auto-Save
Section titled “Form Auto-Save”Automatically save form data as the user types.
const storage = new StorageManager(false, { namespace: 'formApp', enableCompression: false});
// Load saved form dataasync function loadFormData() { const data = await storage.get('formData'); if (data) { document.getElementById('name').value = data.name || ''; document.getElementById('email').value = data.email || ''; document.getElementById('message').value = data.message || ''; }}
// Auto-save on inputfunction setupAutoSave() { const inputs = ['name', 'email', 'message'];
inputs.forEach(id => { document.getElementById(id).addEventListener('input', async () => { const data = { name: document.getElementById('name').value, email: document.getElementById('email').value, message: document.getElementById('message').value }; await storage.set('formData', data); console.log('Form auto-saved'); }); });}
// Clear formasync function clearForm() { document.getElementById('name').value = ''; document.getElementById('email').value = ''; document.getElementById('message').value = ''; await storage.remove('formData'); alert('Form cleared!');}
loadFormData();setupAutoSave();Key Listing
Section titled “Key Listing”Display all stored keys and their values.
const storage = new StorageManager(false, { namespace: 'demo', enableCompression: false});
// Add some sample dataasync function addSampleData() { await storage.set('user', { name: 'Alice' }); await storage.set('theme', 'dark'); await storage.set('count', 42); await displayKeys();}
// Display all keysasync function displayKeys() { const keys = await storage.keys(); const list = document.getElementById('keyList');
list.innerHTML = '';
for (const key of keys) { const value = await storage.get(key); const li = document.createElement('li'); li.innerHTML = `<strong>${key}:</strong> ${JSON.stringify(value)}`; list.appendChild(li); }}
displayKeys();Next Steps
Section titled “Next Steps”Ready for more complex scenarios? Check out the Advanced Features examples.