首页 文章

PhoneGap上的Angularjs / Javascript应用程序的最佳数据持久性? [关闭]

提问于
浏览
41

我希望在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 回答

  • 6

    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导出/导入的自定义类 - 这有点棘手 . )

    无论你选择什么,祝你好运!

  • 18

    您可以在angular中使用localForage和我的实现:https://github.com/ocombe/angular-localForage在移动设备上,它将使用indexedDB或webSQL,初始限制为50mb . 语法在角度项目中非常容易使用 .

  • 1

    Indexeddb - 有一个垫片可以为大多数主流浏览器构建compat层 . 5M限制 . 如果我可以在Sqlite之上使用它,那么自从更多基于标准以来,这对我来说可能是一个胜利者 .

    实际上,WebSQL(你将在引擎盖下实际使用的垫片下面的层)的限制是* 50 * M.但是,您可以使用权限请求来获取更多存储空间 . 另外,这是我所建议的完全是你提到的原因:标准 . 有传言说Safari 7.1将支持IndexedDB .

相关问题