写点什么

JavaScript 框架的选择标准

  • 2007-12-09
  • 本文字数:1543 字

    阅读完需:约 5 分钟

随着 AJAX 技术日益广泛地被采用,许多开发者和架构师仍然在尝试甚至挣扎于应该采用什么样的最佳方式来评估 JavaScript 框架 / 库。 Brian Raindel 提供了一些意见 ,关于在选择框架的过程中应该考虑的各个方面,总结如下:

  • 项目需求。“这个 Web 站点或者 Web 应用,是否需要 AJAX,健壮的事件处理?是否需要特效库?”框架直接提供的功能的总量,以及使用框架需要的经验同样需要考虑。
  • 对浏览器的支持。虽然大多数框架能够支持大多数浏览器,“……但是通常会有不易察觉的例外——Mac 操作系统上的 Safari 浏览器常有这样的陷阱”。
  • 开发团队对框架的支持力度。有一个核心开发团队来维护的框架是最好的。这样 Bug 报告和问题会有更快的响应速度,而且测试会更加严格,会更好地遵守开发指导方针。
  • 框架的成熟度。“框架的成熟度是最能说明其寿命的指标,同时也是框架的坚实基础。一个成熟的框架不会是 beta 版的……”一个兴旺的社区,以及提供 Subversion 或 CVS 代码库,也是成熟标志。
  • 公开更新和发布的频率。长时间的延迟和臃肿的发行版,都是你在将来得不到框架的有效支持的明确信号。反之,过多的公开版本意味着不稳定,或者项目不够专注。”
  • 文档质量文档是一个重要的区分指标。强健的文档包括 API、书籍、教程和博客,而“只谈论句法的文档是最差劲的”。每个方法和属性的例子也是很有帮助的。
  • 存在一个活跃的社区“有经验的用户是愿意伸出援助之手还是打发你去其他地方寻找帮助?是否有开发者为框架开发扩展或者为核心框架作出贡献?”社区的个性也是判断社区是否可依靠的风向标。
  • 基准测试。基准测试可以帮助我们对于框架的性能方面得到概括的认识。基准测试还说明了框架采用了某些质量保证方面的最佳实践。另外,“……即使是速度上的略微提高,或者软件的尺寸缩小了,都可以视作一种正面的改进。”
  • 框架的可扩展性。“支持插件对于任何 JavaScript 框架来说都绝对是加分的,但是通常开发者仅仅想知道——在核心库中诊断问题所在有多困难?”
  • API 风格。“这是一个重要的问题,但是是个复杂的问题。对于大多数开发者来说,只有在很多项目中使用过几个 JavaScript 框架之后,才会对这个问题有所认识。简洁和连贯性 (chainability) 是两个非常重要的特征,不要忽视。”

在对该文章的一些评论中,有一些很好的意见可以作为选择 JavaScript 库的标准:

  • 是否有充分的功能测试和单元测试?—— Kanjax 的评论
  • 该框架是否有商业化的支持?

有许多评论者肯定了 JQuery,然而 Ian 认为在需要高性能的场景下,使用 JQuery 和 prototype 需要格外注意:

如果你的应用需要高性能,那么你要小心这些 JavaScript 框架。Prototype 和 jQuery 在使用大的数据表和网格的时候会死的很难看。我对我目前正在工作的项目做了大量的基准测试,该项目大量使用 AJAX 技术,并且用在项目核心的大数据表上。

我试验过 jQuery 和 Prototype,它们的性能总是不行。问题在于 document.getElementById() 方法。DOM 的查找操作是非常耗时的。实际上,我们的测试似乎表明 DOM 查找不是通过哈希来完成的。

许多框架会加入你通常用不上的扩展,这些扩展会降低性能。我们的解决方案是研究框架做了什么,然后我们自己编写代码,除去所有的扩展和任何无关紧要的框架支持。

但是对于没有大数据表的小型 Web 页面,Prototype 或者 jQuery 工作得很好,而且易于使用。

其它评论者指出 Mootools 提供了一份对Protoype、JQuery 和Mootools 进行的基准测试

查看英文原文 Selection Criteria for Javascript Frameworks - - - - - -

译者简介: 曹云飞,西安交通大学计算机软件硕士。现就职于 Ethos ,热衷于计算机理论与应用技术的钻研,软件架构与敏捷开发,目前从事 consumer product 方面的工作。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-12-09 00:382481
用户头像

发布了 47 篇内容, 共 12.1 次阅读, 收获喜欢 3 次。

关注

评论

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

你了解Java线程池原理吗?

不在线第一只蜗牛

Java 算法

亚马逊宣布投资100亿美元在北卡罗来纳州建设数据中心以支持AI扩展

PowerVerse

人工智能 AI 数据 去中心化云算力

秒懂 AI Agent:落地局限与产品解析

Techinsight

智能体 agent 智能体评估

商品中心—B端建品和C端缓存的技术文档(二)

电子尖叫食人鱼

架构

KubeCon China 2025 | 与KubeEdge畅聊毕业经验与创新未来

华为云原生团队

云计算 容器 云原生

Steinberg HALion for mac 虚拟采样与声音合成

晨光熹微

Steinberg Dorico Pro for mac 6.0.10 乐谱编写制作

晨光熹微

等保测评:差距测评

等保测评

华为仓颉语言初识:并发编程之同步机制(下)

IT小码哥

鸿蒙 HarmonyOS HarmonyOS NEXT

基于YOLOv8的交通标识及设施识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

指标体系建设的本质与落地逻辑——从战略到执行的闭环管理

Aloudata

数据分析 指标体系 指标管理 指标平台 指标开发

2025 深度洞察:AI Agent 落地的短板有哪些

Techinsight

通义灵码带你玩转 MCP 最佳实践(合辑,持续更新中)

阿里巴巴云原生

通义灵码 MCP

Dify实战案例:MySQL查询助手!嘎嘎好用

王磊

五分钟搭建属于你的AI助手:Ollama+DeepSeek+AnythingLLM深度整合教程

量贩潮汐·WholesaleTide

人工智能 DeepSeek

假如给你1亿的Redis key,如何高效统计?

不在线第一只蜗牛

数据库 redis

等保备案证明更新

等保测评

通义灵码带你玩转 MCP 最佳实践(合辑,持续更新中)

阿里云云效

通义灵码 MCP

三类不同身份的“开发者”,在昇腾CANN的土壤上种下了繁荣之花

Alter

揭秘:AI Agent落地难在哪,产品又咋样?

Techinsight

智能体 AI 智能体

全议程硬核公布!龙蜥邀您共同探索面向泛在智算场景的操作系统技术

OpenAnolis小助手

AI 操作系统 龙蜥社区 龙蜥meetup

Steinberg Cubase Pro for mac14.0.30 多功能音乐制作

晨光熹微

Techub News Web3小科普:什么是稳定币

TechubNews

单据流那些事儿之手工生单串讲

inBuilder低代码平台

龙蜥开发者说:我的龙蜥开源之旅 | 第 32 期

OpenAnolis小助手

龙蜥社区 龙蜥开发者说

立足数字人文,深化历史叙事|科学智能赋能人文社科领域研究

ModelWhale

科学智能 人文社科 山东大学 AI4S

算力不再是瓶颈?看DeepSeek如何颠覆AI发展逻辑

GPU算力

强化学习 算力 AI算法 深度学习、 DeepSeek

用友BIP开启「人+智能体+群」业务协同新模式

用友BIP

AI

技术视角:AI Agent 落地局限与产品实现

Techinsight

智能体 Agents AI 智能体 智能体评估

商品中心—B端建品和C端缓存的技术文档

电子尖叫食人鱼

架构

AI+制造:用友BIP智能裁切,突破造纸行业效率革命

用友BIP

AI

JavaScript框架的选择标准_Java_Alexander Olaru_InfoQ精选文章