19

我是从 phonegap 开始的网络开发人员。我需要为 iPhone、android 和 Windows Phone 8 创建一个应用程序。
我需要在本地存储一些数据(对于 localStorage 来说太大)。
我不知道女巫的解决方案是最好的:

  1. Phonegap 提供存储(基于 WebSQL - 已弃用),但 windows phone 不支持。有什么插件可以填补这个空白吗?
  2. 我读过Indexed DB,但我以前没有使用过它,它对我来说不是很直观。我不确定它是否在所有平台上都得到完全支持?我基于(http://blog.nparashuram.com/2012/10/indexeddb-example-on-cordova-phonegap_12.html
  3. 或者,也许我可以在 windows phone上使用 phonegap 插件https://github.com/marcucio/Cordova-WP-SqlitePlugin ,在 android 和 iphone 上使用 https://github.com/marcucio/Cordova-SQLitePlugin。. 然后我的代码在所有平台上都是一样的。

以前有人创建过这样的应用程序吗?我会很感激任何解决方案或想法。

4

5 回答 5

12

Cordova WP8 仅支持 IndexedDB。仅限 iOS 和 Android WebSql。由于 WebSql 已被弃用(我知道有多少人喜欢/使用它,并且同意在许多情况下 WebSql 非常酷),我建议继续使用 IndexedDb 并为 Android/iOS 使用以下 polyfill。

用于 IndexedDB 的 PhoneGap polyfill,使 IndexedDB API 可以与 WebSQL 一起使用

例子

于 2013-01-31T11:57:55.380 回答
3

索引数据库 -

  • 它与许多类型的流行移动操作系统和版本不兼容
  • 它仅与非常特定版本的移动操作系统兼容
  • 开发人员不能将 SQL 与 IndexedDB 一起使用。SQL 语句可用于 SQLite 和 WebSQL
  • 大多数开发人员都尽可能地避免使用 IndexedDB

WebSQL -

  • 它已被 W3C 弃用,这意味着它不再被维护或开发
  • 它需要另一个插件才能使移动应用程序能够与流行的移动操作系统(例如 Google Android 和 Apple iOS)一起使用

SQLite -

  • 它获得了谷歌的奖项
  • SQLite 有它的官方网站。IndexedDB 和 WebSQL 没有
  • 在 Google 上,SQLite 返回 180 万条结果。WebSQL 返回的结果略少于 700K,IndexedDB 返回的结果为 282K。
  • 开发者可以在 SQLite 中使用常用的 SQL 语句
  • 它与所有流行的移动操作系统的大多数版本兼容,例如 iOS 和 Android

如果你想要一个关于 SQLite 的快速教程

使用 Android 和 Phonegap 存储 SQLite 数据库

于 2014-09-14T01:53:41.430 回答
3

最新更新(2014 年 5 月 5 日): MS Open Tech 的新跨平台 Cordova WebSQL 插件

Microsoft Open Technologies is publishing the new open source WebSQL 插件 for Apache Cordova and PhoneGap. This plugin allows developers to integrate a persistent SQL-based local storage solution in their Cordova apps using the exact same JavaScript code across Android, iOS, Windows Phone and Windows Store.

于 2014-06-18T13:26:57.637 回答
3

LocalForage似乎是最好和最新的解决方案: https ://github.com/localForage/localForage (1000 次提交,83 位贡献者)

对于不支持的导航器,它具有后备功能。我还没有尝试过(通过phonegap),但我会尽快给你反馈;)

于 2015-05-08T22:27:24.707 回答
1

使用我的开源库 ydn-db 怎么样?它在这些之上有非常好的抽象层。

编辑:

于 2013-08-14T10:30:42.730 回答