hyyou2010
2019-09-09 15:10:03 +08:00
1, 出于学习目的,从 koa2 和 egg 中选了前者,但直接用 koa2 需要自己去找中间件,找库,找轮子,比较麻烦且难以最优。比如文件上传,日志,session 等等,都找了好几个库来试,也不好把握以后扩展是否可以。所以未来做正式项目还得找比较完善的框架,比如 nestjs 或 eggjs 之类。
2, 第三方的 ui 库,如 materail-ui 或 antd 多少比较重,特别是前者,对程序主体影响比较大,所以最好尽量少用,初中期不使用,在后期可以考虑。这样非常灵活,以后可以根据选择不同的 ui 库。
3, 小项目不要使用大第三方库。比如界面的语言切换,考察过相关的 i18n 库,几乎看不懂,太完善,太庞大,太麻烦了,最后仍然使用 redux.store 简单处理。这点也说明使用完善的框架比使用 koa2 要强太多了。
4, 在项目基本完成之后才把前端代码转换为 typescript 的,所以不全面,且不太地道。从代码查错说效果还是很不错的,以后考虑常用。可能后端才是应该尽量用 typescript,毕竟后端出错的危害要远远大过前端出错。以后尽量一开始就使用,后面再改比较繁琐。
5,有的问题不身临其境就感受不到。比如,更换头像后,头像链接将指向新头像的那个新地址,这个小设计给后续编程造成了极大的麻烦。比如头像链接就无法直接存放在 post 或 comment 信息里面,因为用户更换头像后之前的头像链接失效。临时的处置是,数据库先查询 post 及 comment,然后 aggregate 查询 user 数据表以获取最新头像链接。vote 及 lineup 也一样麻烦。最后采取的方案是,头像链接地址始终不变,新头像替换旧头像时沿用旧头像的文件名。这可能导致客户端头像不刷新,需要加随机数来帮忙刷新,但最后考虑到这不是高频操作,还是 reload 客户端更为干净。
6,有的功能细节意外的多,比如匿名功能,需要考虑:post 与 comment 的匿名,我的匿名与他人匿名的差异,oauth 登录用户的匿名,投票与接龙的匿名,投票人及接龙人的匿名,所有情况下鼠标在头像上悬停时的不同提示,此外匿名时的隐匿信息不应该传递到客户端,必须在服务端就过滤好。如此这样,这工作量是出奇的多。这里说明编码之前的产品需求与设计是很重要的,可以发现工作量意外大的一环。