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

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

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

摘要

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

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

产品开发步骤

现在的产品开发一般是按照交互稿、视觉稿、开发、测试、发布这样的流程进行。本次我们重点探讨开发领域,涉及到客户端以及服务端。

在没有交互稿的时候,开发也可以做一些前期准备,比如前后端的技术选型、环境搭建,另外后端还有建模的过程。

前后端并行开发

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

整个过程中前端使用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。

其他方面的探索和实践

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

有问题可以在评论区讨论,喜欢的朋友请左下角点赞~以上为所有分享内容,谢谢大家!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2018-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构师小秘圈

系统架构设计的原则和模式

1 分层架构 分层架构是最常见的架构,也被称为n层架构。多年以来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎成为事实标准,因此被大多数架构师、开发者...

39570
来自专栏原创

基于 jenkins 和 docker 的持续集成平台

软件开发过程中,开发成员经常需要把自己工作集成到项目中,通常每个成员每天至少集成一次。如果项目较小,对外部的依赖较小,那么软件集成可能不会是什么问题。但是目前很...

60590
来自专栏携程技术中心

干货 | 携程QA-流量回放系统揭秘

52520
来自专栏北京马哥教育

一个开发眼中的运维

马哥linux运维 | 最专业的linux培训机构 ---- 在云计算时代,开发和运维的结合变得越来越重要。在DIFF论坛第一期,前新浪SAE运维主管,郑志勇...

44070
来自专栏顶级程序员

号称“开发者神器”的GitHub,到底该怎么用?

源 / 开源最前线 GitHub是一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,与开源软件进行协作和报告问题。简而言之,它是一个基于Git构建的软件...

39470
来自专栏程序员宝库

号称“开发者神器”的github,到底该怎么用?

GitHub是一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,与开源软件进行协作和报告问题。简而言之,它是一个基于Git构建的软件开发人员的平台。

10940
来自专栏全华班

springcloud学习手册-什么是微服务?

导读 | 微服务 在介绍springcloud之前,先整体认识一下,什么是微服务? 一、系统演进的历程 系统演进的历程主要分为四个部分,MVC架构...

33540
来自专栏老九学堂

号称“开发者神器”的GitHub,到底该怎么用?

相信这么努力的你 已经置顶了我 老九学堂 你身边的IT导师 提醒:大师兄会员课讲解视频在文末哦。 GitHub是一个拥有数十亿行代码的网站,每天有数百万开发者...

348110
来自专栏技术翻译

为什么使用微型服务?

Netflix,亚马逊等公司都在其产品中采用了微服务的概念。微服务是软件行业中最热门的话题之一,许多组织都希望采用它们。并且,DevOps可以很好地与微服务配合...

17020
来自专栏月色的自留地

苹果手机上下载的文件在哪里?

25690

扫码关注云+社区

领取腾讯云代金券