localForage 是一个快速简便的 JavaScript 存储库。localForage
通过使用异步存储(IndexedDB 或 WebSQL)和类似 localStorage 的简单 API,提升了 Web 应用的离线体验。
localForage 在不支持 IndexedDB 或 WebSQL 的浏览器中也能使用 localStorage。
请参阅 wiki 中详细的兼容性信息。
要使用 localForage,只需将一个 JavaScript 文件拖放到您的页面中即可:
<script src="localforage/dist/localforage.js"></script>
<script>localforage.getItem('something', myCallback);</script>
尝试示例。
从GitHub 下载最新的 localForage,或使用 npm 安装:
npm install localforage
找不到答案?需要帮助?试试 localForage API 文档。localForage API 文档也有中文版。
如果您在使用库、运行测试或想要为 localForage 做贡献时遇到问题,请先查看现有问题,然后再创建新问题。如果您仍然需要帮助,请随时提交问题。
由于 localForage 使用异步存储,因此它有一个异步 API。除此之外,它与localStorage API 完全相同。
localForage 提供双 API,允许您使用 Node 风格的回调或 Promises。如果您不确定哪种方式适合您,建议您使用Promises。
以下是 Node 风格回调表单的示例:
localforage.setItem('key', 'value', function (err) {
// if err is non-null, we got an error
localforage.getItem('key', function (err, value) {
// if err is non-null, we got an error. otherwise, value is the value
});
});
And the Promise form:
localforage.setItem('key', 'value').then(function () {
return localforage.getItem('key');
}).then(function (value) {
// we got our value
}).catch(function (err) {
// we got an error
});
Or, use async/await:
try {
const value = await localforage.getItem('somekey');
// This code runs once the value has been loaded
// from the offline store.
console.log(value);
} catch (err) {
// This code runs if there were any errors.
console.log(err);
}
您可以在 localForage 中存储任何类型,而不像在 localStorage 中那样只能存储字符串。即使 localStorage 是您的存储后端,localForage在获取/设置值时也会自动执行 JSON.parse() 和 JSON.stringify()。
localForage 支持存储所有可序列化为 JSON 的原生 JS 对象,以及 ArrayBuffer、Blob 和 TypedArray。请查看 API 文档 获取 localForage 支持的完整类型列表。
所有存储后端都支持所有类型,但 localStorage 的存储限制使得无法存储大量大型 Blob。
您可以使用 config() 方法设置数据库信息。可用选项包括“driver”、“name”、“storeName”、“version”、“size”和“description”。
Example:
localforage.config({
driver : localforage.WEBSQL, // Force WebSQL; same as using setDriver()
name : 'myApp',
version : 1.0,
size : 4980736, // Size of database, in bytes. WebSQL-only for now.
storeName : 'keyvaluepairs', // Should be alphanumeric, with underscores.
description : 'some description'
});
注意: 您必须在与数据交互之前调用 config()。这意味着在使用 getItem()、setItem()、removeItem()、clear()、key()、keys() 或 length() 之前必须调用 config()。
您可以使用 createInstance 创建指向不同存储的多个 localForage 实例。
config 使用的所有配置选项均受支持。
var store = localforage.createInstance({
name: "nameHere"
});
var otherStore = localforage.createInstance({
name: "otherName"
});
// Setting the key on one of these doesn't affect the other.
store.setItem("key", "value");
otherStore.setItem("key", "value2");
您可以将 localForage 与 RequireJS 结合使用:
define(['localforage'], function(localforage) {
// As a callback:
localforage.setItem('mykey', 'myvalue', console.log);
// With a Promise:
localforage.setItem('mykey', 'myvalue').then(console.log);
});
如果你在 tsconfig.json 中将 allowSyntheticDefaultImports 编译器选项 设置为 true(TypeScript v1.8+ 支持),你应该使用:
import localForage from "localforage";
否则,您应该使用以下方法之一:
import * as localForage from "localforage";
// or, in case that the typescript version that you are using
// doesn't support ES6 style imports for UMD modules like localForage
import localForage = require("localforage");
如果您使用列出的框架,则有一个适用于您框架中模型的 localForage 存储驱动程序,以便您可以使用 localForage 离线存储数据。我们提供适用于以下框架的驱动程序:
本程序为免费软件;遵循 Apache 许可证 分发。