easyui框架前后端交互_到底什么是前后端分离?

前后端分离是个架构设计问题。

所谓架构设计,实际上是如何合理的对现实的人力架构进行系统映射,以便最大限度的压榨整个公司(组织)的运行效率(万恶的资本家)。

上面这句话是我对康威定律的理解。

康威定律:Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)

中文直译大概的意思就是:设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。注意康威说这句话的年份,灯塔国确实不是靠吹的。

我们先看看一个 Web 系统,在前后端不分离时架构设计是什么样的

用户在浏览器上发送请求,服务器端接收到请求,根据 Header 中的 token 进行用户鉴权,从数据库取出数据,处理后将结果数据填入 HTML 模板,返回给浏览器,浏览器将 HTML 展现给用户。

有什么问题?

问题点在图右边那位全寨(栈)开发人员!

他她既要会数据库开发(SQL)、又要会服务器端开发(Java、C#),又要会前端开发(HTML、CSS、JS)。现实告诉我们,百样通往往不如一样精,什么都会的人往往哪一样都干不好。是否可以按照前端后端进行人员职责区分呢?如果进行职责区分,分成前端开发和后端开发,但由于程序全在一个服务里,不同职责开发人员彼此间的交流、代码管理就会成为一个大问题,也就是交流成本膨胀的问题了。

那么,有什么办法可以让前端和后端开发只做自己擅长的事情,并尽量减少交流成本呢?

这就是前后端分离了。记住,分离的是人员职责,人员职责分离,所以架构也发生变化了。

现在 Web 服务器不再处理任何业务,它接收到请求后,经过转换,发送给各个相关后端服务器,将各个后端服务器返回的,处理过的业务数据填入 HTML 模板,最后发送给浏览器。Web 服务器和后端服务器间,可以选用任何你觉得合适的通信手段,可以是 REST,可以是 RPC,选用什么样的通信手段,这是另一个议题了。

这样,前端人员和后端人员约定好接口后,前端人员彻底不用再关心业务处理是怎么回事,他只需要把界面做好就可以了,后端人员也不用再关系前端界面是什么样的,他只需要做好业务逻辑处理即可。服务的切离,代码管理,服务部署也都独立出来分别管理,系统的灵活性也获得了极大的提升。

注意,这不是个微服务架构,那是另外一个议题了

总结,任何系统架构设计,实际上是对组织结构在系统上进行映射,前后端分离,就是在对前端开发人员和后端开发人员的工作进行解耦,尽量减少他她们之间的交流成本,帮助他她们更能专注于自己擅长的工作。

最后是几个常见误解的说明:

1、前后端分离是说浏览器和后端服务分离吗?

不是,前后端分离里的前端不是浏览器,指的是生成 HTML 的那个服务,它可以是一个仅仅生成 HTML 的 Web 服务器,也可以是在浏览器中通过 JS 动态生成 HTML 的 单页应用。实践中,有实力的团队往往在实现前后端分离里时,前端选用 node 服务器,后端选用 C#、Java 等(排名不分先后)

2、前后端分离是种技术吗?

不是,前后端分离是种架构模式,或者说是最佳实践。所谓模式就是大家这么用了觉得不错,你可以直接抄来用的固定套路。

3、前后端分离是最佳实践吗?

看你团队和项目的情况,如果是短平快的小项目,真的没必要。如果是面向简历开发,那绝对在任何时候都应该使用前后端分离这种架构。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EasyUI 是一个基于 jQuery 的 UI 插件库,用于简化 Web 应用程序的前端开发。前后端交互是实现 Web 应用程序的关键之一。以下是 EasyUI 实现前后端交互的步骤: 1. 前端页面中使用 EasyUI 组件,例如 datagrid、form 等。 2. 在前端 JavaScript 中使用 Ajax 技术,向后端发送数据请求。 3. 后端接收请求,并根据请求的参数进行相应的处理。 4. 后端处理完成后,将处理结果返回给前端。可以使用 JSON 格式返回数据。 5. 前端 JavaScript 接收到后端返回的数据,根据数据进行相应的操作。 下面是一个示例代码,实现了在 EasyUI datagrid 中显示后端返回的数据。 前端代码: ```html <div class="easyui-datagrid" id="datagrid"></div> <script> $(function(){ $('#datagrid').datagrid({ url: 'backend.php?action=get_data', columns:[[ {field:'id',title:'ID'}, {field:'name',title:'Name'}, {field:'age',title:'Age'}, ]], }); }); </script> ``` 后端代码(backend.php): ```php <?php $action = $_GET['action']; if ($action == 'get_data') { $data = array( array('id'=>1, 'name'=>'Tom', 'age'=>20), array('id'=>2, 'name'=>'Jerry', 'age'=>18), array('id'=>3, 'name'=>'Marry', 'age'=>22), ); echo json_encode($data); } ?> ``` 在上面的代码中,前端页面使用了 EasyUI datagrid 组件,并指定了一个 url 属性,该属性指向后端 PHP 文件 backend.php,并传递了一个参数 action=get_data。后端 PHP 文件根据参数 action 的值,返回相应的数据。前端 JavaScript 接收到后端返回的数据后,会自动将数据渲染到 datagrid 中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值