Una polyfill o polyfiller, è un pezzo di codice (o plugin) che fornisce allo sviluppatore la tecnologia che si aspetta dal browser per lavorare in modo nativo; o, se si vuole, è l’appiattimento del panorama API.
Utilizzando le polyfills, menzionate sopra, gli sviluppatori web possono iniziare a utilizzare le API IndexedDB nelle loro applicazioni visto che sono già supportate da una vasta gamma di browsers.
Le API IndexedDB sono già mature in una specifica stabile e ha il supporto dei maggiori produttori di browser. Tuttavia, la specifica non è ancora supportata su tutti i browser, per cui rende più difficile il suo utilizzo in produzione. Ci sono anche alcune interessanti differenze nelle implementazioni tra i browser che supportano questa specifica. Questo articolo esplora un paio di polyfills che potrebbero essere sfruttate per consentire agli sviluppatori di utilizzare IndexedDB su diversi tipi di browser.
Polyfill utilizzando WebSql
Questo polyfill utilizzando WebSql si serve delle implementazioni WebSQL per esporre le API IndexedDB. Per utilizzare la polyfill, è sufficiente collegare o includere il file indexeddb.shim.js.
La polyfill assegna a window.indexedDB
l’oggetto window.mozIndexedDB
, window.webkitIndexedDB
o window.msIndexedDB
, se una di queste implementazioni sono disponibili. Se non sono disponibili, la polyfill assegna un window.shimIndexedDB
a window.indexedDB
. Le applicazioni Web possono così iniziare a utilizzare window.indexedDB
come punto di partenza per tutte le operazioni del database. Internamente, la polyfill utilizza le tabelle WebSql per memorizzare i dati Object Store e prende in prestito molto dall’impementazione IndexedDB in Firefox.
La polyfill è stata testata con diverse librerie IndexedDB, come PouchDB, LINQ2IndexedDB, JQuery-IndexedDB e DB.JS. Dal momento che sfrutta WebSql, siamo in grado di scrivere il codice delle applicazioni, in base alle API IndexedDB, sui browsers come Opera e Safari e, in aggiunta, sui browsers per dispositivi mobili come Safari su iPad / iPhone o su piattaforme di sviluppo mobile come Cordova, che ha il browser WebSql incorporato.
È implementato in Javascript ma è un work in progress. Si noti che non confermano pienamente le specifiche e possono apparire dei problemi: volendo, si può generare un bug o si può inviare una richiesta di pull al repositorio di origine.
Presto tutti i browser potranno usare il metodo più recente di “onupgradeneded”, questo semplice polyfill per setVersion ci permette di usare le API IndexedDB con il metodo onupgradeneeded.
La polyfill sostituisce la chiamata indexeddb.open()
con la chiamata a openReqShim()
. La chiamata a openReqShim()
invoca a setVersion()
e poi lo converte per il callback a “onupgradeneeded” solo se setVersion()
è supportato. Se l’implementazione supporta “onupgradeneeded”, openReqShim()
realizza semplicemente una chiamata al metodo indexedb.open
. Quindi, per utilizzare questo polyfill, la chiamata a indexeddb.open()
dovrebbe essere sostituita con la chiamata openReqShim()
.
- facilitare l’impiego di indexedDB e di astrarre le differenze tra le impls esistenti in Chrome e Firefox;
- mostrare come funziona IDB. Il codice è suddiviso in metodi brevi, quindi è facile vedere cosa succede in un determinato metodo.
Per informazioni dettagliate sul suo utilizzo, si prega di leggere il file README del progetto e verificare gli esempi.
Ancora nessun commento