掌门教育前端技术分享会第一期已于1.23号落幕,如下为大咖讲师们现场演讲的整理稿,感谢你们的支持:前端
唐兵,前端技术专家,来自千寻位置网业务中台前端团队 负责团队电商相关业务开发,团队BFF层技术负责人 团队平常工做内容,主要对公司门户、电商、营销、分销等业务提供前端支持,业务覆盖 PC、H五、App、小程序、NodeJS 等各类技术场景。web
前端BFF层,咱们大概经历了四个阶段:小程序
目前,千寻位置网前端处于第三向第四阶段过渡后端
对应后端开发同窗来讲,强耦合页面展现逻辑的开发方式来开发API,开发体验不好、有干扰,internalRest能够帮助开发同窗作开发分层,把拼接数据这一层的逻辑从数据的核心模块里面剥离出去,后端的数据模型能够跟具体页面逻辑无关;markdown
这种方式在先后端分离的开始阶段,确实会极大的加速业务开发,但随着业务的不断发展,不少非业务模型的必要字段难以维护;这就是典型的【数据的生产者和数据的消费者之间的工做边界不清晰】数据结构
为何选择graphql,前后端分离
为何推荐使用NestJs:模块化
咱们在实际的项目开发中发现,在开发server层时,强类型语言的开发方式对数据更友好,NestJs相对于Koa来讲,对数据类型支持更好,另外NestJs提供了不少通用的模块功能,好比使用Guard作用户校验,filter作数据异常的处理等等微服务
目前千寻位置网,不少的业务场景下面,前端BFF层程序并非直接对外暴露的,而是经过web-gw(网关)来作分发,经过网关层再来作接口聚合,这样万一辈子产某一个服务发生错误异常,仍然能够保证咱们其它的服务不会受影响spa
Gateway是经过数据schema定义来聚合具体业务数据,而且它能够支持跨项目式schema格式获取,能够极大的方便咱们跨项目开发
Gateway除开项目代码内定义schema结构外,还提供了远程push-pull方式拉取schema结构,不过Apollo官方未提供独立部署的解决方案,须要咱们本身开发一套 Schema 集成系统,千寻位置网本身也实现了一套,这个就比较因人而异了