gpt4 book ai didi

javascript - 使用 Cordova 和 PouchDB 离线数据

转载 作者:行者123 更新时间:2023-11-28 18:56:49 26 4
gpt4 key购买 nike

我正在用 Cordova 编写一个字典应用程序。数据大小约为20MB。

我希望应用程序完全离线工作,并在本地查询数据。我发现 PouchDB 非常适合这样做。

但是,我还希望应用程序预装所有数据(JSON 格式)。即把所有数据放入app包中(Cordova项目的www/data文件夹中)。

据我所知,PouchDB 可以创建数据或从服务器同步数据,但我想知道它如何利用应用程序 www 文件夹内的数据文件。

而且,我应该如何格式化数据文件,以便PouchDB可以直接从中查询,而不必先从文件中读取数据,然后将数据插入PouchDB。

有人有什么想法吗?或者也许任何其他 JS 库可以完成此任务?

谢谢!

最佳答案

经过一些研究,我想比较目前的一些可能的选择:

  1. 直接使用PouchDB

    这是不切实际的,因为:1)你必须在第一次启动时将数据插入PouchDB,这可能非常慢; 2)内存使用率很高,因为你会首先将所有数据加载到内存中(除非你拆分它们); 3)Cordova应用程序不能在后台运行;用户可以在插入数据时退出应用程序。

  2. PouchDB 的 sqlite 插件

    一个可能的解决方案。您需要使用文件传输插件将数据复制到“工作文件夹”中。

    缺点:

    • 有点麻烦,因为您需要另一个工作流程来创建 sqlite 文件。
    • PouchDB 的 sqlite 适配器未通过所有测试套件,并且按照官方文档的建议可能会较慢。
    • 额外空间使用(2x);必须将应用程序包中的数据复制到数据文件夹中才能使用 Sqlite。
  3. 将数据拆分为应用程序包内较小的 json 文件(位于/www 文件夹中)

    这是我目前使用的。我将数据分成大约 100 个较小的 .json 文件,并将它们放入/www 文件夹中。然后我可以使用 XHR 请求根据查询动态加载它们。

    优点:

    • 不需要额外的空间;只有一份数据副本

    缺点:

    • 失去PouchDB及其查询方法的所有功能;它基本上是实现一个自定义只读数据库。
  4. 洛基斯

    Lokijs 是一个高性能内存数据库。它可以从 JSON 加载数据库,或(使用 unoffical plugin )从文件系统加载数据库。

    缺点:

    • 因为 Lokijs 是一个内存数据库。大数据量和移动设备上的内存使用可能是一个问题。
<小时/>

另一件值得期待的事情是 PouchDB 的文件系统适配器。至少有些人正在考虑这个问题:https://github.com/pouchdb/pouchdb/issues/4631

<小时/>

预加载数据时出现问题:

预加载数据通常意味着将应用程序包内的数据复制到操作系统提供的数据目录(因平台而异)。

经常会涉及到Cordova的File插件和File Transfer插件。目前文件插件无法访问应用程序包内的数据(尽管插件中定义了appDirectory)。您必须使用文件传输插件将数据文件从应用程序包复制到数据文件夹。

关于javascript - 使用 Cordova 和 PouchDB 离线数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33461054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com