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.
- Vous trouverez le code ici : backbone-sync-github.js
- un exemple par lĂ : bb-github-api.js & index-bb-github-api.html
- et enfin quelques explications : 2011-08-26-MAIN.md ou README.md
PS : je suis preneur de tout conseil et/ou amélioration
Et bon WE @ tous !
Tweet