先后端逻辑混合开发模式:html
优势:
1. 用户体验好,在相同的网络条件和业务复杂度以及硬件环境下,他能够快速进行首屏展现,避免ajax请求所带来的渲染延时。 2. 有利于seo搜索引擎优化。 3. 方便静态化,在访问高峰期能够将某些访问量大而且业务数据大部分不变的页面生成静态页面进行缓存,有利于快速渲染。 缺点: 1. 耦合度过高,在协做开发的时候前端的开发人员要与后端的开发人员互相等待来完成总体的功能,并且后端开发人员须要了解前端 的页面结构来填充逻辑代码,大大下降开发效率而且一旦出问题没法快速定位问题。 2. 不易维护,因为对于一个页面的维护须要牵扯到两端的开发人员来共同进行维护,在需求变动后容易出现bug。 3. 对后端开发语言进行了强依赖,一旦这两种语言参杂在一块儿,对于后端来说前端是没法复用的。
ajax跨域请求先后端分离模式前端
这种分离模式能够在必定程度上弥补第一种开发模式的不足。
优势:
1. 先后端的逻辑不须要混合在一块儿,两端的开发人员基本不须要参与对方的代码,大大提高了总体的开发效率,也方便定位问题。 2. 与第三种开发模式相比较,前端人员不须要关注中间服务器的代码编写,从必定程度上减小了工做量。 3. 在部署方面先后端能够分别部署,从必定程度上提高了前端的价值。 缺点: 1. 首屏局部板块的渲染须要等到ajax请求数据返回后才能进行彻底的展现,在网络比较慢的状况下表现的尤其明显。 2. 在性能方面ajax请求的暴涨,会影响渲染性能。 3. 异步请求的嵌套会让业务代码晦涩难懂。 4. 不利于搜索引擎优化。 5. 须要对请求的异常状况进行视图逻辑的处理。
nodejs先后端分离模式vue
这也是我目前很是推崇的一种分离模式。
优势:
1. node的异步特性,一个页面是被几十个HTML片断(每一个片断一个文件)拼装成,以前PHP同步include这几十个片断,必定是串行 的,Node能够异步,读文件能够并行,一旦这些片断中也包含业务逻辑,异步的优点就很明显了,真正作到哪一个文件先渲染完就先 输出显示。前端机的文件系统越复杂,页面的组成片断越多,这种异步的提速效果就越明显。 2. 前端发挥空间大大提高,能玩的东西变多,例如websocket,前端能够本身来玩而且在controller层和model层上有更多的发挥 空间,好比在node端本身作静态数据缓存等。 3. 服务器优点,node自己内置服务器功能,几行代码就能够启动一个服务器,免去了对apache,wamp等服务器的依赖。 4. 服务端和浏览器端公用一种语言下降了学习成本,写一套代码即可先后端同时运行。 5. 先后端完全分离,node端只要启动一个http-proxy进行api请求转发相似于nginx的代理功能,前端只须要玩转json就能够,也 不存在跨域问题。 6. 服务器分别部署,能够单独进行优化,也方便node作静态化。 7. 能够进行首屏的渲染,目前像vuejs,react均可以在服务端渲染页面而后输出静态html代码,从而弥补了ajax请求的不足。 缺点: 1. 对于通常前端开发来讲,以为nodejs学习门槛比较高,牵扯到服务端就望而却步,其实没什么学的,很好上手。 2. node的单线程机制在部署的时候须要启动一个监控进程,在node挂了后能自动重启,例如在linux上配置一个supervisor。 3. 在node端调试相对比较麻烦,没有像java那样的远程调试机制,开发者通常经过console.log进行调试,固然也能够是用debug 模式启动node来进行调试。 4. 对开发人员的编码能力要求比较高,由于单线程的缘故,因此尽可能避免写出同步执行的代码,对于cpu密集型的运算尽可能不要让 node来作。