1. 公司简介 我们是一家互联网装修公司,成立于2012年,目前主要有建材团购,装修设计,整体装修,透明施工四块业务,发展良好,到目前有60人,分为装修顾问,设计师,项目经理,财务,商家服务,技术等部门.整体上还是一家刚刚起步的公司,目前在用的整个ERP系统正在进行重构开发,主要的开发语言是PHP; 目前我们的开发同学刚刚才3个人,都是85前的老家伙,全部是全栈开发,服务端移动端都写. 2. PHP 端 先声明一下,我们服务端直接从PHP7起步了…丢掉历史包袱了…. 老的订单系统,基于一个叫Cubox的框架,这个框架是原来的开发工程师自行研发的.这次重构时,我选 择了Laravel来做为基础框架.旧有的框架,倒不是说有哪些地方架构设计不好,功能不够用,但是有三个最显著的地方明显制约了后续的发展:第一个,是原作者的文档明显比Laravel的文档差远了,很多地方无从查阅,完全要完整地看代码再去揣摩用法是不合适的;第二个,是Laravel的粉丝显然更多了,新招进来的人很可能已经能熟练地基于Laravel来开发了;第三个,则是这次我们直接可以以php7做为运行环境,原有的框架也没有很好的利用php5.4以上的新版本的各种特性. 既然选择了Laravel,也就离不开composer了;composer是PHP世界里的包管理工具.我强烈要求用composer,是想有意识地训练大家优先从packgist.com上寻找现成的代码包,而不是所有的底层包都自己吭哧吭哧写.在我看来,这是php开发者的臭毛病之一,什么都觉得自己实现一个也挺好的. 用了composer,我们内部的一些公共代码,也就琢磨着放到composer仓库里去,当然不能放到公开的packgist上去,于是我们使用satis 搭建了一套私有的仓库. 3. 前端 在前端,我很激进地选用了react.选用react有两个方面的考虑,一是装修业务相当复杂,内部相当多的流程,表单,很多输入输出是可以抽象复用的;使用React组件,大大地提高了js代码的可复用性,有效避免了js代码满天飞的情况.React 的数据是单向流动的,因此我写了个极其简单的EventEmitter来做事件的订阅管理;在路由方面,也没有选用主流的react-route之类的,而是自行实现了一个简单的. 在进行Js代码的package时,用的是browserify;而构建则用到了gulp;css方面,使用了less. 另外,在后端的布局上,我是直接从wrapbootstrap.com上买了一套模板来投放使用,也就不需要设计了.对的,我们没有全职的设计师,后端页面全部是bootstrap走起,前台网站则是有个朋友的设计公司帮做. 4. 其他 搜索上,我们是采用了elasticsearch,直接同步mysql的binlog里的消息,目前进索引的有一个内部用的员工信息,还有业务相关的商家,商品,订单,客户信息,房屋信息,小区信息等,目前性能上毫无压力,毕竟我们是low爆了的装修工,客单价是15万了,哪天要是有性能压力了 那市值也就很可观了不是. 我们的全部业务运行在阿里云的ECS上,业务数据存储在阿里云的RDS上,cdn用了七牛. 版本管理采用git,并使用gogs搭建了一套git系统. 使用了apidocjs来扫描PHP代码的注释,生成HTTP API的文档.(生成的文档还是蛮清晰的…要鼓励肯写文档的年轻小伙儿比如像我这样的是不是?) 5. 广告插播时间 最后的最后,我们还在招人,PHP方向.没啥别的吸引力,嗯,要说也有点,就是钱不算多,