01 它是干嘛的
Firebase 是给应用开发者用的一套「后端即服务」工具:数据库、账号登录、文件存储、推送通知、崩溃统计、应用托管、云函数一应俱全。它解决的是「做一个 App 除了写界面,还得单独搭一整套服务器」这个负担,让一个人或小团队也能快速做出功能完整的产品。
02 为什么会有它
2011 年之前:写一个手机应用,一半时间花在后端上
做应用的人很快会撞上一堵墙:界面写完了,可数据存哪里、用户怎么注册登录、图片放哪、消息怎么推给用户、崩溃了怎么知道,这些和业务无关却又必须做的事,占掉了大半时间。为了这些,团队得自己租服务器、写接口、配数据库、做安全防护,一个三五个人的小团队,光搭后端就耗掉几个月。
更麻烦的是「实时」。比如聊天或多人协作的场景,用户发一条消息,其他人要马上看到,就得自己实现一套长连接与推送机制,还要处理断线重连、离线消息,技术门槛不低。
Firebase 最初的切入点正是实时数据同步:数据一改,所有连着这个应用的设备立刻收到更新,开发者不必自己写这套机制。2014 年被谷歌收购后,它逐步补齐了登录、存储、推送、统计、崩溃报告、云函数等一整套后端能力,打包成开箱即用的服务。开发者只写前端逻辑,需要什么后端能力就打开哪个功能,做产品的门槛因此大幅降低。
03 它怎么工作
应用直接连到平台的数据服务,数据变化会被实时推送给所有订阅它的客户端;需要跑服务端逻辑时,由事件触发云函数执行,开发者不必自己管理任何服务器。
数据一改,所有设备立刻看到:事件驱动的后端是怎么运作的
- 1① 客户端直接读写数据
应用通过官方开发包直接与数据服务通信,不必自己写一套接口做中转,省掉整个后端 API 层。
- 2② 数据变化实时推送
当一份数据被修改,订阅了它的所有设备立刻收到通知并更新界面,聊天、协作类功能因此很容易实现。
- 3③ 事件触发云函数
需要在服务端做的事(如注册后发欢迎邮件、下单后扣库存),通过监听数据库变化或接口调用触发一段函数,在云上执行。
- 4④ 按安全规则控制权限
用声明式规则规定「谁能读、谁能写哪些数据」,保证即使客户端代码被篡改,也不能越权访问别人的数据。
- 5⑤ 托管与发布前端
前端页面可直接托管在平台上,配合云函数构成完整应用,一条命令即可发布上线并自动获得全球加速。
04 谁在用它
小团队或个人开发者几天内做出可用的产品原型,先验证想法,再决定要不要投入更多。
消息、评论、在线状态等需要即时同步的场景,用实时数据能力直接实现。
支持邮箱、手机号与第三方账号登录,省去自己实现整套认证体系的麻烦。
向特定用户群发送消息提醒,提升留存与活跃。
收集崩溃报告与用户行为统计,快速定位线上问题并了解功能使用情况。
05 怎么用
需要一点前端开发基础,从建项目到跑通第一个功能大约半天。
- 01在控制台创建一个项目,按引导把它与你的应用关联,获得配置信息。
- 02在应用里引入官方开发包并完成初始化,此时已能访问到平台各项能力。
- 03打开需要的功能:数据存储、账号登录、文件存储等,按需启用,不必全部用上。
- 04编写安全规则,明确谁能读写哪些数据,这是上线前必须完成的关键一步。
- 05需要服务端逻辑时写一段云函数并部署;前端则可直接用命令行工具发布托管。
import { initializeApp } from 'firebase/app'
import { getFirestore, collection, addDoc, getDocs } from 'firebase/firestore'
const app = initializeApp({
apiKey: process.env.FIREBASE_API_KEY,
projectId: 'my-project'
})
const db = getFirestore(app)
// 写入一条留言
await addDoc(collection(db, 'messages'), {
text: '你好,Firebase',
createdAt: Date.now()
})
// 读取全部留言
const snap = await getDocs(collection(db, 'messages'))
snap.forEach((doc) => console.log(doc.id, doc.data()))避坑提示
- !安全规则必须认真写,默认放开的规则等于把数据库公网裸奔,任何人都能读走数据。
- !实时同步听着省事,但订阅过多数据会显著增加费用与耗电,只订阅界面真正需要的部分。
- !用量按读写次数与流量计费,一个写得很随意的查询可能悄悄产生大量费用,上线后要盯紧用量。
06 关键概念
- 后端即服务(BaaS)
- 把数据库、登录、存储等后端能力做成一开即用的云服务,开发者不必自己搭建服务器。
- 实时数据库
- 数据一变化就自动推送给所有相关设备,适合聊天、协作这类需要即时同步的场景。
- 云函数
- 不用自己管理服务器,写一段代码上传,由事件触发执行。
- 安全规则
- 声明式地规定谁能读写哪些数据,是保护数据不被越权访问的关键设置。