背景
一个影视作品管理系统,PHP based,要求有影片、国家、作者、语言等各种信息的CRUD。
之前犯下的问题及改进措施
主要问题
没有采用ORM
这是最大的失误。原因是由甲方现场指导建表,表名不规范,如r_video_language。同时没有Model,全部数据都是裸写。
ORM和完善的Model对开发效率非常重要,同时也避免了安全性问题。https://www.v2ex.com/t/288772
改进的措施是渐进式的:
- 首先所有的裸SQL找了个QueryBuidler替换掉
- 之后新的模块采用了RedBeanPHP
为什么采用RedBeanPHP:
- 开发成本,不能指望让配置环境就配了两天的用上eloquent/doctrine等builder。不过另一方面来说,正是因为这个原因这个项目才会最开始用PHP开发吧,门槛是比较低
- 之前没有使用框架
- 灵活性高,但问题是link的name是钦定的,不能修改,加之现在的link表名不规范(有下划线),导致原生store都会出现问题,必须要hack掉表名检查。为什么不改表名?因为一堆旧代码的兼容性保持不了……
前端没管理好
隐式依赖太多,重用性低。
最好的方案当然是用上browsify那一套工具链……但是同理不要对新人装nodejs抱有太大希望……所以算下来不能服务端打包只能客户端处理依赖,所以require.js吧……
把用到的vue组件都写成了foo.js和foo.template, 然后foo.js中依赖:
用的时候直接require就行了
对数据量没有明确统计
做得差不多了告诉我有10^6级别的数据。。。那之前查询还’like %$q%’……
这样下来很多地方都要改,本来下拉框的地方要做成自动补全+lazy加载,性能问题先缩水成`like $q%’建索引顶着,顶不住了再上solr/elastic search之流
次要问题
没文档
不说了。。。