web-dev-qa-db-ja.com

PhoneGapのAngularjs / Javascriptアプリに最適なデータ永続性

PhoneGapアプリでのAngularjsデータの永続性のベストプラクティスを探しています。私はIonicこの上にフレームワークを使用していますが、これはAngular&Cordova。

私はそれが好きですAngularはデータ永続化ソリューションで柔軟性を維持します、それは特にハイブリッドアプリフレームワークではないWebフレームワークです...人々がこれをどのように解決しているかを知りたいです。

概要は次のとおりです。

必要条件

  • プリロードされたデータのアプリビルドにローカルデータベースを追加します。これは5MBのデータ制限を超えます。
  • 起動時にローカルデータベースからデータをロードします。
  • 永続化のために、更新されたデータをローカルデータストアに保存する。
  • 可能であれば、スキーマレスを優先します。
  • シンプルなクエリインターフェイス。すべてのデータをメモリにロードし、標準のAngularフィルターを使用できます。ただし、パフォーマンスがまともであれば。
  • オブジェクトクエリインターフェイス...アプリでSQLを記述する必要はなく、ActiveRecordのようなORMのようなもの。
  • 将来の証拠。データの永続性を必要とするアプリを作成するたびに、車輪の再発明をしたくありません。また、可能であればより標準的なものを選択して、今後も引き続き使用できるようにしたいと考えています...ここでは、Indexeddbのようなものが理にかなっています。

オプション

私は次のオプションを見てきました。これらのいずれかについてフィードバックを提供できますか?

  • Breezejs-サーバーにより焦点を当てています。 SQLiteインターフェースはありますか?
  • YDN-DB-オプションのように見えますが、他のオプションのいくつかと比べると少しあいまいに見えます。
  • JayData-これはまだアクティブですか?それの商業的側面が心配です。
  • Persistencejs-これは有望に見えます。プロジェクトはまだアクティブですか?
  • ngStorage-これは単なるlocalStorageインターフェースですか? 5Mの制限を解決できますか?
  • 角度キャッシュ-これでプリロードするデータを入手できますか?データをどれくらい持続できますか?
  • localForage-これについてあまり知りません。 5Mの制限を解決できますか?
  • Pouchdb-クエリ言語が心配です。 5Mの制限を解決しません
  • Couchdb Lite-クエリ言語が心配です。
  • WebSQL-これは使用しないでください。途中で出ているようです。さらに5Mの制限があります。
  • Indexeddb-ほとんどの主要なブラウザー用に互換レイヤーを構築するシムがあります。 5Mの制限。 Sqliteの上でこれを使用できれば、より多くの標準に基づいているので、私にとっては間違いなく勝者になります。
  • JSONファイルに保存-単純な古いオブジェクトを使用し、PhonegapファイルAPIを使用して、シリアル化されたデータをロードおよび保存します。保存するたびにすべてのデータをシリアル化する必要があるのは苦痛のようですが... Angularフィルタを使用できる限りオプションです。

長い投稿でごめんなさい。私は本当にベストプラクティスについてのいくつかの考えを見てみたいです。 Angularハイブリッドモバイルアプリで大量のデータの永続性を処理する方法を望みます。

ありがとう

41
Kevin Baker

PouchDB開発者はこちら。明らかに私は偏見がありますが、ここに私の見解があります:

  1. PhoneGap/Cordovaのストレージクォータを回避する最良の方法は、iOS/Androidで SQLiteプラグイン を使用することです。 特にAndroidでは、パフォーマンスも向上する傾向があります。 (Edit:現代のKitKat以降のAndroidでは、実際はもっと悪いです。)

  2. WebSQLにはすてきなクエリ言語がありますが、将来に備えて、つまり、死んだ標準に縛られないようにしたいのです。考慮すべきWindows PhoneとFirefox OSもあります。

  3. したがって、PouchDBを使用してPhoneGapプラグインをインストールすると、クロスブラウザーで機能し、iOS/Androidのストレージ制限を回避できます。勝つ?

また、AngularはPB&JのようなPouchDBに適合します。なぜなら、AngularはまっすぐなJSONオブジェクトを扱い、Pouchも同様です。 EmberおよびBackbone、JSONへのインポート/ JSONからのインポートが必要なカスタムクラスがあります。少し複雑です。)

何を選んでも幸運を祈ります!

18
nlawson

LocalForageと私の実装を角度で使用できます: https://github.com/ocombe/angular-localForage モバイルではindexedDBまたはwebSQLを使用します初期制限は50 MBです。 angularプロジェクトで構文は本当に使いやすいでしょう。

6
Olivier

Indexeddb-ほとんどの主要なブラウザー用に互換レイヤーを構築するシムがあります。 5Mの制限。これをSqliteの上で使用できれば、より多くの標準に基づいているので私にとっては勝者になるでしょう。

実際、WebSQL(実際にボンネットの下で使用するシムの下のレイヤー)の制限は* 50 * Mです。ただし、より多くのストレージを取得するために使用できる許可要求があります。さらに、これは、あなたが指摘したまさにその理由、つまり標準のために私が推奨するものです。噂では、Safari 7.1にはIndexedDBのサポートが搭載される予定です。

1
Jeff Hubbard