Backbone.sync : “Quelques exemples”

J’ai crĂ©Ă© un nouveau repo GitHub : “Ossicle” pour rĂ©pertorier les diffĂ©rentes expĂ©riences que je pourrais faire sur Backbone.js.

J’ai bossĂ© sur 2 versions de Backbone.sync, une pour faire du localStorage et une autre pour aller lire des fichiers markdown d’un repo GitHub (cette derniĂšre est “un peu” expĂ©rimentale).

LocalStorage

Ce qui “m’ennuyait” dans l’exemple fourni sur le site de Backbone.js backbone-localstorage.js c’est que c’est l’ensemble de la collection qui chargĂ©e : une collection correspond Ă  une clĂ© et une valeur (toute la collection) dans le localStorage du navigateur.

Je suis parti sur un systĂšme diffĂ©rent : un modĂšle correpond Ă  une clĂ© et une valeur (aprĂšs on aime ou pas, c’est juste une question de point de vue), c’est Ă  dire que l’on ne sauvegarde plus la collection (contenant les modĂšles) mais uniquement les modĂšles (avec une clĂ© composĂ©e du nom de la “base” et de l’id du modĂšle). Vous pouvez donc charger un/des modĂšle(s) Ă  partir du localStorage sans ĂȘtre obligĂ© de charger toute la collection :

window.Doc = Backbone.Model.extend({
    storeName : "docsDB"
});


window.Docs = Backbone.Collection.extend({
    model : Doc,
    storeName : "docsDB"
});

var doc1 = new Doc({id:'001', title:'TITLE 1', text:'TEXT1'});

doc1.save(); //sauvegare le modÚle avec une clé : "docsDB|001"

/* ... */

var un_doc = new Doc({id:'001'});
un_doc.fetch(); //charge le modÚle ayant la clé : "docsDB|001"

var docs = new Docs(); //une collection

docs.fetch(); //charge la collection à partie des modÚles "persistés" dont la clé commence par "docsDB"

Le code source est ici : https://github.com/k33g/ossicle/blob/master/js/backbone.sync/backbone-sync-localstorage.js.

GitHub API

L’utilisation est un peu diffĂ©rente (uniquement en lecture). Attention : c’est du bricolage.

PS : je suis preneur de tout conseil et/ou amélioration

Et bon WE @ tous !

blog comments powered by Disqus

Related posts