返回

前端数据模型Model,适用于多人团队协作的开发模式

前端

前端数据模型Model,在多人团队中快乐地协作吧! #

本文讲述的数据模型并不是一个库,也不是需要npm的包,仅仅只是一种在多人团队协作开发的时候拟定的规则。至少目前为止,我们的开发团队再也没用过mock(虽然一开始也没用),也不用担心后台数据的字段或结构发生变动,真正实现前后台并行开发的愉快模式。

一、引入概念
在正式介绍之前,先补充两个概念。

1.1 后台VO对象
针对业务需求,后台会设计出若干VO(Value Object)对象,用于表示不同场景下的数据集合。

1.2 Model
前端数据模型,是一个空对象,没有任何属性和方法。前端使用这个空对象来定义结构,并对结构中的数据做一些简单的验证。

二、前端数据模型的构建
2.1 基本写法

export interface ActivityModel {
  id: number;
  title: string;
  describe: string;
}

const model: ActivityModel = {
  id: 0,
  title: '',
  describe: ''
}

前端在使用的时候可以直接拷贝Model的内容进行修改,这样就能把数据类型维护在一个地方,不管后台如何变更,前端只需要在Model里改动即可,而不用在每一个页面里都做修改。

2.2 巧用类型定义
如果用枚举值、类型别名、甚至用范型定义一个Model,那我们的Model就能实现类型推断了。

export type ActivityModel = {
  id: number;
  title: string;
  describe: string;
}
export const model: ActivityModel = {
  id: 0,
  title: '',
  describe: ''
}

2.3 数据类型更严格一点

export interface ActivityModel {
  id: number;
  title: string;
  describe: string;
}

const model: ActivityModel | null = null

2.4 拓展内容
我们能在Model里对内容进行一些简单处理,比如字符串的长度限制,或者枚举值的限制,我们在model里可以把这些内容都封装起来。

三、前端数据模型在团队协作中的价值
3.1 后端可提前启动开发
目前,后端的数据结构都是通过文档分享的,由于缺乏文档的强制性,很多数据结构在前端没实现的情况下就被拍板确定了。有了Model,前端和后端的数据结构是强依赖的,前端无法实现,后端的数据结构必须做出相应的调整。

3.2 前后端并行开发
当接口准备好,或者数据结构确定之后,前端完全可以按照Model进行编码,无需等到真实接口对接好。有了类型定义以后,我们可以用类型推断、强校验来帮助我们编码,对于后端新接口的接入,可能只用对接部分方法即可。

3.3 降低沟通成本
如果前端开发说后端接口有问题,那么他只需要给后端一个Model,后端一看,就知道是哪个接口有问题。只要更新Model,前端就不用担心需要调整,除非后端调整了数据结构。

四、数据类型注解和TS
前端数据模型和TS类型注解有着天然的兼容性。有了TS,我们可以很容易地对Model进行类型推断和强校验。

4.1 TS类型注解的基本用法
例子一

let name: string = 'Jack'

例子二

let age = 18

例子三

let flag: boolean = true

TS会根据变量的值来推断变量的类型。
4.2 对Model的使用
例子一

export interface ActivityModel {
  id: number;
  title: string;
  describe: string;
}

const activity: ActivityModel = {
  id: 1,
  title: '示例活动',
  describe: '这是一个示例活动'
}

// 直接使用了ActivityModel
let title = activity.title

例子二

export interface ActivityModel {
  id: number;
  title: string;
  describe: string;
}

const model: ActivityModel | null = null

if (model !== null) {
  let title = model.title
}

类型别名可与类型注解联合使用。
例子三

type ActivityModel = {
  id: number;
  title: string;
  describe: string;
}

const activity: ActivityModel = {
  id: 1,
  title: '示例活动',
  describe: '这是一个示例活动'
}

let title = activity.title

五、总结
有了前端数据模型,前端团队就可以在项目初期就确定好数据结构,并以此为基础进行开发。有了TS,我们可以很容易地对Model进行类型推断和强校验,进一步提高开发效率。

参考资料: