在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开发在这里。 显然我有偏见,但这是我的看法:
-
在PhoneGap / Cordova中绕过存储配额的最佳方式是使用iOS / Android的SQLite插件 。
性能也往往更好,特别是在Android上。( 编辑 :在现代后Kitkat Android,它实际上更糟糕。) -
WebSQL有一个很好的查询语言,但是你想成为未来的certificate,也就是说,不要把自己链接到一个死的标准。 还有Windows Phone和Firefox OS的考虑。
-
因此,如果您使用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支持。