AJAX弊端

作者:周卓卓
链接:https://www.zhihu.com/question/20410763/answer/117742113
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

题主的问题可以重新解读为:

  1. 什么时候应该用 Ajax
  2. 如何应对使用 Ajax 技术导致的程序复杂性

什么时候应该用 Ajax
先看看 Ajax 和传统 Server Centri Web 架构的区别。
<img src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHBzL3BpYzIuemhpbWcuY29tL2E0MjA0YTE3N2M5MzhhZmQ3ZTMyOTc1ODMyZmJkZDA1X2IucG5n.jpg" data-rawwidth="800" data-rawheight="786" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic2.zhimg.com/a4204a177c938afd7e32975832fbdd05_r.png">
Ajax本质上是一种浏览器端技术,从图中可以看出,传统 Server Centri Web 架构的最大区别是将大量业务逻辑从服务器端移到浏览器。

好处是当数据发生变更时,只需要重新渲染相关的 HTML,而不需要加载整个页面。坏处是使用大量 Ajax 的项目与其说是B/S架构,不如说是C/S架构,自然也具备C/S架构的特点,在浏览器环境下,某些特点会成为缺陷。

比如说 Ajax 要求业务逻辑必须先于数据加载,浏览器必须加载完相关 js 文件后才能开始加载数据,因此第一次页面 ready 的时间会晚于传统 Web 页面。不过这样的问题也有很多解决方案,例如 Application Cache 可以将文件保存在浏览器里,避免反复加载相同的脚本和资源文件。

所以结论是:是否应该使用 Ajax 取决于业务流程和技术栈

那怎么判定一个业务流程是否适合 Ajax 呢,我举个例子 。

假如你需要在微信里接入一个卖水果的活动,流程可以如下设计:

<img src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHBzL3BpYzIuemhpbWcuY29tLzc3ZjQyOWI2ZGQ0ODhjNTIzNTI2NTg0ZTRmYWU5NzExX2IucG5n.jpg" data-rawwidth="1526" data-rawheight="1174" class="origin_image zh-lightbox-thumb" width="1526" data-original="https://pic2.zhimg.com/77f429b6dd488c523526584e4fae9711_r.png">

如何应对使用 Ajax 技术导致的程序复杂性

澄清一点:Ajax 本身并没有加重程序复杂性。

程序变得复杂的原因是:由于 Ajax 要求业务逻辑被移动到浏览器端,因此浏览器端为了应对更多业务逻辑变得复杂。

既然是问题是程序复杂性,那么解决方案当然来自软件工程:

1. 重浏览器端的 WebApp 应用,和客户端开发一样,善用 MVC/MVV (https://zh.wikipedia.org/wiki/MVC)这样的软件设计模式,对复杂度的简化,使程序结构更加直观。

现代 Web Frameworks 都在执行这一理念。如果需要做一个 WebApp,从 React、Vue.js、Angular.js 等框架入手都是最好的选择。

2. 使用 Ajax 优化传统 Server Centri Web 的体验

无非是结构化的程序设计方式,相信所有 CS 出身的开发者都能游刃有余。

再有就是合理使用第三方库,例如使用 jQuery、underscore.js 这样的工具性第三方库可以降低对 DOM 操作的难度,并应对浏览器兼容性问题。

时间: 2024-10-10 05:43:01

AJAX弊端的相关文章

PJAX的实现与应用

一.前言 web发展经历了一个漫长的周期,最开始很多人认为Javascript这们语言是前端开发的累赘,是个鸡肋,那个时候人们还享受着从一个a链接蹦 到另一个页面的web神奇魔术.后来随着JavaScript的不断更新换代,他的功能不仅仅是为网页添加一点特效了,语言本身的加强以及对DOM操作能 力的提升让他在前端大放光彩.尤其是ajax的出现,让JavaScript以及整个web的发展翻开了崭新的一页. 利用ajax局部刷新页面,相信很多人玩得相当熟练了.如果整个页面的刷新都是使用ajax,我们

(转)PJAX的实现与应用

一.前言 web发展经历了一个漫长的周期,最开始很多人认为Javascript这们语言是前端开发的累赘,是个鸡肋,那个时候人们还享受着从一个a链接蹦到另一个页面的web神奇魔术.后来随着JavaScript的不断更新换代,他的功能不仅仅是为网页添加一点特效了,语言本身的加强以及对DOM操作能力的提升让他在前端大放光彩.尤其是ajax的出现,让JavaScript以及整个web的发展翻开了崭新的一页. 利用ajax局部刷新页面,相信很多人玩得相当熟练了.如果整个页面的刷新都是使用ajax,我们可以

ajax知识整理

HTTP服务 1.服务器 服务器类型 服务类型:文件服务器.数据库服务器.邮件服务器.Web服务器等: 操作系统:Linux服务器.Windows服务器等: 应用软件:Apache服务器.Nginx 服务器.IIS服务器.Tomcat服务器. weblogic服务器.WebSphere服务器.boss服务器. Node服务器等: 服务器软件 概念:使计算机具备提供某种服务能力的应用软件,称为服务器软件, 通过安装相应的服务软件,然后进行配置后就可以使计算具备了提供某种服务的能力 文件服务器:Se

ajax入门详解

l 一个实例 在开始正式讲解 Ajax之前,首先让我们先来看看Google Map使用Ajax改善其产品设计的效果. 1. 在浏览器地址栏中输入http://maps.google.com打开Google Map的界面. 2. 在页面顶端的搜索框中输入“China”,单击“Search”按钮. 3. 单击地图右上角的“Satellite”按钮,切换到卫星界面. 4. 调整地图左上角的尺寸,方法或者缩小当前区域.可以看到,地图区域的图象根据标尺的位置快速的变换. 5. 按住鼠标左键,拖拽地图,地图

ajax,cookie和localStoragede 的基础知识

今天首先复习了一下ajax(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.她的核心对象是XMLHTTPRequest,通过ajax可以实现网页的局部刷新.//判断浏览器类型 function getXmlHttpRequest() { var xhr = null; if((typeof XMLHttpRequest) != 'undefined') { xhr = new XMLHttpRequest(); } else { xhr = new ActiveXO

jQuery ajax的traditional参数的作用///////////////////////////////////zzzzzzzzzzz

jQuery ajax的traditional参数的作用 i33 发布时间: 2013/04/03 10:05 阅读: 9859 收藏: 9 点赞: 1 评论: 0 一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox: $.ajax{ url:"xxxx", data:{ p: "123,456,789" } } 然后后台获取参数后再分隔,这种做法有很大弊端,试问如果某一个参数值中出现了分隔符所使用的字符,会

AJAX 基础知识

AJAX 基础知识 一.AJAX综述 1.AJAX的概念 A:异步asynchronousJ:JavaScriptA:andX:XML 异步的JavaScript和XML. 2.AJAX的优点(好处) 1),提高用户体验度  2),JS与服务端的交互  3),页面局部刷新--提高浏览器的效率 2.AJAX的缺点(弊端)    加大服务器的负担 注:新思想,老技术. 二.实现AJAX功能 (一).JS实现AJAX功能 1.获得XMLHttpRequest(浏览器的兼容) (二).JQuery实现A

ASP.NET之Ajax系列2

在上一次的Ajax操作中,我们使用了ASP.NET原生控件实现,但是弊端很多,效率低下,而且有个文件上传的BUG: 于是我们寻求更好的实现方式,jQuery的Ajax方法配合ashx一般处理程序.jQuery的好处是兼容性强(背后有一个团队专门负责开发),易用(找个API几分钟就学会了),功能强大(对原生js进行了封装,直接调用方法即可实现很多功能).Ashx一般处理程序则是MS自家的,从名字可以看出它是用来处理一些东西的(原谅我才疏学浅),而且它在执行的过程中不会对整个页面的生命周期重建,这就

Ajax学习(1)

Web 1.0 它指的就是具有完全不同的请求和响应模型的传统 Web.比如,到 hdu.edu.cn 网站上点击一个按钮.就会对服务器发送一个请求,然后响应再返回到浏览器.该请求不仅仅是新内容和项目列表,而是另一个完整的 HTML 页面.因此当 Web 浏览器用新的 HTML 页面重绘时,可能会看到闪烁或抖动.事实上,通过看到的每个新页面可以清晰地看到请求和响应. Web 2.0 Web 2.0(在很大程度上)消除了这种Web 1.0看得见的往复交互.比如在 Google Maps 上,你可以拖