如何为移动应用程序初始化 localForage

How to initialize localForage for mobile app

我是移动开发新手,计划使用普通 HTML 和 jQuery 以及 Onsen UI 构建应用程序。

我读到我们可以使用 localForage 作为数据库,有几个问题。

  1. 我的应用程序必须有数据库名称吗?如果不是,则移动设备中的其他应用也可能正在使用 localForage。那么所有应用程序的数据库是否相同。

  2. 这里的document说,config应该在每个动作之前调用。 那么,如果像这样在页面加载时初始化它是否可以:

    $(文档).ready(函数(){
    localforage.config({
    姓名:'myApp',
    版本:1.0,
    店铺名称:'keyvaluepairs'
    });
    });

还是应该在每个动作(获取、设置、清除等)之前声明

  1. 我们怎么知道操作正在触发所需的数据库,因为它没有在操作方法中指定。

  2. 是否必须要有店名

  1. Is it mandatory to have a database name for my app. If no, then other apps in mobile may also be using localForage. Will the DB be same then for all apps.

A:是也不是。事实上,必须有一个数据库名称。但是,如果您未设置它,则会使用默认值 "localforage"。

  1. The document here says, config should be called before each action. So, is it ok if it is initialized on page load like this ...

A:是的,在 $(document).ready(cb) 中初始化完全没问题。事实上,任何时候 "initialize" 都可以,只要您确保它发生在第一次调用任何实际操作(setItem/getItem 等)之前。

  1. How can we know that the action is triggering the desired database, as it is not specified in the action methods.

答:localforage 可以有多个实例,而每个实例只绑定到一个数据库,(更准确地说,它绑定到该特定数据库的特定存储)。您知道该操作针对特定数据库,因为这些操作是特定实例的方法。这里没有歧义。

我个人建议您明确命名您的实例:

var myAppDb = localforage.createInstance({
  // these are the same options accepted by localforage.config()
  name: 'myApp',
  version : 1.0,
  storeName : 'keyvaluepairs'
});

myAppDb.setItem('foo', 'bar');

这样您就可以 100% 确定在 "myApp" 数据库上触发了操作 ;-)

  1. Is it mandatory to have a store name.

再一次,是和否。但是等等,听我说完,这个有点棘手。

默认数据库 实际上被命名为 "localforage",存储在 localforage 中有这个奇怪的内部概念 未命名的默认值商店。我个人觉得很混乱。当您使用 LOCALSTORAGE 作为驱动程序时,它的行为非常古怪。

所以经验法则是始终为您的商店命名。只是把它当作强制性的。如果您在一个数据库中只有一个商店,可以将其命名为 "default"。听起来比 "keyvaluepairs" 好,你不觉得吗?

 let instance = localforage.createInstance({         
      driver      : localforage.INDEXEDDB, // Force WebSQL; same as using setDriver()
      name        : name,
      version     : 1.0,
      size        : 4980736, // Size of database, in bytes. WebSQL-only for now.
      storeName   : 'YourStoreName', // Should be alphanumeric, with underscores.
      description : 'Your Description'
    });

instance.setItem("key", {"name":"abc"});

**您也可以从 createInstance 设置配置 **