写点什么

五种常见 Ajax 反模式

2007 年 4 月 01 日

Jack Herrington 根据自己在 Ajax 领域的开发经验,撰写了一篇文章,深入讨论了 Ajax 代码中常犯的错误。他阐述了五个足以被认定为反模式(anti-pattern)的常见具体问题,总结如下:

滥用定时器(Timer)进行轮流监测。尽管 JavaScript 拥有定时器功能(通常使用 window.setInterval()),但我们只能因地制宜地使用。把它用在动画上是合理的,但对于其它方面我们就必须仔细斟酌了。最显而易见的危险信号就是使用定时器来监视请求的完成。这种情况下应该使用回调而不是轮流监测的方式。

在回调中没有检查返回结果。在使用 XMLHTTPRequest 对象的 processReqChange() 回调时,必须对回调参数的 readyState 和 status 值进行检查。回调常常会在结果完成之前被调用。假如没有检查此结果,在代码试图处理不完整数据时可能会引起错误。

在传递 HTML 更合适的情况下,传递复杂的 XML。将 XML 格式化成浏览器中显示的 HTML 可能需要编写大量的 JavaScript,这可能导致开发人员不得不面对更多的浏览器兼容性问题。

就和你做所有事情一样,到底该在服务端还是客户端处理的选择应该根据工作的需求而定。在这种情况下,举一个相对简单的例子:给出一个电影列表。如果工作更复杂一些的话——可能包含排序,添加或删除,或者进行动态交互,在点击某个电影的时候显示更多的信息——那么在客户端将包含更复杂的代码。实际上,在本文结尾,我将演示如何对在客户端排序,探讨将负载过多地置于服务端的驳论。

在该传递 JavaScript 代码时,传递 XML。简而言之,在你可以使用 JSON 时不要用 XML:

这里的好处是显而易见的。在本例中,使用 JavaScript 语言客户端下载的数据量节省了 52%,并且性能上也得到提升,读取 JavaScript 版本速度快了 9%。尽管 9% 看起来并不多,不过要注意的是这个例子还尚未完善。更为庞大的数据块或者更复杂的结构将会带来更多的 XML 解析代码,而 JavaScript 则会保持不变。

在服务端进行过多处理。简单的单页面功能,如表格排序,在 JavaScript 中处理起来比服务端处理得更快,效率也更高。

2007 年 4 月 01 日 23:00268
用户头像

发布了 117 篇内容, 共 10.1 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营-大作业

连增申

LeetCode题解:84. 柱状图中最大的矩形,使用栈,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

“锟斤拷”的前世今生

Java旅途

Unicode 编码 ASCII 锟斤拷

为什么我选择清晨阅读和学习

胡迪伦

学习 效率 自学编程 早起 晨型人

SpringCloud Gateway 身份认证

Barry的异想世界

微服务 nacos 权限系统 Gateway spring cloud alibaba

LeetCode题解:66. 加一,BigInt,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Golang领域模型-聚合根

奔奔奔跑

golang 架构 微服务 领域驱动设计 DDD

架构师 0 期大作业(二)

何伟敏

使用枚举的正确姿势

Java旅途

Java 单例 枚举

食堂就餐卡系统设计

天天向上

极客大学架构师训练营

第一周总结

睁眼看世界

极客大学架构师训练营

互联网架构师能力图谱

dony.zhang

架构师 架构师技能

有了数据湖探索服务,企业决策“新”中有数

华为云开发者社区

Serverless 数据湖 数据分析 云原生 华为云

10大高性能开发宝石

李浩宇/Alex

食堂就餐系统 UML 图

睁眼看世界

极客大学架构师训练营 食堂就餐系统

拖动旋转的 3D 骰子效果

Clloz

CSS transform rotate3d

超详细超级细B站视频爬取

海绵宝宝re儿

python 爬虫 多进程

一个敏捷教练成长必备的8项技能

华为云开发者社区

程序员 敏捷 敏捷开发 敏捷教练 技术技能树

C++隐式推导-auto关键词

良知犹存

c++

系统架构师训练营大作业(一)-同城物流快递业务系统架构设计

吴建中

架构师 0 期第十三周命题作业

何伟敏

架构师训练营大作业二

qihuajun

小码农也有大目标,最新BAT大厂Java面试总结

Java架构师迁哥

架构师训练营大作业二(架构思维导图)

吴建中

技术解析丨C++元编程之Parser Combinator

华为云开发者社区

c++ 字符串 Parser Combinator Parser 元编程

Skywalking Php注册不上问题排查

心平气和

php Skywalking 全链路追踪

架构师训练营大作业

方堃

架構師訓練營第1期-第01周總結

Panda

架构师训练营大作业一

qihuajun

【性能优化】小伙伴问我性能指标监控怎么做,这次我安排上了!!

冰河

tomcat 性能优化 监控 性能调优 jvm调优

iOS面试梳理 - 2020年8月初

iOSer

ios 面试 面试题

混合云之争的开端与终途

混合云之争的开端与终途

五种常见Ajax反模式-InfoQ