写点什么

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:382449
用户头像

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

关注

评论

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

AI时代云动力:新一代弹性计算云主机开启智能计算新纪元!

天翼云开发者社区

云计算 云服务 云主机 弹性计算 天翼云

测试人生 | 被裁员后人生低谷到绝处逢生,薪资怒涨近40%

测试人

软件测试

案例分析——HyperWorks练习做模型简化

智造软件

案例分析 仿真软件 Hypermesh

TiDB替换Starrocks:业务综合宽表迁移的性能评估与降本增效决策

TiDB 社区干货传送门

8.x 实践

小试牛刀 - Kubernetes 上搭建 TiDB 集群

TiDB 社区干货传送门

实践案例

重构商业生态:DApp创新玩法与盈利模式的深度剖析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Footprint Analytics 现已支持 TRON 链上数据分析

Footprint Analytics

TRONex波场智能合约

亚马逊详情API接口的获取与应用

科普小能手

API 接口 API 测试 亚马逊API 亚马逊商品详情数据接口 亚马逊商品详情API

探索AI,拥抱未来,欢迎加入魔乐世界!

天翼云开发者社区

人工智能 云计算

区块链行业低迷的原因及未来发展展望

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

选择堡垒机供应商需要考虑因素简单分析-行云管家

行云管家

堡垒机 网龄安全

数据出境安全必知:22项政策为你指明出境之路!(附下载)

极盾科技

鸿蒙开发案例:垃圾分类

zhongcx

鸿蒙

运维成本降低 90%,存储成本降低 3 倍:多点利用 TiDB 资源管控功能将 100+ 套 MySQL 集合到一个 TiDB 实践

TiDB 社区干货传送门

性能调优 实践案例 版本升级 数据库架构选型 7.x 实践

快速过等保2.0的小秘诀!

行云管家

等保 堡垒机 等保测评

SQL-DSL框架之结果集处理

邱学喆

JDBC 类型处理器 配置类

taobao.item_get_desc API返回值中的促销信息与活动标签

技术冰糖葫芦

API 接口 API 测试 API 策略 pinduoduo API

TiCDC 同步 SQL_MODE 相关

TiDB 社区干货传送门

6.x 实践 TiCDC 源码解读

枫清科技高雪峰:大模型要成为生产力才有生命力

Fabarta

#人工智能

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