Meilleure persistance des données pour les applications Angularjs / Javascript sur PhoneGap?

Je cherche à trouver les meilleures pratiques pour la persistance des données Angularjs sur une application PhoneGap. J’utilise Ionic Framework en plus de cela, mais sans rapport avec cette question, car elle est construite sur Angular & Cordova.

J’aime le fait qu’Angular rest flexible sur les solutions de persistance des données, car il s’agit d’un framework Web qui n’est pas spécifiquement un framework d’applications hybrides … j’aimerais savoir comment les gens résolvent cela.

Voici un aperçu:

Exigences

  • Ajoutez la firebase database locale à la création d’application pour les données préchargées. Cela dépassera la limite de données de 5 Mo.
  • Charger les données de la firebase database locale au démarrage.
  • Enregistrement des données mises à jour dans le magasin de données local pour la persistance.
  • Préférez moins le schéma si possible.
  • Interface de requête simple. Je pouvais charger toutes les données en mémoire et utiliser uniquement des filtres angulars standard, à condition que les performances soient correctes.
  • Interface de requête d’object … quelque chose comme un ORM semblable à ActiveRecord plutôt que d’avoir à écrire du SQL dans mon application.
  • Preuve d’avenir Je ne veux pas réinventer la roue chaque fois que je construis une application qui a besoin de persistance des données. J’aimerais aussi choisir quelque chose de plus standard si possible pour pouvoir continuer à l’utiliser à l’avenir … quelque chose comme Indexeddb serait logique ici.

Les options

J’ai examiné les options suivantes. Pouvez-vous nous faire part de vos commentaires?

  • Breezejs – semble plus concentré sur le serveur. Existe-t-il une interface SQLite?
  • YDN-DB – Cela semble être une option, mais semble également un peu obscur par rapport à certaines des autres options.
  • JayData – Est-ce encore actif? Soucieux de l’aspect commercial de celui-ci.
  • Persistencejs – Cela semble prometteur. Le projet est-il toujours actif?
  • ngStorage – est-ce juste une interface localStorage? Résout-il la limite de 5M?
  • Angular-cache – Puis-je avoir des données à pré-charger avec cela? Combien de temps puis-je conserver les données?
  • localForage – Je ne sais pas grand chose à ce sujet. Résout-il la limite de 5M?
  • Pouchdb – préoccupé par le langage de requête. ne résout pas la ressortingction de 5M
  • Couchdb Lite – préoccupé par le langage de requête.
  • WebSQL – Je ne veux pas l’utiliser car il semble que ce soit en voie de disparition … plus la limite de 5M.
  • Indexeddb – Il existe une cale qui construit la couche de compatibilité pour la plupart des principaux navigateurs. Limite de 5M Si je pouvais utiliser cela en plus de Sqlite, cela serait un avantage pour moi, puisque plus de standards sont basés.
  • Stocker dans un fichier json – Utilisez simplement les anciens objects et utilisez le fichier Phonegap api pour charger et stocker les données sérialisées. Cela semble pénible de devoir sérialiser toutes les données à chaque fois que nous voulons enregistrer… mais une option aussi longtemps que je peux utiliser les filtres angulars.

Désolé pour le long post. J’aimerais vraiment avoir quelques reflections sur les meilleures pratiques. Aimerait un moyen angular pour gérer la persistance de données volumineuses sur les applications mobiles hybrides.

Merci

PouchDB dev ici. Évidemment, je suis partial, mais voici ma prise:

  1. La meilleure façon de contourner les quotas de stockage dans PhoneGap / Cordova consiste à utiliser le plug-in SQLite pour iOS / Android. Les performances ont également tendance à être meilleures, en particulier sur Android. ( Edit : dans Android post-Kitkat moderne, c’est en fait pire.)

  2. WebSQL a un bon langage de requête, mais vous voulez être à l’épreuve du temps, c’est-à-dire ne pas vous enchaîner à une norme morte. Il y a aussi Windows Phone et Firefox OS à considérer.

  3. Donc, si vous utilisez PouchDB et installez le plug-in PhoneGap, cela fonctionnera sur plusieurs navigateurs et vous éviterez la limite de stockage sur iOS / Android. Gagner?

En outre, mon expérience personnelle montre qu’Angular est compatible avec PouchDB comme PB & J, puisque Angular gère les objects JSON rectilignes, tout comme Pouch. (Comparez cela à Ember et Backbone, qui ont des classes personnalisées que vous devez exporter / importer depuis JSON – c’est un peu plus compliqué).

Bonne chance avec quoi que tu choissises!

Vous pouvez utiliser localForage et mon implémentation angular: https://github.com/ocombe/angular-localForage Sur mobile, il utilisera indexedDB ou webSQL et la limite initiale sera 50mb. La syntaxe sera très facile à utiliser dans votre projet angular.

Indexeddb – Il existe une cale qui construit la couche de compatibilité pour la plupart des principaux navigateurs. Limite de 5M Si je pouvais utiliser cela en plus de Sqlite, cela serait un avantage pour moi, puisque plus de standards sont basés.

En fait, la limite pour WebSQL (la couche sous la cale que vous utiliserez sous le capot) est * 50 * M. Cependant, il existe une demande d’autorisation que vous pouvez utiliser pour obtenir plus de stockage. En outre, c’est ce que je recommanderais pour exactement les raisons que vous avez notées: les normes. La rumeur veut que Safari 7.1 soit livré avec le support IndexedDB.