项目开发总结
接手了一个项目(大约xxxx年xx月份),前后将近半年的时间,完成了一个可以见人的样子。
去除一月份的假期,二月份的新年,实际开发时间,大约x-x个月左右。
经历了需求变更,框架重构,技术选型变更,前端模板切换,实施方案变更等情况。
技术栈
工具和技术的记录(最终未采用的):nodejs、vue、mongo、express、Dx。
x月xx号左右,决定需要一个管理后台,用户、权限等基础功能,转PHP的laravel。表图用echart展示。
当时预估三月份要投入使用,而laravel自带用户基础相关模块,另外还有其他功能可以直接采用,因此调整技术栈。
数据层
由csv文件作为数据导入方式。因此考虑在后台添加一个数据导入功能,方便后期维护。考虑到可能需要回退和csv文件的管理,添加了一个附件管理功能。
csv文件可能比较大,采用依赖chrome浏览器的大文件上传模块,chunk后上传为附件文件。
由于csv中并非所有字段都需要前端展示,因此数据模型只保留必须字段。数据导入的时候,数据量稍微有一点规模,使用任务队列(laravel的horizon)处理。
有一个功能模块,需要历史数据对比计算,因此添加了一个附件版本管理功能,读取数据时依赖于最近的两次导入记录。
前端
展示采用bootstrap。考虑过套用admin-lte,由于该模板使用的是less,改用core-UI。
部署
上线考虑到成本和实施周期,以及目标客户为小众专业人员,可能会采用本地单机搭建方式。
基于phpdesktop,出了个单机版。mysql改为sqlite,届时更新数据只需要更新数据文件即可。而数据导入也不需要任务队列,直接使用laravel框架自带的db:seed。移除后台功能和登陆相关的路由和权限控制。
测试
原本准备写一些基于页面的单元测试,但由于需求功能频繁变动,单兵开发模式,只写了两个页面的测试。
以上就是全部过程和经历,谢谢大家。
项目开发总结
基于之前的项目经历,我想从以下几个角度谈一下个人心得。有些人可能觉得这些都很简单,但是我发现很多前端开发人员在编码中自动选择了忽略。
> 一、代码书写规范
1.使用类似于强类型语言的语法格式,定义数据结构和常量,在编程中使用这些数据结构定义变量,这样可以在编译时就能有使用错误提醒。
2.涉及到数据的判断比较,最好通过静态常量引用的方式实现,这样有利于后期的维护和扩展,同时提高代码的可阅读性,简化修改逻辑。避免直接使用字符串或数字直接比较。
3.在实现业务逻辑时,首先看能不能抽离出业务配置项+组件,这样可以降低复杂度,实现过程可能更舒适。
4.前端人员很容易变量函数命名不规范,变量和函数名字定义好了,会在代码阅读和逻辑上面避免不必要的麻烦,切记通常变量是名字,函数是动词开头。
5.函数参数定义要清楚明了,一定要为参数定义相关的数据结构,参数的传入顺序应该是由重到轻,有默认值的参数要放在后面,不要定义无关参数。
> 二、代码逻辑解耦
1.一定要避免代码写的混乱,两个文件相互引用,很容易造成耦合,所以一定要将公用方法或公共组件归置好,也要分出与业务相关的业务公用方法和业务公共组件。
2.要做到每个函数或组件各司其职,不要做过多额外的工作。做多了就会导致逻辑混乱,所以如果定义的足够好,实现起来就越容易。
> 三、两条设计主线
1.两条线为技术框架线和业务框架线。
2.业务框架线:将业务拆分为基础业务、常用业务、定制业务。
3.技术框架线:将组件、配置、函数分为基础实现、业务弱相关实现、业务强相关实现,大部分前端开发者在组件开发时很容易。
4.业务框架线和技术框架线一般是交织在一起的,但是在设计时一定要有这两种概念,这样有助于提高系统实现的清晰度。。
> 四、组件的封装和继承
1.在做封装和继承之前,首先要根据需要分离通用组件和业务组件。虽然已经有了antd这样的通用组件,但是难免要在其基础上做进一步的封装使用,提高可用性。
2.前端组件一般最多只需要三重:通用组件->业务弱相关组件->业务强相关组件。这样的递进封装可以让页面的可配置化更强一些,如果页面实现了可配置化,也会给开发省时省力。
> 五、配置化思想和钩子函数
1.可以运用配置化思想抽象页面的部分功能,并记录用户的行为习惯,实现定制化和个性化。比如:(x)可以定义操作行为列表,标识页面上的各种操作;(x)可以通过配置化列信息生成页面表格,以及格式化表格展示字段。(x)可以考虑通过配置化信息实现页面的布局,让开发更加丰富有意义。
2.配置化思想离不开钩子函数,它的定义有助于某种操作时数据的定制处理。比如:在定义了页面操作行为后,钩子函数可以(x)在某一特殊操作时生成签名。(x)在提交数据时数据校验。
项目开发总结
> 一、项目概况
1.项目情况简述
概述项目建设地点、项目业主、项目性质、特点,以及项目开工和竣工时间。
2.项目决策要点
项目建设的理由、依据和目的。
3.项目主要建设内容
项目建设的主要内容,初步设计批复,批准规模和实际建成规模。
4.项目实施进度
项目周期各个阶段的起止时间,时间进度表,建设工期。
5.项目总投资
项目建议书批复投资匡算,初步设计批复概算及项目调整概算,竣工决算和实际完成投资情况,投资变化情况和原因。
6.项目资金来源及到位情况
资金来源计划和实际情况,变化及原因。
7.项目运行及效益现状
项目运行现状,能力实现状况,项目财务经济效益情况等。
> 二、项目实施过程概述
1.项目前期决策
项目立项的依据,项目决策过程和目标,项目评估和可行性研究报告批复的主要意见。
2.项目实施准备
项目勘察、设计、开工准备、招标采购、征地拆迁和资金筹措等情况。
3.项目建设实施
项目合同执行与管理情况,工程建设与进度情况,项目设计变更情况,项目投资控制情况,工程质量控制情况,工程监理和竣工验收情况。
4.项目运营情况
项目实施管理和运营管理,项目设计能力实现情况,项目技术改造情况,项目运营成本和财务状况以及产品方案与市场情况。
> 三、项目效果和效益
1.项目技术水平
项目技术水平,新技术应用等。
2.项目财务及经济效益
项目资产及债务状况,项目财务效益情况,项目财务效益指标分析和项目经济效益变化的主要原因。
3.项目经营管理
项目管理机构设置情况,项目领导班子情况,项目管理体制及规章制度情况,项目经营管理策略情况,项目技术人员培训情况和项目管理中的经验教训。
> 四、项目环境和社会效益
1.项目环境效益
项目环保达标情况,项目环保设施及制度的建设和执行情况,环境影响和生态保护。
2.项目的社会效益
项目主要利益群体,项目的建设实施对当地(宏观经济、区域经济、行业经济)发展的影响,对当地就业和人民生活水平提高的影响,对当地民航专项基金财政收入的影响。
3.项目的节能减排
> 五、项目目标和可持续性
1.项目目标
项目的工程目标,技术目标,效益目标(财务经济),影响目标(社会环境和宏观目标)。
2.项目可持续性
根据项目现状,结合国家的政策、资源条件和市场环境对项目的可持续性进行分析,预测项目的市场前景,评价整个项目的可持续发展能力。
3.项目存在的主要问题
> 六、项目主要经验教训、结论和相关建议
从项目实施过程、效果和效益、环境影响评价、目标实现以及可持续性发展等方面进行综合分析,总结项目的主要经验与教训,对项目提出相关的对策和建议。