Quelle est la différence fondamentale entre JsonStore et JsonReader dans le contexte de Ext.data? Je veux dire quand je devrais aller pour JsonStore et quand je devrais utiliser JsonReader comme pour moi tous les deux fournissent la même solution.Quelle est la différence fondamentale entre JsonStore et JsonReader dans le contexte de Ext.data?
Répondre
En fait, ils sont deux choses distinctes. Un Ext.data.JsonReader
lit un objet JSON donné et renvoie des enregistrements de données (Ext.data.Record
objets) qui sont stockés ultérieurement par le magasin de données respectif.
Le Ext.data.Store
est la classe de base pour tous les stockages ext et utilise des objets d'aide pour récupérer des données (Ext.data.DataProxy
), pour l'écriture de données (Ext.data.DataWriter
) et pour les données de lecture (Ext.data.DataReader
). Ces classes de base sont disponibles en différentes saveurs telles que:
Tout cela crée un composant très extensible qui permet au développeur de configurer exactement ce dont il a besoin pour le modifier. Pour le rendre plus facile pour les développeurs (en particulier les nouveaux) Poste est livré avec certains magasins de données préconfigurés:
Ext.data.ArrayStore
pour faire la lecture à partir de simples tableaux Javascript plus facileExt.data.DirectStore
, juste un magasin préconfigurés avec unExt.data.DirectProxy
et unExt.data.JsonReader
Ext.data.JsonStore
, juste un magasin préconfiguré avec unExt.data.JsonReader
Ext.data.XmlStore
, juste un magasin préconfiguré avec unExt.data.XmlReader
Donc, en réalité, un Ext.data.JsonStore
est juste une classe de commodité pour le rendre plus facile pour le développeur.
Les deux extraits suivants vont créer les mêmes (ou comparables) magasins:
var store = new Ext.data.JsonStore({
url: 'get-images.php',
root: 'images',
idProperty: 'name',
fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date'}]
});
// or
var store = new Ext.data.Store({
url: 'get-images.php',
reader: new Ext.data.JsonReader({
root: 'images',
idProperty: 'name',
fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date'}]
});
});
Un JsonReader
lit JSON à partir d'une source de données dans un magasin d'extension. JsonData n'est pas un objet Ext spécifiquement défini, bien que vous l'ayez peut-être vu comme un nom de variable? Dans quel contexte l'utilisez-vous?
Voici un exemple, Exemple avec lecteur var magasin = new Ext.data.Store ({ proxy: nouveau poste .data.HttpProxy ({ url:?/db = cmd liste ' \t \t}), \t \t \t lecteur \t: nouvelle Ext.data.JsonReader ( \t \t \t \t {racine: 'ligne', champs: ['nom']} \t \t) \t}); store.load(); Exemple avec deux JsonStore var store = new Ext.data.JsonStore ({ \t \t \t url:?/Db = cmd liste ', \t \t \t racine: 'rangée', \t \t \t champs: ['nom'] \t \t}); store.load(); – shahjapan
Juste comme une note, vous avez demandé à l'origine la différence entre JsonReader et * JsonData *, qui était évidemment une faute de frappe puisque vous avez modifié votre question pour changer cela (sans le notifier). Je voulais juste clarifier pour que ma réponse ne semble pas si aléatoire. Comme Stefan l'explique ci-dessous, JsonStore est une classe de commodité. Si vous chargez JSON via HTTP, cela vous évite tout simplement quelques efforts de configuration, mais cela équivaut à utiliser un JsonReader plus un HttpProxy. –