Firebase
Google 提供的应用开发平台,拥有开源客户端 SDK 与托管后端服务。
项目概述
Firebase 为 Web 和移动应用提供认证、数据库、文件存储、Functions、Hosting、消息推送、质量监控和本地 Emulator;其 SDK 开源,但完整托管平台并非可自托管的开源后端。
Firebase 是 Google 提供的应用开发平台,覆盖从客户端数据与身份到后端计算、托管、消息推送和应用质量的完整生命周期。Web 应用可使用模块化 JavaScript SDK 连接 Authentication、Cloud Firestore、Realtime Database、Cloud Storage、Cloud Functions、Cloud Messaging、Remote Config、App Check、Firebase AI Logic 和 SQL Connect 等产品。需要准确区分开源边界:Firebase JavaScript SDK 主要采用 Apache-2.0,部分 Protobuf 代码采用 BSD-3-Clause;但 Firebase 的完整云端服务、控制台和基础设施不是一个可下载、自托管的开源后端。
主要特点
Firebase 将常见应用后端、发布和质量工具整合到 Google Cloud 项目中,并为客户端提供一致的跨平台 SDK。
Authentication
支持邮箱密码、匿名账号、手机号和多种 OAuth/OIDC/SAML 身份提供商,并通过客户端 SDK 管理登录状态与 Token。
Cloud Firestore 与 Realtime Database
Firestore 提供文档模型、查询、实时监听和离线能力;Realtime Database 以 JSON 树和低延迟同步服务实时场景。
Cloud Storage 与 Functions
Cloud Storage 保存用户文件,Cloud Functions 响应 HTTP、数据库、认证和其他事件,为客户端应用补充可信服务端逻辑。
Hosting 与 App Hosting
Hosting 适合静态资源、SPA 和边缘缓存;App Hosting 面向动态 Web 框架,并与 GitHub 和 Google Cloud 运行环境集成。
Security Rules 与 App Check
Rules 在 Firestore、Realtime Database 和 Storage 请求层执行授权与数据约束;App Check 帮助阻止未经验证的客户端滥用后端资源。
Local Emulator Suite
可在本地模拟 Authentication、Firestore、Realtime Database、Storage、Functions、Hosting 等服务,并测试 Rules 与跨服务流程。
消息、配置与应用质量
Cloud Messaging、Remote Config、Crashlytics、Performance Monitoring、App Distribution 和 Test Lab 覆盖运营、监控与测试。
Google Cloud 集成
Firebase 项目本质上关联 Google Cloud 项目,可结合 IAM、Cloud Logging、BigQuery、Cloud Run 和其他云服务扩展架构。
适用场景
适合需要快速交付 Web 或移动应用、重视实时数据和移动生态,并接受 Google 托管服务与计费模型的团队。
实时 Web 与移动应用
为聊天、协作、直播互动、状态面板等场景提供客户端订阅、离线缓存和实时数据同步。
移动应用后端
组合登录、推送、Crashlytics、Remote Config、App Distribution 和 Test Lab,覆盖移动产品开发与运营。
快速 MVP
在较少自建服务的情况下完成身份、数据、文件、托管和 Serverless Function,快速验证产品需求。
用户生成内容
使用 Authentication、Firestore、Storage 和 Rules 管理用户资料、帖子、评论、图片和访问权限。
Serverless Web 应用
通过 Hosting 或 App Hosting 发布前端,以 Functions 和 Google Cloud 服务处理可信业务逻辑与异步事件。
功能实验与质量监控
结合 Remote Config、Analytics、Crashlytics 和 Performance Monitoring 分批发布功能并观察稳定性。
优点与注意事项
技术选型不仅要看能力,也要理解它带来的团队成本。
主要优点
Firebase 擅长的地方
- Web、iOS、Android、Flutter、Unity 等客户端 SDK 覆盖广
- 认证、实时数据、存储、Functions 和托管可快速组合
- Firestore 实时监听和离线能力适合客户端优先应用
- Emulator Suite 便于本地联调并自动测试 Security Rules
- Crashlytics、Messaging、Remote Config 等移动工具集成成熟
- 与 Google Cloud IAM、日志、分析和计算服务衔接自然
需要注意
采用前应考虑的问题
开源 JavaScript SDK、Admin SDK 和部分工具不代表云端服务开源。Firebase 没有与官方托管平台完全等价的通用自托管发行版。
Security Rules、Firestore 查询、实时监听、Functions 触发器和客户端 API 都具有平台特征,迁移到其他后端通常需要改造数据与授权逻辑。
宽松规则可能直接暴露数据。规则必须与 Authentication 配合并持续测试;服务端 SDK 会绕过 Firestore Rules,需要另用 IAM 控制。
Firestore 不提供传统 Join,复杂聚合和多实体事务需要重新设计、冗余数据或引入其他 Google Cloud 数据服务。
文档读取、写入、删除、存储、带宽和 Functions 都可能产生费用。实时监听或低效查询会放大读取量,应设置预算告警并压测。
apiKey、projectId 等 Web 配置用于定位项目,无法单独阻止滥用;必须部署 Rules、App Check、API 限制和配额保护。
本地测试能覆盖主要逻辑,但不能替代对真实区域、IAM、网络、配额、冷启动和服务集成的预发布验证。
Firebase 与底层 Google Cloud 产品可能具有不同定价、区域、配额、支持级别和服务条款,生产选型应逐项核对。
快速开始
创建 Firebase 项目并注册 Web App,使用模块化 SDK 初始化 Firestore 与 Authentication,再通过 Rules 和 Emulator 建立安全的本地开发流程。
bashnpm install firebase
# 本地开发与部署工具
npm install --save-dev firebase-toolstypescriptimport { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { getFirestore } from "firebase/firestore";
const firebaseConfig = {
apiKey: import.meta.env.VITE_FIREBASE_API_KEY,
authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN,
projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID,
};
export const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);typescriptimport {
addDoc,
collection,
limit,
onSnapshot,
orderBy,
query,
serverTimestamp,
} from "firebase/firestore";
const posts = collection(db, "posts");
await addDoc(posts, {
title: "Hello Firebase",
authorId: auth.currentUser?.uid,
createdAt: serverTimestamp(),
});
const latestPosts = query(
posts,
orderBy("createdAt", "desc"),
limit(20),
);
const unsubscribe = onSnapshot(latestPosts, (snapshot) => {
console.log(snapshot.docs.map((doc) => ({
id: doc.id,
...doc.data(),
})));
});
// 页面卸载时调用 unsubscribe()typescriptimport {
GoogleAuthProvider,
signInWithPopup,
signOut,
} from "firebase/auth";
const provider = new GoogleAuthProvider();
export async function login() {
return signInWithPopup(auth, provider);
}
export async function logout() {
return signOut(auth);
}javascriptrules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /posts/{postId} {
allow read: if true;
allow create: if request.auth != null
&& request.resource.data.authorId == request.auth.uid;
allow update, delete: if request.auth != null
&& resource.data.authorId == request.auth.uid;
}
}
}bashnpx firebase login
npx firebase init firestore emulators
npx firebase emulators:start
# 测试通过后再部署规则
npx firebase deploy --only firestore:rules下一步:Firebase Web 配置对象会出现在客户端代码中,它不是安全边界。真正的访问控制必须依靠 Authentication、Security Rules、App Check 和服务端 IAM,并使用 Emulator 为未登录、越权和跨租户场景编写测试。
类似项目
这些平台同样提供数据库、认证、存储和 Functions,但在开源范围、自托管能力和底层数据库模型上差异明显。
Firebase vs Supabase
Firebase 和 Supabase 都能为客户端快速提供数据库、认证、存储、实时能力与 Functions。Firebase 是 Google 托管的多产品平台,以 Firestore 文档数据库和移动生态见长;Supabase 以开源组件与 PostgreSQL 为核心,并提供自托管路径。
| 比较维度 | Firebase | Supabase |
|---|---|---|
| 开源范围 | 客户端 SDK 和部分工具开源,完整云平台非整体开源 | 核心平台与主要组件开源,并提供自托管方案 |
| 主要数据库 | Cloud Firestore 文档数据库 / Realtime Database | PostgreSQL 关系数据库 |
| 查询模型 | 文档查询、实时监听、客户端离线同步 | SQL、Join、视图、函数、扩展和 Row Level Security |
| 访问控制 | Firebase Authentication + Security Rules + IAM | Auth + PostgreSQL RLS、角色与数据库权限 |
| 移动生态 | Messaging、Crashlytics、Remote Config、Test Lab 等完整工具 | 后端数据能力突出,移动运营工具需要其他服务补充 |
| 本地开发 | Local Emulator Suite 模拟多项 Firebase 服务 | 本地 Supabase Stack,可运行实际 PostgreSQL 等组件 |
| 云端扩展 | 与 Google Cloud Functions、Run、BigQuery 和 IAM 集成 | 与 PostgreSQL 生态、Edge Functions 和外部云服务集成 |
| 更适合 | 客户端实时体验、移动产品和 Google Cloud 团队 | 关系数据、SQL 控制、开源与可迁移性优先的团队 |
如果应用以移动端、实时客户端同步、推送和应用质量工具为核心,并希望深度使用 Google Cloud,Firebase 的一体化体验更成熟;如果业务依赖关系数据、复杂 SQL、数据库级权限,并重视开源和自托管选择,Supabase 通常更自然。选型前应使用真实查询、权限规则、离线行为、峰值读取量和迁移方案做原型验证。
资料核验
版本、维护信息与本页采用的官方资料来源。
本页依据 Firebase Web Setup、产品文档、Security Rules、App Check、Emulator 与 JavaScript SDK 仓库整理。SDK 和 CLI 版本通过 npm Registry 核验;开源许可证说明依据 firebase-js-sdk 官方 LICENSE,且未把托管平台误标为整体开源。
官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 27 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。