图片来自游戏英雄无敌:一人军团大天使
接手了一个项目(大约2017年12月份),前后将近半年的时间,完成了一个可以见人的样子。
去除一月份的假期,二月份的新年,实际开发时间,大约3-4个月左右。
经历了需求变更,框架重构,技术选型变更,前端模板切换,实施方案变更等情况。
技术栈
工具和技术的记录(最终未采用的): nodejs、vue、mongo、express、D3。
1月20号左右,决定需要一个管理后台,用户、权限等基础功能,转 PHP的laravel。表图用echart展示。
当时预估三月份要投入使用,而laravel自带用户基础相关模块,另外还有其他功能可以直接采用,因此调整技术栈。
数据层
由csv文件作为数据导入方式。因此考虑在后台添加一个数据导入功能,方便后期维护。考虑到可能需要回退和csv文件的管理,添加了一个附件管理功能。
csv文件可能比较大,采用依赖chrome浏览器的大文件上传模块,chunk后上传为附件文件。
由于csv中并非所有字段都需要前端展示,因此数据模型只保留必须字段。数据导入的时候,数据量稍微有一点规模,使用任务队列(laravel的horizon)处理。
有一个功能模块,需要历史数据对比计算,因此添加了一个附件版本管理功能,读取数据时依赖于最近的两次导入记录。
前端
展示采用bootstrap。考虑过套用admin-lte,由于该模板使用的是less,改用core-UI。
部署
上线考虑到成本和实施周期,以及目标客户为小众专业人员,可能会采用本地单机搭建方式。
基于phpdesktop,出了个单机版。mysql改为sqlite,届时更新数据只需要更新数据文件即可。而数据导入也不需要任务队列,直接使用laravel框架自带的db:seed。移除后台功能和登陆相关的路由和权限控制。
测试
原本准备写一些基于页面的单元测试,但由于需求功能频繁变动,单兵开发模式,只写了两个页面的测试。
That's all
以上就是全部过程和经历。
领取专属 10元无门槛券
私享最新 技术干货