引子
我有一个很朴素的需求:记账式地管理自己的股票仓位——建仓、加仓、止盈、止损,每笔操作留痕,再实时算出当前持仓和浮动盈亏。
这种小工具,最省事的做法不是去租一台云服务器、装数据库、写一套后端 CRUD,而是……直接用飞书多维表格当数据库。
本系列就讲我是怎么用「一个前端 + 一张飞书表」把这个系统做出来的:零后端、零数据库、数据存在飞书(几乎人人都有),还能免备案上线。
核心思路:飞书多维表格 = 云端数据库
飞书多维表格(Bitable)本质是一张带类型约束的在线表格:日期、单选、多选、数字、文本……这些正好覆盖一个交易记录需要的字段类型。它提供开放的 REST API,前端只要能调通 API,就等于拥有了一个「免运维的云端数据库」。
浏览器因为 CORS 不能直接调飞书 API,所以我们在前端和飞书之间放一个极薄的代理(开发时用 Vite 中间件,生产时用常驻 Node 进程)。这个代理只做「转发 + 换 token」,不存任何业务数据,也不落盘密钥。
整体架构
flowchart TB
A[浏览器 / 使用者]
A -->|https 访问| B[Cloudflare Tunnel 公网 HTTPS 免备案免端口]
B -->|出站回环| C[nginx 仅本机]
C -->|/stock/* 静态资源| D[dist 前端 JS CSS 模板 base]
C -->|/api/feishu/* 代理转发| E[feishu-proxy 飞书 API 代理 仅本机]
E -->|X-Feishu-Credentials 头 内存解码后转发| F[飞书多维表格 open.feishu.cn 云端数据库]
style A fill:#eff6ff,stroke:#2563eb,color:#0f172a
style B fill:#eff6ff,stroke:#2563eb,color:#0f172a
style C fill:#eff6ff,stroke:#2563eb,color:#0f172a
style D fill:#ffffff,stroke:#64748b,color:#0f172a
style E fill:#fffbeb,stroke:#d97706,color:#0f172a
style F fill:#ecfdf5,stroke:#10b981,color:#0f172a
关键安全说明:浏览器绝不直连飞书(被 CORS 拦截);凭据经
X-Feishu-Credentials头由代理内存解码后转发,服务器不落盘。其中 nginx 仅本机监听 8888,feishu-proxy 仅本机监听 8787,公网入口由 Cloudflare Tunnel 建立,本机端口不暴露给公网。
三个页面
- 股票基本信息:持仓股票数、浮动盈亏、各股持仓卡(持仓中 / 已清仓)。注意:这页不读飞书任何独立表,是完全由操作记录前端聚合出来的派生视图。
- 股票操作记录:买入 / 卖出流水,支持筛选、新增 / 编辑 / 删除,含「未卖出手数」列(FIFO 口径)。
- 飞书设置:配置 App 凭据、多维表格、连通测试与写权限探测。
本系列路线
- 开篇与架构(本篇)
- 前端工程:深色玻璃拟态 UI 怎么搭
- 核心:把飞书多维表格当数据库读写(含 CORS 绕过)
- 部署上线:免端口免备案
- 调试实录:三个真实的调试决策
- 复盘、对比与展望
小结
「零后端」不是偷懒,而是把「数据库 + 运维」这件事外包给了飞书。下一篇我们搭前端。
本文首发于 java4u.cn,转载请注明出处。

