En aquest tema, aprendrem com emmagatzemar dades localment en una aplicació Ionic. L'emmagatzematge local és crucial per a moltes aplicacions, ja que permet guardar informació de manera persistent, fins i tot quan l'usuari està fora de línia. Explorarem diverses tècniques i eines per aconseguir-ho.
Objectius del Tema
- Entendre les opcions d'emmagatzematge local disponibles en Ionic.
- Aprendre a utilitzar l'API de LocalStorage.
- Utilitzar IndexedDB per a emmagatzematge més complex.
- Implementar l'emmagatzematge local amb Ionic Storage.
Opcions d'Emmagatzematge Local
- LocalStorage
LocalStorage és una API senzilla que permet emmagatzemar dades en el navegador. Les dades emmagatzemades en LocalStorage persisteixen fins que es netegen explícitament.
Avantatges:
- Fàcil d'utilitzar.
- Ideal per a petites quantitats de dades.
Desavantatges:
- Limitat a 5MB de dades.
- No és adequat per a dades complexes.
- IndexedDB
IndexedDB és una API més avançada que permet emmagatzemar grans quantitats de dades estructurades. És ideal per a aplicacions que necessiten emmagatzemar dades complexes.
Avantatges:
- Pot emmagatzemar grans quantitats de dades.
- Suporta transaccions i consultes complexes.
Desavantatges:
- Més complex d'utilitzar que LocalStorage.
- Ionic Storage
Ionic Storage és una solució d'emmagatzematge que proporciona una API unificada per a diverses opcions d'emmagatzematge, com LocalStorage, IndexedDB, SQLite, etc.
Avantatges:
- API unificada i fàcil d'utilitzar.
- Suporta múltiples mecanismes d'emmagatzematge.
- Ideal per a aplicacions híbrides.
Desavantatges:
- Pot requerir plugins addicionals per a funcionalitats avançades.
Utilitzant LocalStorage
Exemple de LocalStorage
// Emmagatzemar dades
localStorage.setItem('clau', 'valor');
// Recuperar dades
const valor = localStorage.getItem('clau');
console.log(valor); // Output: valor
// Eliminar dades
localStorage.removeItem('clau');
// Netejar tot l'emmagatzematge
localStorage.clear();Exercici Pràctic
- Crea una pàgina en la teva aplicació Ionic que permeti a l'usuari introduir i emmagatzemar una nota.
- Mostra la nota emmagatzemada quan l'usuari torni a obrir l'aplicació.
Solució:
// home.page.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
nota: string;
constructor() {
this.nota = localStorage.getItem('nota') || '';
}
guardarNota() {
localStorage.setItem('nota', this.nota);
}
}<!-- home.page.html -->
<ion-header>
<ion-toolbar>
<ion-title>
Emmagatzemar Nota
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-item>
<ion-label position="floating">Nota</ion-label>
<ion-input [(ngModel)]="nota"></ion-input>
</ion-item>
<ion-button expand="full" (click)="guardarNota()">Guardar Nota</ion-button>
</ion-content>Utilitzant IndexedDB
Exemple d'IndexedDB
// Obrir una base de dades
const request = indexedDB.open('myDatabase', 1);
request.onupgradeneeded = (event) => {
const db = event.target.result;
db.createObjectStore('myStore', { keyPath: 'id' });
};
request.onsuccess = (event) => {
const db = event.target.result;
// Afegir dades
const transaction = db.transaction('myStore', 'readwrite');
const store = transaction.objectStore('myStore');
store.add({ id: 1, name: 'John Doe' });
// Recuperar dades
const getRequest = store.get(1);
getRequest.onsuccess = (event) => {
console.log(event.target.result); // Output: { id: 1, name: 'John Doe' }
};
};Utilitzant Ionic Storage
Instal·lació
Configuració
// app.module.ts
import { IonicStorageModule } from '@ionic/storage-angular';
@NgModule({
imports: [
IonicStorageModule.forRoot()
],
})
export class AppModule {}Exemple d'Ionic Storage
// home.page.ts
import { Component } from '@angular/core';
import { Storage } from '@ionic/storage-angular';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
nota: string;
constructor(private storage: Storage) {
this.init();
}
async init() {
await this.storage.create();
this.nota = await this.storage.get('nota') || '';
}
async guardarNota() {
await this.storage.set('nota', this.nota);
}
}Exercici Pràctic
- Crea una pàgina en la teva aplicació Ionic que permeti a l'usuari introduir i emmagatzemar una llista de tasques.
- Mostra la llista de tasques emmagatzemades quan l'usuari torni a obrir l'aplicació.
Solució:
// home.page.ts
import { Component } from '@angular/core';
import { Storage } from '@ionic/storage-angular';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
tasca: string;
tasques: string[] = [];
constructor(private storage: Storage) {
this.init();
}
async init() {
await this.storage.create();
this.tasques = await this.storage.get('tasques') || [];
}
async afegirTasca() {
this.tasques.push(this.tasca);
await this.storage.set('tasques', this.tasques);
this.tasca = '';
}
}<!-- home.page.html -->
<ion-header>
<ion-toolbar>
<ion-title>
Llista de Tasques
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-item>
<ion-label position="floating">Nova Tasca</ion-label>
<ion-input [(ngModel)]="tasca"></ion-input>
</ion-item>
<ion-button expand="full" (click)="afegirTasca()">Afegir Tasca</ion-button>
<ion-list>
<ion-item *ngFor="let tasca of tasques">
{{ tasca }}
</ion-item>
</ion-list>
</ion-content>Resum
En aquest tema, hem explorat diverses opcions per emmagatzemar dades localment en una aplicació Ionic. Hem après a utilitzar LocalStorage, IndexedDB i Ionic Storage, i hem implementat exemples pràctics per a cada opció. Aquestes tècniques són fonamentals per a crear aplicacions que necessiten emmagatzemar dades de manera persistent i accessible, fins i tot quan l'usuari està fora de línia.
Curs de Desenvolupament Ionic
Mòdul 1: Introducció a Ionic
- Què és Ionic?
- Configuració de l'Entorn de Desenvolupament
- Creant la Teva Primera App Ionic
- Entenent l'Estructura del Projecte
- Executant i Depurant la Teva App
Mòdul 2: Components Bàsics i Navegació
- Visió General dels Components Ionic
- Utilitzant Botons i Icones Ionic
- Creant i Utilitzant Pàgines
- Navegació i Enrutament
- Pestanyes i Menús Laterals
Mòdul 3: Estilització i Tematització
- Introducció a l'Estilització Ionic
- Utilitzant CSS i SCSS en Ionic
- Tematitzant la Teva App Ionic
- Disseny Responsiu en Ionic
- Personalitzant Components Ionic
Mòdul 4: Treballant amb Dades
- Introducció al Binding de Dades
- Utilitzant Serveis Angular
- Peticions HTTP i APIs
- Emmagatzemant Dades Localment
- Utilitzant Ionic Storage
Mòdul 5: Components i Funcionalitats Avançades
- Utilitzant Formularis Ionic
- Validació i Gestió d'Errors
- Utilitzant Plugins Ionic Native i Cordova
- Accedint a Funcionalitats del Dispositiu
- Notificacions Push
Mòdul 6: Proves i Desplegament
- Proves Unitàries en Ionic
- Proves de Cap a Cap
- Construint per a Producció
- Desplegant a les Botigues d'Aplicacions
- Integració i Lliurament Continu
