前后端分离(一)

时间:2021-08-24 21:05:22

参考:https://www.kancloud.cn/kancloud/midway/48192

前言

随着不同终端的兴起,对开发人员要求越来越高,纯浏览器端的响应式已经不能满足需求,我们需要为不同版本的的终端开发定制版的网页,传统的开发方式前后端耦合性太大,不能快速的基于前一版本开发其他版本的页面。为了提高开发效率,前后端分离成为了最好的选择方式,前端后端分别负责不同的方向,前端负责展现和交互,后端负责业务和数据接口,这样可以减少前后端的耦合性,前端后台通过api来交互,这样可以使前端用同一套数据接口开发出不同版本的系统。

一、前后端分离概念

前后端分离是从职责上进行划分,不再是单纯的物理层划分

前端:负责view和controller

后端:负责model层,业务处理和数据处理

eg:SPA(single-page application)即为一个前后端分离的例子,前端和后台交互仅通过AJAX的方式交互。但是spa是通过物理层做的区分(认为只要是客户端就是前端,服务器端就是后台)

  SPA存在问题

    1.SPA用的场景较少,很多场景还是用同步异步混合的方式。

    2.现阶段的SPA开发模式,接口由后台提供,但是有时为了提高效率,后端帮前端处理了展现逻辑,意味着后台处理了view层。

    3.SPA方式不利于SEO(搜索引擎搜索)

二、为什么要有前后端分离

1、现有开发模式适用场景

1)以后台为主的mvc,做同步展现很方便,但是同步异步相结合的就很麻烦

2)Ajax为主的SPA型,适合app类型场景开发,但是对SEO很不友好。对于稍微简单一些的系统,用这种开发模式过于笨重

2、前后端职责不清

目前前后端职责不是很清楚,没有约束,每一层都可能出现不属于本层的东西,不便于维护。

3、开发效率问题

前后端揉杂在一起,对前端后台来说都是一个很大的负担,前端不能关注到view,要了解很多后台的语言特性,在前端代码中穿插后台代码,后端没法摆脱对展现的强关注,从而专心于逻辑层开发。

4、对前端发挥局限

因为与后台强耦合性,前端只能在很小的空间中发挥作用,没法尝试更新的技术。

三、如何做前后端分离

前后端分离(一)

 

在后台与前端view之间新加一层node来做代理。

1、为什么要加node层

1)MVC严重阻碍了前端开发效率,也是后台无法集中于业务,解决方案是让前端来控制controller

2)前端来写controller,如果让前端再学一门后台语言代价太大,node是用js开发

3)前端来代理可以优化请求,合并请求,所有与页面交互的接口自己控制,能够提高前端的开发效率