我希望在PhoneGap应用程序上找到Angularjs数据持久性的最佳实践 . 我正在使用Ionic Framework,但与此问题无关,因为它只是 Build 在Angular&Cordova之上 .
我喜欢Angular在数据持久性解决方案上保持灵活性,因为它是一个Web框架,而不是一个混合应用程序框架,所以很有意义...我想知道人们如何解决这个问题 .
这是一个概述:
要求
-
将本地数据库添加到app build以获取预加载的数据 . 这将超过5MB的数据限制 .
-
在启动时从本地数据库加载数据 .
-
将更新的数据保存到本地数据存储以保持持久性 .
-
如果可能,首选无架构 .
-
简单的查询界面 . 我可以将所有数据加载到内存中,只需使用标准的Angular过滤器,只要性能良好 .
-
对象查询接口......类似于类似ActiveRecord的ORM,而不是必须在我的应用程序中编写SQL .
-
未来证据 . 每次我构建需要数据持久性的应用程序时,我都不想重新发明轮子 . 如果可能的话,也想选择更标准的东西,以便将来继续使用它......像Indexeddb这样的东西在这里会有意义 .
选项
我一直在寻找以下选项 . 你能提供任何反馈意见吗?
-
Breezejs - 看起来更专注于服务器 . 有SQLite接口吗?
-
YDN-DB - 看起来像一个选项,但与其他一些选项相比似乎有点模糊 .
-
JayData - 这仍然有效吗?关注它的商业方面 .
-
Persistencejs - 看起来很有希望 . 该项目仍然有效吗?
-
ngStorage - 这只是一个localStorage界面吗?它是否解决了5M的限制?
-
Angular-cache - 我可以预先加载数据吗?我能坚持多久数据?
-
localForage - 对此不太了解 . 它是否解决了5M的限制?
-
Pouchdb - 关注查询语言 . 不解决5M限制
-
Couchdb Lite - 关注查询语言 .
-
WebSQL - 我不会使用它,因为它似乎正在出路..加上5M限制 .
-
Indexeddb - 有一个垫片可以为大多数主流浏览器构建compat层 . 5M限制 . 如果我可以在Sqlite之上使用它,那么自从更多基于标准以来,这对我来说可能是一个胜利者 .
-
存储在json文件中 - 只需使用普通旧对象,然后使用Phonegap文件api加载和存储序列化数据 . 似乎每次我们想要保存时都必须序列化所有数据是一种痛苦......但只要我可以使用Angular过滤器就可以选择 .
对不起,很长的帖子 . 我真的希望看到一些关于最佳实践的想法 . 喜欢Angular Way来处理Hybrid移动应用程序上的大数据持久性 .
谢谢
3 回答
PouchDB dev在这里 . 显然我有偏见,但这是我的看法:
在PhoneGap / Cordova中绕过存储配额的最佳方法是使用SQLite plugin for iOS / Android . 性能也往往更好,特别是在Android上 . ( Edit :在现代后Kitkat Android中,它实际上更糟糕 . )
WebSQL有一个很好的查询语言,但你想要面向未来,即不要将自己链接到死标准 . 还有Windows Phone和Firefox OS需要考虑 .
因此,如果您使用PouchDB并安装PhoneGap插件,它将跨浏览器工作,您将避免iOS / Android上的存储限制 . 赢得?
另外,我个人的经验是Angular适合像PB&J这样的PouchDB,因为Angular处理直接的JSON对象,Pouch也是如此 . (将此与Ember和Backbone进行比较,它们具有您必须从JSON导出/导入的自定义类 - 这有点棘手 . )
无论你选择什么,祝你好运!
您可以在angular中使用localForage和我的实现:https://github.com/ocombe/angular-localForage在移动设备上,它将使用indexedDB或webSQL,初始限制为50mb . 语法在角度项目中非常容易使用 .
实际上,WebSQL(你将在引擎盖下实际使用的垫片下面的层)的限制是* 50 * M.但是,您可以使用权限请求来获取更多存储空间 . 另外,这是我所建议的完全是你提到的原因:标准 . 有传言说Safari 7.1将支持IndexedDB .