写点什么

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

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

关注

评论

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

软件测试/测试开发/全日制/测试管理丨Web自动化测试价值与体系

测试人

软件测试

神州数码集团荣获“TiDB 社区最佳贡献企业”

PingCAP

数据库 开源 TiDB

交易所做市机器人与去中心化做市机器人

区块链技术

QEMU组件安装来啦

小齐写代码

企业为什么要进行数字化转型?七大原因

天津汇柏科技有限公司

数字化转型

存储结构的种类与比较

天翼云开发者社区

数据 存储结构

观测云产品更新 | 日志、场景仪表板、监控器等

观测云

可视化图表

GaussDB(for MySQL) RegionlessDB发布:全球数据库技术

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(for MySQL)

PingCAP 受邀参加 FICC 2023,获 Open100 世纪全球开源贡献奖

PingCAP

数据库 开源 分布式 TiDB pingCAP

使用存储过程自动化分区管理 Zabbix MySQL(8) 数据库中的大表;

瀚中子🤩

如何规避云服务宕机现象?

天翼云开发者社区

云计算 服务器 云服务

存储程序和程序控制:开发经验分享及操作过程详解

天翼云开发者社区

存储 数据存储

TiDB 在全球头部物流企业计费管理系统的应用实践

PingCAP

数据库 开源 分布式 TiDB 物流系统

“领导企业转型必修课” 3月23-24日敏捷领导力(CAL / ALJ)认证周末班【新年特惠】

ShineScrum

领导力 组织转型 业务敏捷 高管教练 敏捷领导力

“全球金牌课程”2024年3月9-10日 · CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum

敏捷教练 ScrumMaster ScrumMaster认证

PingCAP上榜工信微报年度回顾《2023 年工业和信息化发展情况》 三大具有国际影响力的开源社区之一

PingCAP

数据库 开源 分布式 数字化 TiDB

极狐 GitLab 冷知识:使用 git push 创建 Merge Request

极狐GitLab

懋嘉信息加入飞桨技术伙伴计划,通过大模型助力人力管理智能化

飞桨PaddlePaddle

人工智能 深度学习 文心大模型

Mixtral 8X7B MoE模型基于阿里云人工智能平台PAI实践合集

阿里云大数据AI技术

持续构建行业影响力|HarmonyOS SDK荣膺年度“技术卓越”奖项

HarmonyOS SDK

HarmonyOS

入选人民网2023普惠金融优秀案例,合合信息旗下启信宝赋能银行对公信贷数字化转型

合合技术团队

银行 数字化 合合信息 启信宝

2023 Gartner® 云数据库管理系统魔力象限发布 PingCAP 入选“荣誉提及”

PingCAP

数据库 Gartner TiDB

首个云原生、分布式、全栈国产化银行核心业务系统投产上线丨TiDB × 杭州银行

PingCAP

数据库 开源 云原生 TiDB 银行业

加入openEuler训练营,一起探索开源世界的无限可能!

科技热闻

持续构建行业影响力|HarmonyOS SDK荣膺年度“技术卓越”奖项

HarmonyOS开发者

HarmonyOS

微短剧市场暴涨267.65%,用微短剧场景AUI Kit精巧入局

阿里云CloudImagine

云计算 视频云 微短剧

大模型如何改变传统教学方式?《AI赋能教学实践》新课上线

飞桨PaddlePaddle

人工智能 深度学习

面试官:实际工作中哪里用到了自定义注解?

王磊

Java 面试

抖音APP如何实现用户生命周期提升

字节跳动数据平台

大数据 A/B测试 企业号 1 月 PK 榜 对比试验 数字化增长

Terraform 的开源替代:OpenTofu 宣布 GA!

SEAL安全

开源 Terraform OpenTofu

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