localForage是一个快速而简单的JavaScript存储库

localForage


localForage 是一个快速简便的 JavaScript 存储库。localForage
通过使用异步存储(IndexedDB 或 WebSQL)和类似 localStorage 的简单 API,提升了 Web 应用的离线体验。

localForage 在不支持 IndexedDB 或 WebSQL 的浏览器中也能使用 localStorage。
请参阅 wiki 中详细的兼容性信息

要使用 localForage,只需将一个 JavaScript 文件拖放到您的页面中即可:

html 复制代码
<script src="localforage/dist/localforage.js"></script>
<script>localforage.getItem('something', myCallback);</script>

尝试示例

GitHub 下载最新的 localForage,或使用 npm 安装:

bash 复制代码
npm install localforage

支持

找不到答案?需要帮助?试试 localForage API 文档localForage API 文档也有中文版。

如果您在使用库、运行测试或想要为 localForage 做贡献时遇到问题,请先查看现有问题,然后再创建新问题。如果您仍然需要帮助,请随时提交问题

如何使用 localForage

回调 vs Promise

由于 localForage 使用异步存储,因此它有一个异步 API。除此之外,它与localStorage API 完全相同。

localForage 提供双 API,允许您使用 Node 风格的回调或 Promises。如果您不确定哪种方式适合您,建议您使用Promises。

以下是 Node 风格回调表单的示例:

js 复制代码
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:

js 复制代码
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:

js 复制代码
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);
}

存储 Blob、TypedArray 和其他 JS 对象

您可以在 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:

javascript 复制代码
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 使用的所有配置选项均受支持。

javascript 复制代码
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");

RequireJS

您可以将 localForage 与 RequireJS 结合使用:

javascript 复制代码
define(['localforage'], function(localforage) {
    // As a callback:
    localforage.setItem('mykey', 'myvalue', console.log);

    // With a Promise:
    localforage.setItem('mykey', 'myvalue').then(console.log);
});

TypeScript

如果你在 tsconfig.json 中将 allowSyntheticDefaultImports 编译器选项 设置为 true(TypeScript v1.8+ 支持),你应该使用:

javascript 复制代码
import localForage from "localforage";

否则,您应该使用以下方法之一:

javascript 复制代码
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 许可证 分发。

关于项目

localForage 是一个快速而简单的 JavaScript 存储库。localForage 通过使用异步存储(IndexedDB 或 WebSQL)和简单的类似 localStorage 的 API 来改善 Web 应用程序的离线体验。
Apache-2.0
Javascript
25,679
1295
303
2013-10-31
2024-07-31

增长趋势 - stars