其实在内部咱们叫大前端,公司名也不报了,妈妈说要低调,嗯嗯!php
不一样公司对边界的定义都不同。咱们对界线的划分主要分为,是否影响了用户可交互,可操做的体验,效率须要高(ps:穷!)css
在咱们这面对前端的定义是高效率的实现可交互而且高质量的产品。因此咱们总体的支撑体系以下:前端
最终前端这块主要负责前端开发(本职工做)和服务端开发(应用逻辑)。vue
为了保证服务的高可用,而且能提供靠谱的用户体验,在整个应用这块咱们主要作了4件事:python
体验这块主要和设计团队的沟通比较多。设计团队主要负责:视觉规范、交互规范、界面设计。前端团队主要负责:组件抽象、视觉还原、交互还原 。react
组件化这块,咱们调研了多种方案(其实业内成熟方案真的不少)最终结合各类调研以及咱们本身的业务场景咱们获得如下结论:nginx
基于以上的结论,咱们先封装了第一批组件,可是发现总体粒度仍是比较粗,UI一致性很难保证,因此咱们在这一层的基础上抽离了一层UI组件,用来保障UI的一致性。数据库
命名空间是经过文件夹的方式去管理,每一个组件经过index.js来作为出入口。express
每一个组件内部存在于一个状态组,来对内部逻辑进行控制。后端
先后端分离分为2块,因为咱们的业务数据量比较大,单个接口的速度会很是慢,若是采用后端直出的方案去渲染页面的话,页面白屏的时间会很是长。因此咱们采用前端spa,后端自建服务(基于Node.js)。
spa
框架选择这块我主要针对几个方面进行调研,社区、是否数据驱动,是否大厂出品,是否支持ie8(或者经过改造能够比较容易适配),团队总体的学习和上手成本(部分同窗比较弱),圈定出来的范围其实比较明显angular1.x,react,团队同窗一致对大而全的框架比较感兴趣,react在构建大型应用上须要引入太多第三方的包来管理状态,因此最终的决定是angular1.4.7(改动的成本最小)
vue是团队内部比较喜欢的框架(不兼容ie8/(ㄒoㄒ)/~~),因此咱们在移动中尝试使用,相比于react的jsx,咱们更加喜欢vue的简洁
在pc端咱们的产品是很是重的数据型产品,因此前端的单个文件会比较大,经过构建工具合并后文件会很是大。因此咱们引入了code split的方式,经过路由来切分文件,而且在会在主页面渲染完成后,预加载部分脚本(js、css咱们是压缩在一个文件中的),来优化总体的体验。
服务端
监控这块分了3部分:
前端监控
因为咱们的主要客户是酒店,遇到问题后,他们内部在远程调试上很难办到,可是有时候会出现用户有问题,咱们本身经过帐号去复现就很难发现问题,根据上面的状况,咱们实现了一套前端监控的体系,用来捕获用户的操做路径和js层面的异常。
主要实现了2部分功能:
服务监控
预警
经过api来接收使用方的预警信息,目前也用在给客户发送相应的报表
工程方面,在项目的评审,开发,联调,测试,上线,运营各个环节,咱们提供相应的工具支持,以及标准操做流程和文档,从而保证各个环节的产出质量和效率,以及各个环节之间过渡的平滑性。
规范化主要是eslint、csslint这类工具保证代码的风格,结合咱们的团队特性咱们也产出了本身的代码规范(每一个团队应该不同,因此不献丑了)。 总体质量的保证是各个组的leader,会按期review项目的代码(主要是忙,2周一次迭代,只能抽时间作)。
框架都是经过业内比较熟知的框架来封装的(前端angular,后端express),
自动化工具除了你们常规的工具如压缩、合并这类的,基于咱们的项目咱们自研了项目自动构建,配置自动构建等
分享
调研/自研
总结
ps:招人啦?liuqing@liluo.me
前端、大数据、爬虫~~