前言:
由于地处北京,作为技术前言大都市,技术的更新迭代也比较快,前后端分离的思想现在已经深入人性,目前大型的pc端网站都是采用的mvc的架构模式,前后端项目实现很大程度的解耦。前后端分离一般分为两种:
没有中间层的前后端分离
没有web中间层的前后端分离属于比较简单的类型,我们将html、css、js等静态资源放置到
cdn上,每次访问页面的时候,直接将html返回给用户,然后里面所有的dom节点和其他数据都
是由js来执行生成的。我所在的公司目前采用的就是这种比较简单的前后端分离,将所有的静态
资源全部放在nginx上。这样做起来所有的js,css都被打包成一个或者多个文件,加载的过程
特别长,造成首屏的渲染时间太长了,并且html只有一个入口,seo的特别不友好。
有中间层的前后端分离
有中间层的前后端分离是一般大型项目采用的前后端分离方式,node由于自身健壮性的限制,
又不适合作为大型项目的后端服务器,所以node热过一阵之后,逐渐成为了连接传统前端和后
端的中间层,我们也称这种前端+node的架构为“大前端”。
在node层中,我们可以做的事情就有很多了
1、返回不同的前端模板。
2、数据拼接,资源整合
(因为服务器访问接口的速度要比浏览器快很多个数量级,因此在node中访问多
个接口并且拼接起来是非常高效的,拼接后的数据我们就可以直接传入模板中,供js使用,
这个只是一个列子,前两天后台同事告诉我,数据的整合是他们来做的。我们只调一个api就
可以,其实在node层做拼接,其实也是不安全,维护性也特别差,但总的来说,其实也是一
个优点)
3、node层对app实例的监控,可以捕捉异常的请求和事件。可以做数据统计,包括对内接口
4、服务器端渲染,我们解决之前提到的首屏渲染时间过长和对seo支持较低的问题。之前很
早以前在饿了莫面试的时候,被问到服务器端渲染,其实自己已经在用了,不过一直不知道这
个名次,不过现在懂了,之前使用的时候也是在node层,将数据传入windos对象,前端从对
象里面拿东西获取数据。这只是一种习惯,肯定有更好的办法,