当前位置:首页>开发>正文

前后端如何做到分离开发,最后再整合部署 前后端分离是不是一定要node

2023-05-03 09:10:14 互联网 未知 开发

 前后端如何做到分离开发,最后再整合部署 前后端分离是不是一定要node

前后端如何做到分离开发,最后再整合部署

由于后端提供的接口方式可能多种多样,同时开发人员在编写Node端代码访问这些接口的方式也有可能多种多样。如果我们在接口访问方式及使用上不做统一架构处理,则会带来以下一些问题:
1. 每一个开发人员使用各自的代码风格编写接口访问代码,造成工程目录及编码风格混乱,维护相对困难。
2. 每一个开发人员编写自己的mock数据方式,开发完毕之后,需要手工修改代码移除mock。
3. 每一个开发人员为了实现接口的不同环境切换(日常,预发,线上),可能各自维护了一些配置文件。
4. 数据接口调用方式无法被各个业务model非常方便地复用。
5. 对于数据接口的描述约定散落在代码的各个角落,有可能跟后端人员约定的接口文档不一致。
6. 整个项目分离开发之后,对于接口的联调或者测试回归成本依然很高,需要涉及到每一个接口提供者和使用者。

前后端分离是不是一定要node

AngularJS是前段的基于JS的MVC框架,NodeJS是服务端的JS框架,并不存在前后端分离的问题。 简明的解释是使用NodeJS作为服务端的时候前端不是必须用angularJS的,同样angularJS也可以搭配PHP,Java等服务端语言使用。
node.js是用于服务器端,做后台程序的。AngularJS是前端框架,主要用于数据绑定,不需要安装,只要在标签导入就能用了。

前后端分离,怎么做SEO优化

可以利用现在的前端框架做同构支持(目前热门的前端框架都支持同构)。在初次网址访问时由服务器渲染页面内容,Client端资源做CDN,这样就可以支持SEO优化了。

如果使用的是angularjs的话,可以看看Prerender - AngularJS SEO, BackboneJS SEO, or EmberJS SEO

前后端分离 跨域问题??

建议不要使用Jsonp解决跨域,后端的入口文件可以加上下面三句话解决跨域
header(Access-Control-Allow-Methods:POST,GET)
header(Access-Control-Allow-Credentials: true)
header(Access-Control-Allow-Origin: *) //*代表可访问的地址,可以设置指定域名

如何处理好前后端分离的 API 问题


意义很大,但是你的问题本身认识有偏差。

对于前后端分离,认识上有个误区,那就是很多人自称:老早就分离了,全AJAX,使用Angular或者什么什么就可以了。

这个说法是不合适的,打个比方,别人问的是“如何解决家禽把蛋生在水草边的问题?”,但实际上人家养的是鸭子,答题的却是养鸡的,所以回答“不让去水边就行了”,这显然不在点子上。

这两年业界说的前后端分离,是限于偏展示类的系统(用A代替),而不是应用、管控类Web项目(用B代替),在B类项目里,前后端是天然分离的,对此,除了少部分后端开发人员,基本所有人的认识都是一致的。上一段中这样回答的人一般都是只做B类项目,在B类项目里,前后端分离是共识,不需要讨论。

那么,剩下的问题就是讨论A类项目的前后端分离了。这个问题的核心在什么地方呢,在于模板的与数据结合的位置,以及,模板的控制权在谁手里。经过这两年的讨论,基本上我们可以达成的共识就是:模板应当由前端人员去控制,主要原因有两方面:

- 性能优化(尤其是外部资源的管理与发布,请求合并等等)
- 协作的顺畅性(已形成模板的界面片段的返工等问题)

那么,模板到底应该在什么地方跟数据结合?

这个问题就比较折腾了,有部分人尝试像B类项目那样,使用js模板,然后在浏览器端执行,这是存在一些问题的,比如说seo不友好,首屏性能不够,尤其对于首页DOM量很大的电商类网站,差距很明显。

所以还是得把主要的模板放在服务端来执行。在这个过程中,阿里作了一些尝试,那就是引入Node层,在这一层把模板与数据进行合成,然后浏览器拿到的就是生成好的HTML了,但也不是所有HTML都是这么生成好的,还是会有一些内容等到了浏览器之后,再用js去加载和生成。