在PhoneGap上Angularjs / Javascript应用程序的最佳数据持久性?

我正在寻找在PhoneGap应用程序上的Angularjs数据持久性的最佳做法。 我在这个上面使用了Ionic Framework,但是与这个问题无关,因为它只是build立在Angular&Cordova之上。

我喜欢Angular在数据持久性解决scheme上保持灵活性,因为它是一个非专门的混合应用程序框架的Web框架,所以这很有道理……想知道人们是如何解决这个问题的。

这里有一个概述:

要求

  • 将本地数据库添加到预编译数据的应用程序版本。 这将超过5MB的数据限制。
  • 启动时从本地数据库加载数据。
  • 将更新的数据保存到本地数据存储库以进行持久化
  • 如果可能的话,优先select无模式。
  • 简单的查询界面。 我可以将所有的数据加载到内存中,只要使用标准的Angularfilter就可以了,只要性能很好。
  • 对象查询接口…像一个类似于ActiveRecord的ORM,而不必在我的应用程序中编写SQL。
  • 未来的certificate。 每次构build需要数据持久性的应用程序时,我都不想重新发明轮子。 也想select更标准的东西,如果可能的话,我可以继续使用它在未来…像Indexeddb的东西在这里是有道理的。

选项

我一直在看下面的选项。 你能提供任何这些反馈吗?

  • Breezejs – 看起来更专注于服务器。 有一个SQLite接口?
  • YDN-DB – 看起来像一个选项,但似乎有些晦涩的比较其他一些选项。
  • JayData – 这仍然是活跃的? 关注它的商业方面。
  • Persistencejs – 这看起来很有希望。 该项目是否仍然活跃?
  • ngStorage – 这只是一个localStorage接口? 它解决了5M限制吗?
  • Angular-cache – 我可以用这个预加载数据吗? 我可以坚持多久数据?
  • localForage – 对此不太了解。 它解决了5M限制吗?
  • Pouchdb – 关注查询语言。 不解决5M的限制
  • Couchdb Lite – 关注查询语言。
  • WebSQL – 我不使用这个,因为它似乎是在出路..加5M的限制。
  • Indexeddb – 有一个垫片为大多数主stream浏览器构build了compat层。 5M限制。 如果我可以在Sqlite之上使用这个,那么可能会成为我的赢家,因为更多的标准为基础。
  • 存储在json文件中 – 只需使用普通的旧对象,然后使用Phonegap文件api来加载和存储序列化的数据。 似乎痛苦不得不序列化所有的数据,每次我们想保存…但只要我可以使用Angularfilter的选项。

对不起,很长的职位。 我真的很想看看最佳实践的一些想法。 希望Angular Way能够处理混合移动应用上的大数据持久性。

谢谢

PouchDB开发在这里。 显然我有偏见,但这是我的看法:

  1. 在PhoneGap / Cordova中绕过存储配额的最佳方式是使用iOS / Android的SQLite插件 。 性能也往往更好,特别是在Android上。编辑 :在现代后Kitkat Android,它实际上更糟糕。)

  2. WebSQL有一个很好的查询语言,但是你想成为未来的certificate,也就是说,不要把自己链接到一个死的标准。 还有Windows Phone和Firefox OS的考虑。

  3. 因此,如果您使用PouchDB并安装PhoneGap插件,它将跨浏览器工作,并且您将避免iOS / Android上的存储限制。 赢得?

另外,Angular与PouchDB(比如PB&J)很适合,因为Angular会直接处理JSON对象,而Pouch也是如此。 (比较这与Ember和Backbone,有自定义类,你必须导出到/从JSON导入 – 这有点棘手。)

祝你好运,无论你select什么!

您可以使用localForage和我的angular落执行: https : //github.com/ocombe/angular-localForage在移动它将使用indexedDB或webSQL和初始限制将是50MB。 在您的angular度项目中,语法将非常易于使用。

Indexeddb – 有一个垫片为大多数主stream浏览器构build了compat层。 5M限制。 如果我可以在Sqlite之上使用这个,那么可能会成为我的赢家,因为更多的标准为基础。

实际上,WebSQL的限制(实际使用的Shim下面的层)是* 50 * M。 但是,您可以使用许可请求获取更多存储空间。 另外,这正是我所推荐的,正是你所提到的原因:标准。 传言是Safari 7.1将会提供IndexedDB支持。