【问题标题】:phonegap - sqlite or Indexed DB?phonegap - sqlite 或索引数据库?
【发布时间】:2013-01-31 11:18:36
【问题描述】:

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

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

以前有人创建过这样的应用吗?如果有任何解决方案或想法,我将不胜感激。

【问题讨论】:

    标签: android iphone cordova windows-phone-8 web-sql


    【解决方案1】:

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

    PhoneGap polyfill for IndexedDB that makes the IndexedDB API to work with WebSQL

    Example

    【讨论】:

    • 我看过这个例子,但我不相信那个解决方案。这个 Cordova-WP-SqlitePlugin 有什么用?有用吗?
    • 我从未尝试过 Cordova-WP-SqlitePlugin 所以没有任何信息它有多稳定/好。
    • 使用Cordova-WP-SqlitePlugin,不是很稳定。一大堆错误,总是显示 SQLite 很忙。不推荐。
    【解决方案2】:

    最新更新(2014 年 5 月 5 日): New Cross Platform Cordova WebSQL plugin by MS Open Tech

    Microsoft Open Technologies is publishing the new open sourceWebSQL pluginfor 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.

    【讨论】:

      【解决方案3】:

      索引数据库 -

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

      WebSQL -

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

      SQLite -

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

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

      Storage of SQLite database using Android and Phonegap

      【讨论】:

      • 首先,indexedDB 和 WebSQL 都有官方网页,作为 w3c 标准工作的一部分。 SQLite 不是一个开放标准。其次,您认为开发人员积极避免使用 indexedDB。我的经历不一样。第三,没有名为“Polyfill”的插件——在 Web 开发中,“polyfill”是一个查看当前浏览器中实现的内容并为缺少的内容提供重新实现的库。是的,indexedDB 有一个不错的 polyfill(检查 github),它使 API 随处可用。
      • @JonWatte 这很好。没有适用于所有情况的完美解决方案。在互联网上争论就像在特奥会上努力成为最好的。你可以告诉我更多,对于我和其他任何将选择存储技术的人。与 WebSQL 或 SQLite 相比,使用 IndexedDB 有什么优势?
      • 顺便说一句,在谷歌上输入“polyfill”后的第一个结果说它是一个插件,而 Polypill 上的 Wikipedia 条目将其定义为“是可下载的代码,它提供了未内置的功能一个网络浏览器”,这正是插件的本质,也是插件通常的作用。与其他常见插件相比,它的安装方式可能有所不同,但这正是插件的作用。
      • 原发帖者说存在一个名为“Polyfill”的插件。 “Polyfill”不是“a”插件的名称——有许多插件(和库)提供了 polyfill 功能。说您需要“另一个名为 Polyfill 的插件”就像说您在寻找“蓝色男士衬衫”时需要“另一个线程”。
      【解决方案4】:

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

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

      【讨论】:

      • localForage 由 Mozilla 维护,这是一个巨大的优势。但是,它们还有一些边缘情况需要覆盖,同时 API 更简单,但也是最差的。
      【解决方案5】:

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

      编辑:

      【讨论】:

      • 嗯,方便给我们一个链接吗?
      猜你喜欢
      • 1970-01-01
      • 2012-08-28
      • 2011-07-05
      • 2011-05-15
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多