AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

五种常见 Ajax 反模式

  • 2007-04-01
  • 本文字数:832 字

    阅读完需:约 3 分钟

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-04-01 23:00987
用户头像

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

关注

评论

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

C++---类型萃取---is_integral && is_floating_point

桑榆

C++ STL 11月月更

【Java面经】阿里三面被挂!幸获内推,历经5轮终于拿到口碑offer

钟奕礼

Java java面试 java编程 程序员‘

好消息 突破:IM开源项目OpenIM采用wasm技术实现jssdk

Geek_1ef48b

python数据分析-pandas增删改查

AIWeker

Python Python数据分析 11月月更

10 W字最新 Java 热门面试题及答案总结

钟奕礼

Java java面试 java编程 程序员 java

2022最全168道Spring全家桶面试题(含答案)

钟奕礼

Java java面试 java编程 程序员‘

湖仓一体电商项目(十三):数据发布接口和可视化

Lansonli

湖仓一体电商项目 11月月更

看我如何连夜自建网站背刺我的求职对手们

华为云开发者联盟

云计算 华为云 云服务器 自建网站

信息论与编码:信道的数学模型

timerring

11月月更 信道 数学模型

SpringBoot整合MongoDB超详细教程

陈老老老板

java; spring-boot 11月月更

EasyExcel常用API与注解

陈老老老板

EasyExcel java; 11月月更

EasyRecovery15数据恢复软件下载使用安装教程

茶色酒

EasyRecovery15

从12K到60K,这2023Java研发必问高级面试题,过关斩将拿offer

钟奕礼

Java java面试 java编程 程序员‘

大厂敲门砖,Github霸榜的顶级并发编程宝典被我搞到手了!

小小怪下士

Java 面试 并发编程 JVM

@Valid与@Validated的区别

陈老老老板

java; 11月月更

线上沟通无忧,华为云会议SmartRoom了解一下

清欢科技

湖仓一体电商项目(十四):实时任务执行流程

Lansonli

湖仓一体电商项目 11月月更

SpringBoot整合Elasticsearch超详细教程

陈老老老板

ES spring-boot 11月月更

GaussDB拿下的安全认证CC EAL4+究竟有多难

华为云开发者联盟

数据库 后端 华为云

一文了解 Go 中的指针和结构体

陈明勇

Go golang 指针 结构体 11月月更

JPQL超详细介绍与JPA命名规则

陈老老老板

Spring JPA 11月月更

Spring Data JPA简介与SpringBoot整合超详细教学

陈老老老板

Spring JPA 11月月更

华为云桌面Workspace,不得不爱的移动办公新体验

爱科技的水月

云原生系列一 【基于CCE Kubernetes编排实战】

叶秋学长

Kubernetes 云原生 CCE 11月月更

面试90%会问到的200+Java面试题汇总(含答案解析)

钟奕礼

Java java程序员 java面试 java编程

EasyExcel导出数据超过Excel单表上限解决方案

陈老老老板

EasyExcel java; 11月月更

吃透这份“腾讯限量版”Java架构笔记,要个40k不过分吧?

钟奕礼

Java 程序员 java面试 java编程

云原生系列 二【基于CCE Kubernetes编排实战】

叶秋学长

Kubernetes 云原生 11月月更

The Micro-service design of E-commerce System

David

架构实战营

湖仓一体电商项目(十二):编写写入DM层业务代码

Lansonli

湖仓一体电商项目 11月月更

PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]

汀丶人工智能

深度学习 图神经网络 11月月更 GAT

五种常见Ajax反模式_Java_James Kao_InfoQ精选文章