对于前后端分离的一些思考

前端?后端?

按照通俗的理解,前端范围很广,运行于客户端上的程序,页面都可以说是前端,比如小程序,app,网页等。与之相对的,后端就是运行于服务器上的程序,用户不可见,不可达,透明,无论是java,php还是go,都可以编写运行于服务器的程序。

 

分离

对用户来说,前后端分离似乎是显而易见的。因为从用户角度出发,我看的到的,进行交互的玩意不就是前端吗,我不去关注的也接触不到的不就是后端吗?但是从开发者角度出发,却不是这么简单。

大一刚开始学习的时候就参加了比赛做项目,那时候啥都不会,只学习了c和基本的数据结构,有幸找到了一个负责的老师指导,提供了很多帮助。由于我们队伍的水平问题,老师让我们学习asp技术搭配bootstrap。在asp技术栈中是如何写页面的呢,是在html中嵌入c#的代码。从系统角度看,这样导致系统耦合性高,业务和显示难以分离。从开发者角度看,又得会asp,又得会前端三大件。现在技术越来越丰富,想全都精通是很难的。

所以得前后端分离。我认为简单的前后端分离可以这么理解:前端开发者负责它的页面,根据原型和设计做出页面,编写逻辑,需要什么数据就请求接口。后端开发者与前端协商接口规范,完成业务,返回给前端数据,不用写任何html,css,js,不用管数据如何变成视图。大致步骤如下:

  1. 客户端获取到页面数据后,js执行写好的ajax请求。
  2. ajax请求接口,获取后端业务返回的数据。
  3. 获取数据后,采用异步/同步的方式渲染出页面。

这样,简单的前后端分离就实现了,前端后端各干各的活。

 

进阶

大二后开始用php做后端,基本实现了上述的简单前后端分离,大三后开始学springboot,项目迁移了一些。后来看了篇博客,里面提到了阿里使用的一种方案,更新了我对前后端分离的一些理解。

我前端常用vue的原始方式开发,主要是贪图它的mvvm方便,搭配一些ui框架可以快速的出货。后端学了spring后用的spring全家桶中的springboot,毕竟开箱即用不要写一堆配置。但是再开发中,总是觉得前后端的业务还是有重叠,对系统进行需求分析以及设计时也很伤脑子,接口定义一时爽,功能更改前端后端一起崩。

所以阿里的人将node.js环境架设在了前端后后端之间。node.js是服务端js的运行环境,所以说它是后端没问题,但是它又向前端开发者提供了在后端开发的能力,而不要补充更多的知识。既然借助node.js可以在服务器上运行js,前端就可以写更多的东西,比如服务器渲染页面,实现部分客户端不能执行的业务逻辑而不用后端的参与,定义路由等操作。

详情见:淘宝前后端分离实践

 

疑惑

做前后端分离,能让前端项目和后端项目分开是最好不过了。但是我在springboot中开发,有时候需要对页面进行控制,实现一个拦截器进行访问控制。这时候就将静态资源都放在springboot项目中的静态目录了,nginx负责转发所有流量(nginx在别的不用对页面进行访问控制的项目中进行动静分离和均衡负载)到springboot的端口。这就造成我更新一次前端代码就需要重新调用一次自动化部署工具到服务器上,而我的后端其实没有更改。不知道企业里面如何实现这些的,望指教。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值