【问题标题】:Create local storage (device, not cache) with Ionicframework使用 Ionicframework 创建本地存储(设备,而不是缓存)
【发布时间】:2016-10-30 20:52:24
【问题描述】:

我正在使用与 cordova 一起运行的 ionic 框架开发一个应用程序,这需要我将一些数据保存在用户设备(Android/iOS)的本地存储(例如 SD)中,我无法使用 localStorage 保存它ionic 框架,因为它将数据保存在缓存中。

在其他情况下,我需要我的数据在设备中保留很长时间。

我还有什么其他解决方案?

【问题讨论】:

  • @Phonolog 这样我仍然会在浏览器上使用缓存,但它仍然是缓存:/
  • 它几乎是对持久数据的不同可能性的概述,如果您想写入用户的文件系统/sd卡,请参阅this section

标签: android ios cordova ionic-framework local-storage


【解决方案1】:

HTML5 网络存储(即 localStorage)并不总是一个糟糕的选择。它是一种现成的键值存储,受到广泛支持。不,它没有完全存储在缓存中,即 localStorage 中的数据不会过期,也不会被随机擦除。但它是一种有限且低优先级的存储,具体细节因平台而异。

也就是说,我们有以下更可靠的替代方案,具体取决于您要存储的具体内容:

  1. 原生 SQLite - 作为一个 Cordova 应用程序,您的应用程序可以通过第三方 SQLite Plugin 创建和使用原生 SQLite 数据库,就像原生移动应用程序一样。通过 JavaScript,您可以像访问 Cordova 外部的 WebSQL 一样访问您的数据。 Ionic/ngCordova 通过在 SQLite 插件周围提供实用程序包装器来提供帮助:$cordovaSQLite

  2. 本机文件系统 - 作为 Cordova 应用程序,您的应用程序可以通过标准 File Plugin 访问本地文件存储(也可以在 Android 中的 SD 卡上,如果用户存储应用程序容器的地方)。同样,Ionic 提供了一个实用程序包装器,其中包含许多有用的功能:$cordovaFile(查看 ngcordova.com/docs/plugins/)

IndexedDB 在这里也值得一提。不是原生的移动解决方案,但这种 noSQL 存储正在迅速成为大型且可靠的浏览器端存储的标准,这标志着 WebSQL 已经过时。但是,iOS 网页视图对 IndexedDB 的支持存在缺陷且不完整 (caniuse.com/#search=indexeddb)

根据您要存储的数据选择您的解决方案。对于存储应用程序数据,我结合使用 Native SQLite(用于结构化数据)和 localStorage(用于键值数据,主要是 UI 首选项)。对于存储资源,总是有文件系统。

【讨论】:

  • 如果您只想要类似于 localStorage 的东西,即数据的键值对,您可以创建自己的文件并通读它。如果数据旨在成为您的应用程序的首选项,还有一个 Preferences Plugin 提供类似的键值存储。
  • 注意:如果您希望您的数据在应用程序被卸载后仍然存在,恐怕您的选择有限。我只能想象如果您使用 File Plugin 或 Preferences Plugin 将数据存储在应用程序容器之外的公共目录中的文件中(请查看上面的链接以了解如何),您会这样做。其他一切都注定要与应用程序一起被抹去:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2016-02-03
  • 2019-04-29
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
相关资源
最近更新 更多