javascript - nodejs - angularjs documentation
¿La mejor persistencia de datos para Angularjs/Javascript Apps en PhoneGap? (3)
Estoy buscando encontrar las mejores prácticas para la persistencia de datos de Angularjs en una aplicación PhoneGap. Estoy usando Ionic Framework además de esto, pero no es relevante para esta pregunta, ya que se acaba de construir sobre Angular & Cordova.
Me gusta que Angular siga siendo flexible en cuanto a soluciones de persistencia de datos, tiene sentido ya que es un marco web que no es específicamente un marco de aplicaciones híbridas ... me encantaría saber cómo las personas lo están solucionando.
Aquí hay una descripción general:
Requisitos
- Agregue una base de datos local a la compilación de aplicaciones para los datos precargados. Esto superará el límite de datos de 5 MB.
- Cargue datos de la base de datos local al inicio.
- Guardar datos actualizados en el almacén de datos local para la persistencia.
- Prefiera un esquema sin ser posible.
- Interfaz de consulta simple. Podía cargar todos los datos en la memoria y solo usar filtros angulares estándar para esto, siempre que el rendimiento fuera decente.
- Interfaz de consulta de objetos ... algo así como un ORM similar a ActiveRecord en lugar de tener que escribir SQL en mi aplicación.
- Prueba del futuro. No quiero reinventar la rueda cada vez que estoy construyendo una aplicación que necesita persistencia de datos. También me gustaría elegir algo que sea más estándar si es posible para poder seguir usándolo en el futuro ... algo como Indexeddb tendría sentido aquí.
Opciones
He estado mirando las siguientes opciones. ¿Puedes darnos tu opinión sobre alguno de estos?
- Breezejs: parece más centrado en el servidor. ¿Hay una interfaz SQLite?
- YDN-DB: parece una opción, pero también parece un poco oscuro en comparación con algunas de las otras opciones.
- JayData - ¿Esto todavía está activo? Preocupado por el aspecto comercial de la misma.
- Persistencejs - Esto parece prometedor. ¿El proyecto aún está activo?
- ngStorage: ¿es solo una interfaz localStorage? ¿Resuelve el límite de 5M?
- Caché angular: ¿Puedo tener datos para precargar con esto? ¿Cuánto tiempo puedo persistir en los datos?
- LocalForage: no sé mucho sobre esto. ¿Resuelve el límite de 5M?
- Pouchdb: preocupado por el lenguaje de consulta. no resuelve la restricción 5M
- Couchdb Lite: preocupado por el lenguaje de consulta.
- WebSQL: no debo usar esto, ya que parece que está en camino de salir ... más un límite de 5M.
- Indexeddb: hay una corrección que construye la capa compat para la mayoría de los principales navegadores. Límite de 5M Si pudiera usar esto encima de Sqlite, probablemente sería un ganador para mí, ya que hay más estándares basados.
- Almacenar en archivo json: solo use objetos antiguos y luego use la aplicación de archivo Phonegap para cargar y almacenar datos serializados. Parece una molestia tener que serializar todos los datos cada vez que queremos guardar ... pero una opción siempre que pueda usar filtros angulares.
Perdón por la larga publicación. Realmente me gustaría ver algunas ideas sobre las mejores prácticas. Me encantaría Angular Way para manejar la persistencia de datos grandes en aplicaciones móviles híbridas.
Gracias
Indexeddb: hay una corrección que construye la capa compat para la mayoría de los principales navegadores. Límite de 5M Si pudiera usar esto encima de Sqlite, probablemente sería un ganador para mí, ya que hay más estándares basados.
En realidad, el límite para WebSQL (la capa debajo de la cuña que usarás debajo del capó) es * 50 * M. Sin embargo, hay una solicitud de permiso que puede usar para obtener más almacenamiento. Además, esto es lo que recomendaría exactamente por las razones que anotaste: estándares. El rumor es que Safari 7.1 se enviará con soporte para IndexedDB.
PouchDB dev aquí. Obviamente soy parcial, pero esta es mi opinión:
La mejor forma de evitar las cuotas de almacenamiento en PhoneGap / Cordova es usar el complemento SQLite para iOS / Android.
El rendimiento también tiende a ser mejor, especialmente en Android.( Editar : en el moderno post-Kitkat Android, en realidad es peor).WebSQL tiene un buen lenguaje de consulta, pero desea ser a prueba de futuro, es decir, no encadenarse a un estándar muerto. También hay Windows Phone y Firefox OS a considerar.
Entonces, si usas PouchDB e instalas el complemento PhoneGap, funcionará en todos los navegadores y evitarás el límite de almacenamiento en iOS / Android. ¿Ganar?
Además, mi experiencia personal es que Angular encaja con PouchDB como PB & J, ya que Angular trata con objetos JSON alineados y también lo hace Pouch. (Compare esto con Ember y Backbone, que tienen clases personalizadas que tiene que exportar / importar desde JSON, es un poco más complicado).
¡Buena suerte con lo que elijas!
Puede usar localForage y mi implementación en angular: https://github.com/ocombe/angular-localForage En dispositivos móviles usará indexedDB o webSQL y el límite inicial será de 50mb. La sintaxis será realmente fácil de usar en su proyecto angular.