【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

五种常见 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:00611
用户头像

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

关注

评论

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

优酷弹幕穿人「渲染技术」揭秘

阿里巴巴文娱技术

工程能力 音视频开发 渲染

InfoQ 极客传媒 15 周年庆征文|纯 CSS 画一张生日贺卡祝 InfoQ 生日快乐

1_bit

前端 热门活动 InfoQ极客传媒15周年庆

【前端之路】react框架学习

恒山其若陋兮

React 6月月更

Hoo研究院 | OlympusDao调研报告

区块链前沿News

DAO Hoo 算法稳定

Vue 组件如何在设置 Props

devpoint

Vue Vue3 InfoQ极客传媒15周年庆

华为云AppCube零门槛搭建5G消息服务号

乌龟哥哥

6月月更

投稿开奖丨轻量应用服务器征文活动(4月)奖励公布

阿里云弹性计算

Hexo 防火墙 SSL证书 CDN加速 安全组

百度APP视频播放中的解码优化

百度开发者中心

行泊一体方案「换道超车」,百度担当汽车智能化风向标

百度开发者中心

API 网关 Apache APISIX 在 Amazon Graviton3 上的安装与性能测试

亚马逊云科技 (Amazon Web Services)

apisix;Tech 专栏

OpenKruise v1.2:新增 PersistentPodState 实现有状态 Pod 拓扑固定与 IP 复用

阿里巴巴云原生

阿里云 云原生 开源项目

架构实战营第三模块课后作业

Geek_53787a

课后总结

一文搞懂│http 和 https 的通信过程及区别

https 安全 HTTP 通信 6月月更

InfluxDB 时间线简析

观测云

python偏函数

红毛丹

Python 6月月更

应用实践 | 物易云通基于 Apache Doris 的实时数据仓库建设

SelectDB

数据库 架构 最佳实践 Doris MySQL 数据库

AQUANEE尚处初期,已或币安等顶尖机构青睐

西柚子

架构设计-外包学生管理系统

Roy

架构实战营

学生管理系统详细架构

intelamd

软件、硬件、生态齐发力,英特尔夯实云计算基石

科技之家

程序猿必备的数电知识,快来看看你掌握多少!(建议收藏)

孤寒者

进制转换 数电 常见进制

数字化时代做知识管理的最佳实践方式

小炮

关于并发和并行,Go和Erlang之父都弄错了?

OneFlow

并发 并行

观测云产品更新|观测云计费更新;新增 Jenkins CI 可观测;新增自定义查看器图表同步搜索等

观测云

leetcode 126. Word Ladder II 单词接龙 II(困难)

okokabcd

LeetCode 搜索 算法与数据结构

1.4 宏观/中观/微观架构(连载)

凌晞

架构 架构设计 架构设计实战

AQUANEE尚处初期,已获币安等顶尖机构青睐

BlockChain先知

学生管理系统架构设计

yuansteel

DevEco Studio强大的预览功能让开发效率大大提升!

HarmonyOS开发者

HarmonyOS

InfoQ 极客传媒 15 周年庆征文|国产自研数据库GaussDB(DWS)架构详解【高斯数据库】

恒山其若陋兮

架构 InfoQ极客传媒15周年庆 GaussDB架构

如何保证设计出合理架构 - 作业

阿拉阿拉幽幽

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