【问题标题】:Persistent data for PhoneGap appsPhoneGap 应用程序的持久数据
【发布时间】:2014-08-27 12:32:36
【问题描述】:

EDIT#2 - 到目前为止(2 天后)的回复是个人意见和偏好,而不是对离线 phoneGap 应用程序必须在所有相关设备上轻松存储简单数据的各种选项的分析。因此,我没有接受任何答案,但我正在关注这个问题。

对于正在构建的 PhoneGap Web 应用程序应该使用哪种格式的持久数据,我感到有些困惑。我一直在研究这个,但考虑到我的平庸要求,事情还不清楚。

该应用程序是一个教育应用程序,包含大约 100 道左右的多项选择题和一些记忆游戏。

下载后的应用程序可以保持离线状态。

它适用于所有支持 phonegap 的设备。

我想要读取和写入的唯一数据是用户的表现、总错误次数、每张卡等以及游戏的任何高分。

这些都是非常基本的信息,可以保存在非常简单的 js 对象中。

我希望它是一个相当简单的解决方案,并且非常易于维护/重复。

什么是我最好的选择? phonegap 文件 api? json/草坪椅?本地存储?饼干?有没有办法“更新”应用程序并将其作为对象保存在 javascript 中?网盘?鳞片?存储 API?

其中一些看起来有点矫枉过正。

编辑 设备是否存在差异,我应该做一些设备检测并使用不同的技术吗?

【问题讨论】:

  • 我认为通过一些阅读和搜索,您应该能够剔除其中一些可能性并描述您对其他可能性的担忧。只是总结一下你能找到的“可能会引发辩论、争论、投票或扩展讨论”的每一种技术。
  • 我当然想过我的问题是否是主观的。几个小时前,我尝试了“小”阅读方法。是什么让我相信我不只是在问“我很懒,什么是最好的?”问题是我对需求的准确分析,phoneGap 技术最近才稳定下来,移动平台也在不断变化,导致许多互联网文章不合适和/或过时。

标签: javascript cordova local-storage


【解决方案1】:

我个人喜欢 localStorage。它很简单,适用于大多数情况。

如果您只是记录上面提到的数据,localStorage 将是完美的。我会通过使用JSON.stringify() 将它们转换为字符串来序列化您的数据对象,然后在使用JSON.parse() 将其拉回时将其转换回可用的 JS 对象。

【讨论】:

  • 谢谢,我对 localstorage 的担忧是基于今年早些时候 phoneGap 在 iphone localstorage 上遇到的问题。
  • 这是由于 iOS 的变化,PhoneGap 团队很快解决了这个问题。这不再是一个问题。
  • 谢谢,您有什么理由不使用草坪椅吗?
  • 草坪椅对我的用例来说太过分了。我只需要奇怪的键/值对或一些序列化的对象。
  • 我有一个与问题中描述的用例类似的用例。我使用类似于此答案中描述的 localStorge 。它非常简单并且效果很好。我会推荐它用于像这样的简单用例!
【解决方案2】:

试试我的库http://dev.yathit.com/ydn-db/getting-started.html,由 IndexedDB(出色的性能,通过索引扫描查询)、WebSQL(良好的性能,SQL 查询)或 localStorage(公平的性能,无查询,按键获取,2.5 MB 限制)支持.

db = new ydn.db.Storage('test-store');

db.put('store1', {test: 'Hello World!'}, 123);

req = db.get('store1', 123);
req.done(function(record) {
  console.log(record);
});

高性能,同时仍然很容易。

不喜欢库依赖​​,在https://bitbucket.org/ytkyaw/ydn-db获取原始源代码

【讨论】:

  • 酷,谢谢,很抱歉很痛苦,但你有任何链接可以帮助我理解基本原理,我以前从未使用过类似的东西,我有点警惕把它写进去然后发送到应用商店,你能预见任何phoneGap或任何设备/操作系统的潜在问题吗?我想浏览器兼容性很好。据您所知,它是否经过了很多测试?
【解决方案3】:

这些看起来不错,虽然我没试过。

如果您使用的是使用 AngularJS 的ionic framework,我喜欢ngStorage。这个我试过了,很棒。

【讨论】:

    【解决方案4】:

    我使用 localStorage 来保存我的持久数据,但它在某种程度上并不可靠。我看到一些数据丢失,但我不知道为什么。但我的持久数据使用并不那么重要,所以我不介意这些不一致。

    但你的案子似乎更重要。我会将我的持久性数据存储在Documents folderFile API

    【讨论】:

    • 干杯,你最近有问题吗?
    • 与存储 API 相比如何?
    • 最近我偶尔也会丢失数据。这也可能是一个实施问题。但我没有研究根本原因。正如我所说,我真的不太关心这个。我没有丢失 Documents 文件夹中的任何数据。
    • localStorage 是非事务性的。所以如果你先写再读,你不会立即得到更新的数据。
    • localStorage 文件保存在Library/Caches 目录中,如果系统空间不足,操作系统可能会删除该目录。对我来说,这就是我的数据有时会丢失的原因。
    【解决方案5】:

    Phonegap 为 SQL Lite 提供本地存储支持 http://docs.phonegap.com/en/2.2.0/cordova_storage_storage.md.html#Storage

    抱歉,我没有更多信息。我对这个话题很感兴趣,碰巧遇到了。

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多