网易NEI在面临先后端分离问题,所提供的完整解决方案


内容来源:2018 年 1 月5 日,网易NEI产品负责人包勇明在“2018移动技术创新大会”进行《网易高效多端应用协做开发实践》演讲分享。IT 大咖说(微信id:itdakashuo)做为独家视频合做方,经主办方和讲者审阅受权发布。php

阅读字数:1958 | 5分钟阅读前端

嘉宾演讲视频及PPT回顾:suo.im/5bH62T

摘要

在实际项目开发过程当中,先后端分离开发是比较受关注的问题,本次分享会讲述开发所面临的问题背景以及 NEI 如何提供的完整解决方案。json

产品开发步骤

如今的产品开发通常是按照交互稿、视觉稿、开发、测试、发布这样的流程进行。本次咱们重点探讨开发领域,涉及到客户端以及服务端。后端

在没有交互稿的时候,开发也能够作一些前期准备,好比先后端的技术选型、环境搭建,另外后端还有建模的过程。服务器

先后端并行开发

开发过程当中的理想状态应该是先后端并行开发,这在业界也是比较热门的概念,可是对一些没有技术积累的传统企业来讲实现起来仍是有必定难度。微信

整个过程当中前端使用Mock Server后端进行接口测试,中间约定API契约,而后进行先后端并行开发,最后进行联调。理论上联调成本会很小,由于Mock Server是依照API契约进行开发的,然后端也一样是按照约定定义接口。架构

接口管理平台

交互稿设计完成后就轮到接口的设计,传统的接口文档有IM、txt、word、wiki、Swagger这几类。它们广泛存在表述不清晰或者格式混乱的问题,使用接口管理平台能有效解决这类问题。前后端分离

完全实现先后端分离的过程当中有着一个阻碍,即如何处理模板。模板是在后端环境中运行的,有ftl、php、ejs等各类类型。前端开发中若是还要涉及到后端环境,那么这就不是完全的先后端分离。为此咱们实现了可以解析模板的Mock Server,它能够获取模板中的真实数据,好比登陆的用户数据,而只使用Mock模拟数据有些业务逻辑是没法实现的。工具

先后端分离中须要有模板化,因此除了接口规范外还要有页面规范。另外手动实现Mock Server是有必定成本的,咱们为此提供了配套的构建工具,用来解析模板、Mock接口。测试

实践方案

NEI协做体系

从交互阶段开始就能够根据交互稿设计接口,接着经过构建工具生成初始化代码,先后端开发完成后进行自测。自测的过程当中,因为前端的Mock数据都是生成在本地或者是平台提供的接口,因此能够经过修改数据进行更充分的自测。后端则主要是对接口是否符合定义的测试,咱们也提供了这方面的工具。最终这样就能有效下降联调的成本。

接口

接口的设计人员首先要对系统功能很是了解,其次对先后端开发都有所涉猎,了解前端的功能实现以及后端的接口实现。所以我我的是倾向于前端架构师这一角色,可是不少公司实际上是没有这一职位定义的。

接口的设计必须遵循业界规范,好比Restful接口规范。而后要描述清晰,不能遗漏重要信息。

数据模型

实际开发过程,后端在建立接口的时候会事先创建数据模型,并进行一些增删改查。前端也有一套对应的数据模型抽象,这样作的优势在于可以实现复用、规范以及自动化。

NEI支持的数据模型

NEI构建工具原理

经过接口定义NEI平台上的数据规范,再使用NEI Toolkit导出规范,最后使用Express启动服务。

NEI中的接口规范定义请求与数据的关系;页面规范定义页面与模板、接口的关系;模板规范定义模板与数据的关系。

NEI的模拟容器

图中是NEI的模拟容器,接口、页面都被直观的展示出来。它的主要功能有页面Mock、接口Mock、监听静态文件以及其余前端频繁用到的功能。

前端自测

上图是构建工具生成的Mock数据文件,其中data.json就是Mock值,data.js主要是作一些拦截。前端的自测能够修改data.json数据以及data.js过滤器。

后端自测

NEI集成了接口测试功能,好比验证字段类型是否匹配、字段值是否符合定义、字段是否缺失或多余以及自动生成测试报告和批量运行用例等功能。

先后端联调

先后端联调理论上只是服务器环境的地址不同,本地开发使用Localhost服务器,要使用其余环境只需将Localhost替换成相应地址。通常定义时不用设置Localhost这块的地址,只关注后面的地址。

地址变动只须要修改配置文件Server.Config.js。

其余方面的探索和实践

咱们还作了其余方面的探索和实践,包括迁移老项目、团队协做、支持业界标准、对测试工程师的支持、支持典型产品。

相关文章
相关标签/搜索