3

我正在构建一个离线 HTML5 应用程序(它将作为压缩.crx文件提供)。它将完全离线安装和使用。任何时候都不会有互联网接入。

AFAIK,没有办法包含一个预先填充的sqlite DB(我知道你不能包含一个indexedDB),所以所有数据都必须包含在数据库之外,但可以被javascript代码访问,然后在第一次运行时,放入数据库。

最好的方法是什么?(从开发/维护的角度以及实际部署的角度来看)

我是否在开发中创建数据库并编写附加代码以将其作为以下之一吐出:

  1. JSON对象?
  2. 数组?
  3. 用于插入 IndexedDB 的实际 JavaScript 代码?
  4. CSV 文件?

其他人如何处理这个问题?

4

2 回答 2

2

作为对安装的响应,创建数据库,然后读入包含数据的文本文件并将其内容插入数据库。类似于以下内容:

chrome.runtime.onInstalled.addListener(function(details, prevVersion) {
  var req = indexedDB.open(dbname,dbversion);
  req.onupgradeneeded = function(event) {
    var db = event.target;
    db.createObjectStore('store1','etc');
  };

  var xhr = new XMLHttpRequest();
  xhr.onload = function(event) {
    var data = event.target.response;
    for(key in initData) {
      req.result.getObjectStore('store1').put(key, initData[key]);
    }
  };
  xhr.open("GET", chrome.extension.getURL('/initdata.json'), true);
  xhr.type='json';
  xhr.send();
});
于 2013-06-09T15:26:45.147 回答
2

我将实际的 js 代码与 JSON 对象数组中的数据一起使用。只是 JSON 文件更好,但不是加载它的方法。CSV 文件也可能是可取的,因为用户可以轻松地编辑和检查。将 csv 转换为 json 对象也很简单。

于 2013-05-20T02:24:42.060 回答