“亿家共谱”通常是一个家族树/家谱类的社交或记录平台,如果基于 UniApp 和 ThinkPHP 实现,通常采用前后端分离的架构。
一、 整体架构设计
开发模式:前后端完全分离。前端负责界面渲染与用户交互,后端负责提供 API 接口与数据处理。
通信协议:HTTP/HTTPS,数据交互格式通常为 JSON。
二、 前端方案 (UniApp)
核心是利用 UniApp 的跨平台特性,一套代码多端发布。
架构分层:
UI层:主色调可能偏古典或稳重(如深红、褐色)。通常使用 uView-UI 或 ThorUI 组件库来提升开发效率。
网络请求:封装 uni.request,设立请求/响应拦截器,用于处理 Token 鉴权与错误码。
核心功能交互:
家谱树状图:通常使用 echarts-for-wx 或自定义 Canvas 渲染,支持缩放、拖拽。由于 Canvas 性能限制,大数据量时可能会采用“按需加载节点”的方式。
富文本编辑:用于记录生平事迹,使用 editor 组件或 rich-text 渲染。
媒体上传:涉及头像、墓碑、文献图片上传,调用 uni.chooseImage + uni.uploadFile。
三、 后端方案 (ThinkPHP)
ThinkPHP 6/8 在 API 开发中较常见,利用其“资源路由”功能简化 RESTful 设计。
核心接口设计:
用户认证:通常采用 JWT 模式,生成 Token 作为无状态接口的凭证。
家谱关系逻辑:这是难点。后端通常使用“闭包表”或“邻接表”存储关系。计算“X 是 Y 的什么亲戚”时,依赖后端递归算法或树形结构的遍历。
数据库关键点:
用户表:存账号基础信息。
族员表:关键字段包括 id, name, generation, parent_id (父节点), spouse_id (配偶关联)。
家族树表:存储树级结构。
内容关联表:族员与生平、传记内容的关联。
四、 部署与优化
部署方式:
前端:编译成 H5 放在 Nginx,或编译为微信小程序发布。
后端:PHP 环境 + MySQL。
性能瓶颈:
金字塔效应:如果某个家族有上万成员,一次性渲染前端树状图会导致页面卡死。建议前端实现“节点懒加载”(只加载根节点,点击展开再加载子节点),ThinkPHP 后端配合分页或按层级返回 JSON 数据。