如何为移动应用程序初始化 localForage
How to initialize localForage for mobile app
我是移动开发新手,计划使用普通 HTML 和 jQuery 以及 Onsen UI 构建应用程序。
我读到我们可以使用 localForage
作为数据库,有几个问题。
我的应用程序必须有数据库名称吗?如果不是,则移动设备中的其他应用也可能正在使用 localForage
。那么所有应用程序的数据库是否相同。
这里的document说,config应该在每个动作之前调用。
那么,如果像这样在页面加载时初始化它是否可以:
$(文档).ready(函数(){
localforage.config({
姓名:'myApp',
版本:1.0,
店铺名称:'keyvaluepairs'
});
});
还是应该在每个动作(获取、设置、清除等)之前声明
我们怎么知道操作正在触发所需的数据库,因为它没有在操作方法中指定。
是否必须要有店名
- 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"。
- 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 等)之前。
- 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" 数据库上触发了操作 ;-)
- 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 设置配置 **
我是移动开发新手,计划使用普通 HTML 和 jQuery 以及 Onsen UI 构建应用程序。
我读到我们可以使用 localForage
作为数据库,有几个问题。
我的应用程序必须有数据库名称吗?如果不是,则移动设备中的其他应用也可能正在使用
localForage
。那么所有应用程序的数据库是否相同。这里的document说,config应该在每个动作之前调用。 那么,如果像这样在页面加载时初始化它是否可以:
$(文档).ready(函数(){
localforage.config({
姓名:'myApp',
版本:1.0,
店铺名称:'keyvaluepairs'
});
});
还是应该在每个动作(获取、设置、清除等)之前声明
我们怎么知道操作正在触发所需的数据库,因为它没有在操作方法中指定。
是否必须要有店名
- 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"。
- 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 等)之前。
- 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" 数据库上触发了操作 ;-)
- 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 设置配置 **