写点什么

如何选择最合适的 Ajax 框架?

  • 2009-01-18
  • 本文字数:1228 字

    阅读完需:约 4 分钟

与早些年相比,如今开发者面临的选择可谓是极其丰富。各类框架层出不穷、百花齐放。在选择不断丰富的同时,随之而来的烦恼则是“该挑哪个?”。从某种意义上来说,有时“挑得眼都乱了”比起“无框架可选”还要“折磨”人。

最近,Appfuse 的缔造者 Matt Raible 在其博客发表了他们选择 Ajax 框架的过程,并向社区征求意见。在文章的开始 Matt 说明了他们的决策过程:

  1. 确定准备用来搭建原型的框架简表。
  2. 用每个框架创建一个应用原型。
  3. 记录调查情况,并创建一个包含重要标准的矩阵。
  4. 为记录文档创建概括性的幻灯片。
  5. 交付文档、幻灯片(含示例)和推荐。

随后 Matt 对每一步进行了详细描述,并给出了他们的文档模板和选择标准列表。其中文档模板是:

复制代码
介绍
Ajax 框架候选
(介绍和说明选择原因)
项目信息
(历史)
(许可证 / 花费)
(提交者人数)
(支持情况)
(邮件列表的流量(11 月 /122008))
矩阵和注释
结论

文档中引用的矩阵如下(其中 Dojo、YUI、GWT 和 Ext JS 是 Matt 这次选择的候选):

权重 标准 Dojo YUI GWT Ext JS 注释 # 对客户来说重要的标准 0…1 0…1 0…1 0…1 关于评定的注释说明

Matt 说明了他们填表的策略:

  • 客户调整每个标准的权重(必要时移除 / 增加),所有权重合计为 1。
  • 我们将每个框架分成 0、0.5 或 1,其中 0 = 不满足标准,0.5 = 部分满足,1 = 满足。

Matt 在文末列出了客户向他们提供的标准列表:

  • 文档 / 教程 / 帮助的质量
  • 对浏览器的支持情况(最重要的浏览器 / 版本,以 Web 统计为准)
  • 可测试性(尤其是 Selenium 的兼容性)
  • 许可证
  • 项目健康 / 采用情况
  • 性能
  • 伸缩性
  • 灵活性 / 可扩展性
  • 生产力(应用开发,Web 开发)
  • 部件 / 组件库的丰富程度
  • 图表功能
  • 创建新部件的能力
  • 与现有 Java 团队技能的匹配情况
  • 易部署性(针对操作人员、QA 和用户而言)
  • 一般的风险程度
  • 与现有站点(它包含了 Prototype)集成的能力
  • 使用 CSS 来进行风格定义的简单程度
  • 验证(尤其是标记表单元素无效)
  • 组件的主题 / 装饰
  • CDN 的可用性(即 Google 的 Ajax 库 API 或 Ext CDN)

遗憾的是,对于 Matt 的帖子,回复虽然不少,但人们的兴趣明显不在于这个选择过程。人们似乎对 Matt 的选择结果和他们决定的候选名单更感冒,并有不少人纷纷建议这 4 种选择之外的其他选择,其中以 JQuery 居多。

单就选择 Ajax 框架来说,这篇帖子罗列了类似的考虑:

  • 服务器独立或相关?
  • 是否有结构化 JavaScript 的增强机制?
  • 你书写组件的重用性?
  • 框架当前的文档化程度?
  • 是否有你需要的特性?
  • 项目持续的时间有多长?
  • 项目的支持类型是什么?社区或商业?
  • 框架的学习曲线有多陡峭?
  • 谁将访问你的站点?

虽然 Matt 帖子反映了 Ajax 框架的选择过程,但是就其过程来说对于其他框架的选择也不乏参考价值。根据实际情况更换候选列表和选择标准,很快就可以将这个过程复制到其他类型的框架上。InfoQ 中文站的读者,请问你是否有这样一个类似的过程来确定框架?如果有,它是一个什么样的过程?对于 Matt 的过程,你还有什么要补充的?

阅读更多 Ajax 内容,请浏览: InfoQ 中文站 Ajax 专题

2009-01-18 21:043806
用户头像

发布了 255 篇内容, 共 69.1 次阅读, 收获喜欢 10 次。

关注

评论

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

深度剖析“八大排序”(上)_ 探寻一些不为人知的细节

Dream-Y.ocean

排序算法 9月月更

【中秋特辑-代码解析月饼节】C++比C语言更加规范、方便?是因为增加了如下特性 | C++98 & C++11 | C++难学?带领大家一步一步深度剖析 | 简单易懂

Dream-Y.ocean

c++ 底层 细节 9月月更

大数据ELK(六):安装Elasticsearch

Lansonli

ES 9月月更

Python之类和对象(2)

芯动大师

属性 9月月更 子类的定义

【数据结构与算法】“堆”还能这样用_堆的应用

Dream-Y.ocean

面试 9月月更

【数据结构与算法】2道面试真题,带你领略算法思想【附思路、动图、源码】

Dream-Y.ocean

面试 链表 9月月更

架构模块一作业

Diana S

架构实战营

跟我学Python图像处理丨傅里叶变换之高通滤波和低通滤波

华为云开发者联盟

Python 人工智能 企业号九月金秋榜

读书笔记|择一城以定财富,择一行以定发展

宇宙之一粟

读书笔记 职业 个人感悟 9月月更

【数据结构与算法】一篇文章带你玩懂 “栈和队列”(增、删、查、改)的实现_【附源码、动图】

Dream-Y.ocean

队列 数据结构与算法 9月月更

打印 Logger 日志时,需不需要再封装一下工具类?

程序员小航

Java 日志 slf4j

企业服务中出场率最高的活动目录AD到底是什么?本文带您好好了解一下!

wljslmz

AD 9月月更 活动目录

openjdk镜像的tag说明

程序员欣宸

Docker Docker 镜像 9月月更

【数据结构与算法】粽子树?二叉树_关于堆你不知道的事情

Dream-Y.ocean

栈和队列 9月月更

C++来时路 _ 重温经典之C++类和对象 | 三大特性之一 - 封装 | 腾讯面试题

Dream-Y.ocean

c++ 封装 底层 腾讯面试 9月月更

【数据结构与算法】二叉树题目很难?一句”技巧“巧做基础二叉树题目

Dream-Y.ocean

二叉树 二叉树遍历 9月月更 技巧总结

rust语言写的贪吃蛇游戏

福大大架构师每日一题

rust 贪吃蛇 福大大

Python语法之模块和包(1)

芯动大师

9月月更 Python语法 模块的创建

【数据结构与算法】LeetCode面试真题,带你领略算法思想

Dream-Y.ocean

面试 队列 9月月更

前端三件套 HTML+CSS+JS基础知识内容笔记

明金同学

前端

【web开发基础】php开发基础快速入门(1)-PHP介绍及开发环境快速安装和基本使用介绍

迷彩

Web应用开发 php开源 9月月更 web开发基础

怎样提高报表呈现的性能

陈橘又青

sql 9月月更

第一模块作业

lsf1227

「架构实战营」

从东南亚到中东,为什么社交类产品成为游戏出海的突破口?

融云 RongCloud

白皮书 社交网络 出海 社交娱乐

【数据结构与算法】详解 “清华大学(考研)OJ题”_ 二叉树重要面试OJ题

Dream-Y.ocean

面试 算法 清华大学 9月月更

HowTo:Pipy 如何修改请求和响应的内容

Flomesh

Service Mesh 服务网格

少儿编程是智商税?还是未来的生存技能?

博文视点Broadview

Python语法之类和对象(1)

芯动大师

Python 9月月更 类与对象

跟着卷卷龙一起学Camera--内存池浅析06

卷卷龙

ISP 9月月更

跟着卷卷龙一起学Camera--内存池浅析05

卷卷龙

ISP 9月月更

深度剖析“八大排序”(下)- 交换排序 | 快速排序 & 优化 | 非比较排序_探寻一些不为人知的细节

Dream-Y.ocean

排序算法 9月月更

如何选择最合适的Ajax框架?_Java_胡键_InfoQ精选文章