技术栈不多,只有express、mongodb和redis 还有完全没必要用的docker,似乎只有一台服务器 进程管理居然还是用的forever 缺少错误收集机制,更不用说故障报警 有日志模块,但是却多个服务写在同一个文件,毫无疑问如果开多进程日志有很大的风险被覆盖 前后端没有完全分离,有少量代码使用了ejs模板,完全可以砍掉做到前后端完全分离(前后端代码放一起难以分清哪些是前端哪些是后端,混乱) 因为有两个web服务入口点,其中一个是管理后台,完全不需要nginx却也套了一层,可以砍掉 产品文档、数据库表文档、运维文档之类还算有,不过有点多余,因为那些都是基础的东西,关键部分的文档却没有 没有接触到线上环境,从代码上看没有任何async/await到处是var和.then().then(),明显node版本应该在4.x左右 又遇见了global,完全失去了IDE对代码的追踪功能 往别人对象上添加方法和属性的行为,在node后端绝对是大忌 发现有个似乎自己写的Promise模块,在删掉前搜索了一下整个项目,结果还真使用到了,多次使用了.when()方法,寡人也是第一次见啊,必需砍掉这个不标准的东西 post方法本身支持json,而用的时候却到处都是json数据里的一个json字符串,奇葩 没有任何单元测试 没有开发环境的数据库初始数据,导致部分功能完全没法在本地跑起来,所以一个项目应该要做到能在完全新环境下跑起来
今天的感悟: 1.项目还是要选择越简单的技术栈越好,这样新人可以在最短的时间接手,不要为了用某技术而用某技术,像这个项目中的docker和nginx完全是多余的 2.项目初始提交是18年却还在使用17年就已经淘汰的异步处理方法 3.一个项目最容易跑起来的一定要是开发环境,任何生产环境的配置都不能出现在版本库中
下一步要干掉全局变量,升级node版本以支持async/await,彻底拆分前后端