开发
src/
template.html 页面骨架 + 全部样式
app.js 全部前端逻辑(原生 JS,无框架)
build.js 构建:把数据和 app.js 内联进 template
data/
accounts.json 账户模板(无金额)
demo-months.json 演示数据(由 make-demo.js 生成)
make-demo.js 演示数据生成器
server/
server.js 后端(零依赖,Node 18+)
public/index.html 构建产物:服务器版页面
config.example.json 配置模板
docs/ 这个文档站(VitePress)
public/demo/index.html 构建产物:演示版页面
public/img/ 截图bash
npm run build # = node src/build.js三份产物
构建产出三份页面,是刻意分开的:
| 产物 | 内容 | 谁看得到 |
|---|---|---|
docs/public/demo/index.html | 演示数据 | 公开 |
server/public/index.html | 只有账户模板,不含任何金额 | 登录后的所有用户 |
private/index.html | 你自己的真实数据 | 只有你(private/ 已 gitignore) |
服务器版是多人共用的,页面源码里不该带着任何人的余额 —— 构建脚本会拿真实数据当指纹去比对前两份产物,发现泄漏就中止构建。
private/seed-real.json 不存在时会跳过第三份,所以 clone 下来就能直接构建。
文档站
bash
cd docs
npm install
npm run dev # http://localhost:8771/finance-dashboard/push 到 main 后 GitHub Actions 会先跑 node src/build.js 重新生成演示页(演示分期的月份按构建当天推算,所以每次发布都是新的),再构建文档站发布到 Pages。
接口
见部署 · 接口。