Cloud Firestore Lite Web SDK

Firestore 是一种良好的可扩缩数据库解决方案,能够让数据在多个网络客户端之间保持同步。

对许多应用来说,Firestore 的代管式离线支持尤为重要,可帮助您构建不受网络延迟或互联网连接影响的响应迅速的应用。但是功能丰富的 SDK 的大小会更大。对于只需要使用基本的创建、读取、更新和删除操作,而不需要代管式离线支持的应用,Firebase 提供什么?

解决方案:Firestore Lite

Firestore Lite 是一种轻量级独立式 REST 专用 Firestore SDK,支持单一文档提取、查询执行和文档更新,并且大小比常规 Web SDK 小得多。Firestore Lite 舍弃了延迟补偿、离线缓存、查询接续和快照侦听器功能,但对于特定的使用场景,库大小和启动时间方面的缩减所带来的益处足以盖过这些不足。

导入 Firestore Lite

Firestore Lite 通过 npm 作为模块化 SDK 的一部分的提供。因此,它是完全模块化且可摇树。

支持以下导入样式。

import { initializeApp } from "firebase/app";
import {
   getFirestore,
   getDoc,
   updateDoc
} from 'firebase/firestore/lite';

Firestore Lite 不支持的 API 功能

为了缩减大小和提高速度,Firestore Lite 舍弃了标准 Firestore SDK 中的以下功能:

  • DocumentSnapshot 事件处理脚本。不包括 onSnapshot 方法以及 DocumentChangeSnapshotListenerOptionsSnapshotMetadataSnapshotOptionsUnsubscribe 对象。
  • 持久性帮助程序。不包括 enableIndexedDBPersistenceenableMultiTabIndexedDbPersistenceclearIndexedDbPersistence 方法。
  • Firestore 软件包。不包括 loadBundle 方法和相关方法,不包括 LoadBundleTaskLoadBundleTaskProgress 对象。

实现文档提取、查询和更新

导入 Firestore Lite 后,您便可以使用所有熟悉的 API get和 update 调用。添加数据获取数据的使用场景都适用。

import {
 getFirestore,
 getDoc,
 updateDoc,
 doc
} from '@firebase/firestore/lite';

const firestore = getFirestore(app);
const docRef = doc(firestore, 'collection/doc');
const docSnap = await getDoc(docRef);
await updateDoc(docRef, "field", 'value');

何时使用 Firestore Lite

决定舍弃标准 Firestore SDK 的离线持久化和缓存功能可能会很困难。在决定舍弃这些功能来换取 Firestore Lite 的较低开销之前,您应该先全面了解这些功能。一般来讲,在决定是否使用 Firestore Lite 时,您需要权衡以下因素:

  • 在线状态 - Firestore Lite 适合不需要实时更新和连接的应用。
  • 大小限制 - 如果您希望减小整体 JavaScript 软件包大小,则 Firestore Lite 非常适合。