Skip to content

开发 ​

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。

接口 ​

见部署 · 接口。

基于 MIT 许可发布