最近写个人web,用jsp+servlet做,突然想到一个问题:html+ajax似乎和jsp实现效果一样;那么,两者到底有什么区别呢?
这里参考老猿的一段话:
-
全站ajax会维护大量的js代码,如何管理好这些js需要考虑。js的技术选型也需要考虑。我当时是require+backbone+underscore+jquery等。效果上,页面流畅度不错,体验也不错。作为后端来说,只需提供数据接口,前端压力较大。前端没有什么规范可遵循。
-
传统后端渲染比较直接一点,大部分的框架都有现成的机制和规范,开发速度比较快。用户体验上不如ajax来的流畅。因为有规范化的体系,管理后端代码比管理前端代码更容易。
对此,我非常认同。有些人表示,尽可能项目不用jsp,完全使用html+ajax,完全不用JSP或者任何的模版在一个大点的项目里都有些极端。
毕竟很多数据在后端生成比前端AJAX访问效率更高。AJAX做一些交互的通信,局部刷新更合适。
具体问题 :Ajax在什么情况下不如jsp,php?
在返回查询的实时性上,ajax不如jsp.php.asp等动态语言。
ajax的显示效果确实是比jsp好,因为它实现的是无刷新技术,可以不用刷新、跳转网页就可以查询、返回数据,但实时性不太好控制。
非ajax的是比如说:a页面是一个注册信息的页面,用户写完后,可以点"注册"后,提交到b页面(在b页面中检测用户名是否已注册),这时产生了一个刷新页面的操作.
而ajax是可以在a页面中就直接不用刷新页面就可以检测用户名是否被注册(可以看一下现在的各大网站的用户注册大部分采用的是ajax技术检测的).
但是,这个但是很重要,在ajax检测完页面后,到页面提交这段时间可能会有人注册你正在注册的用户名,所以,你还要在b页面中再检测一次.
还有一个但是,比如说在服务器过慢时(虽然这种情况不多),可能长时间无法返回检测用户是否已注的信息.
这两个但是就是我所指的实时性的问题.ajax不可能作到这两点.
当两种事情无明显的先后顺序时,你可以用ajax技术,而且这样作方便使用者.
但是当两件事有先后顺序时,比如用户要先注册,后佬能登录,这时你就不能用ajax同时进行,因为这样易出错.
总结:
一.ajax的优点:
1.开发过程中前端与后端脱离,交互通过JSON传输来实现
2.跨平台能力更强,依托于浏览器的支持
3.使后台数据接口能够得到复用
二.ajax的缺点:
1.开发难度大,考虑浏览器的兼容性
2.页面请求过多
3.属于后加载,无法被爬虫爬到
4.接口代码需要新增很多
5.无法直接显示java实体类对象,需要转换为json格式
三.jsp的优点:
1.可被爬虫爬到
2.减少请求次数
3.不用考虑浏览器的兼容性
四.jsp的缺点:
1.增大了服务器的压力
2.前端与后端未脱离,拖慢开发进度
3.过于依赖java运行环境
4.复用较低。
作为一个java,前端水平有限,我还是倾向于jsp快速完成开发,但如果页面有大量交互 需要多次和服务器沟通 ajax 十分方便的, 如果是个偏静态的页,直接服务端生成内容就好了!