持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
“前后端分离”是一种优秀的软件开发策略。故名思路,“前后端分离”旨在让前端的开发者和后端的开发者可以相互独立,并行开发各自的代码,避免了前后端开发人员相互依赖的问题。
具体来讲,在不使用“前后端分离”的项目中,后端代码需要为前端代码提供数据,例如后端要提前编写好一个 Servlet,之后前端人员才能去调用这个 Servlet 中的 doGet() 或 doPost() 方法;反之,前端代码也需要为后端代码提供请求入口,例如前端要提前编写好一个 button 按钮,之后才能通过这个按钮将请求传递给后端代码。可见,在这种前后端相互依赖的项目中,前端和后端代码的开发时机是一个纠结的事情,这也往往造成了项目进度缓慢、效率低下等问题。
“前后端分离”就可以解决上述问题,在采用“前后端分离”的项目中,前端人员和后端人员只需要遵循一份“约定”,然后就可以各自独立开发,不用再关心对方的代码。这里提到的“约定”是指一份普通的 API 文档,规定了前后端代码中的接口名、类名、方法名等规范信息。例如,下表就是“前后端分离”项目 API 文档的部分内容。
| 请求地址 | 请求方式 | 请求参数 | 返回参数 | 功能 |
|---|---|---|---|---|
| /api/goods | POST | {id,name,price,type} | {flag:xxx, counts,xxx, data,xxx} | 添加商品 |
| /api/goods | GET | 无 | {flag:xxx, counts,xxx, data,xxx} | 查询全部商品 |
其中,为了统一前端后人员的开发习惯,文档对所有方法的返回参数做了一致性要求,即所有方法的返回值必须是 JSON 格式的。并且不难发现,“添加商品”和“查询全部商品”的请求地址完全相同,二者是通过请求方式进行区分的。
说明:除了 word、excel 等类型的文档以外,API 文档也可以是用 Swagger 等工具生成的在线协作文档。
有了上表形式的 API 文档之后,前端人员和后端人员就只需要根据文档要求,独立编写代码。但仍然存在一个问题,前后端人员如何测试自己编写的代码是否正确呢?我们知道,后端为前端提供了数据,前端为后端提供了请求入口。现在,当前端后人员独立开发时,前端代码从哪里获取后端的提供数据呢?同样,测试后端代码的请求数据从何而来?有两种可选的解决方案,如下。
- 前端代码编写完毕后,可以通过 easyMock 等在线测试工具,生成模拟的后台数据。
- 后端代码编写完毕后,可以通过 Postman 等测试工具,模拟前台请求,向后台发送数据。
在实际项目中,除了要把“功能”实现以外,还要考虑项目的性能问题。前面介绍的限流、缓存等内容就是提高系统性能的一些手段。除此以外,还可以使用本书介绍的数据库连接池技术减少对数据库的访问次数,使用事务机制提高系统的健壮性,使用分页技术提高查询性能等。并且除了在编码层面提高系统性能,我们还可以搭建集群服务器,或者对数据库的 SQL 语句进行优化、对 JVM 参数进行调优……性能优化一直是软件开发的一大重点,但也是一大难点,这就要求开发者们要在平日的学习和工作中不断精进,逐步积累一套完整的性能优化策略。