使用ExtJS的优缺点是什么?

27

在我的一个项目中,有人建议我使用ExtJS。我对ExtJS知之甚少,我一直在使用jQuery完成我的所有项目。我知道很多人非常了解ExtJS。

请告诉我使用ExtJS的优缺点?


2
如果您想要拓展自己的技能,那么我会推荐学习ExtJS。但是,如果您时间紧迫并且已经非常熟练地掌握了JQuery,那么可以暂时坚持使用它。然而,针对RIA应用程序的客户端MVC框架是当前和不久的将来的趋势,无论是ExtJS、Sproutcore还是Backbone或其他框架。 - dbrin
@DmitryB,新手从有经验的开发人员那里得到答案有什么问题吗?如果人们愿意回答,那你为什么会有问题呢? - SunnyShah
3个回答

26
以下是ExtJS的主要优点和缺点: 优点:
  1. ExtJS类似于小部件的超集,例如简单标签、文本框按钮到复杂的网格、拖放面板等。它还提供了演示以调用远程服务器方法。

  2. 具有相当好的文档,包括教程、样例和用户社区。

  3. 活跃和目前最被广泛采用的JavaScript RIA框架。

  4. 良好的代码质量/可读性。

  5. 惊人的小部件集合,可以做我们可能需要的一切。似乎快速,每个版本都带来新的改进。

缺点:
  1. 占用空间较大-该库大小为500KB(使用mod_gzip可减少至150KB)。首页面加载时间较长。

  2. CSS-很容易迷失方向。难以找到正确的类名。

  3. HTML-充满div和过度复杂的生成代码。即使使用FireBug,也难以调试。

  4. 修改后的GPL 3.0许可证。开放源代码应用程序免费,但商业闭源应用程序需付费。

  5. 使用ExtJS会使我们认为GUI会像桌面和丰富。定制不容易实现。

  6. 即使是简单的加载也需要几行代码,而在普通的html或jQuery中则更简单。

  7. 调试不太容易。在JavaScript框架中,只有GWT在托管模式下具有更好的调试功能。

  8. 用户无法收藏某个页面。由于对象是通过DOM操作渲染的,因此页面无法被搜索引擎索引。

  9. 需要相当有经验的开发人员。

  10. 我不确定如何在没有整个显示为EXT的情况下使用它。我希望能够集成到我们已有的内容中。

参考:ExtJs - 优缺点分析

希望这可以帮到你。


3
“Pro #5”在未提供文章背景的情况下没有意义。另外请注意,该文章所指的是Ext JS 3.0,这个版本现在有些过时了。 - Brian Moeskau
我正在实现一个经典的桌面应用程序,我的客户对自定义 CSS 并不太挑剔。该应用程序使用选项卡、动态工具栏、可编辑和可过滤网格以及其他一些功能。Ext 是一个很好的选择!我们面临的最大问题是绘图 - 加载动态图像需要一些工作,并且要保持大小和宽高比的方式符合您的期望。矢量图形受支持,但仅作为 SVG 原语,因此如果您正在制作自定义图形,则需要进行一些工作。 - emolaus
我认为另一个缺点是爬虫无法很好地索引您的页面。 - alcedo
1
@alcedo:像ExtJS这样的RIA框架并不适用于可爬行页面。它们主要用于管理/企业类型的应用程序。 - Dan Dascalescu
1
这个答案实际上相当误导人。@bmoeskau的回答应该是被接受的答案 - Dan Dascalescu

14

虽然之前的回答已经被接受,但还有几个点需要澄清。

Ext并不使用“修改版”GPL许可证。它完全采用标准的GPL v3和Sencha商业许可证进行双重许可。 开源许可证例外使其更适用于插件/扩展开发人员等,但GPL许可证是标准许可证。

缺点列表在一般情况下大都属实,但没有一些上下文则有些毫无意义了。将Ext JS与jQuery进行比较也是没有意义的——这就像是在比较苹果和橙子。如果将Ext JS与其他类似的RIA框架(Dojo、YUI、Sproutcore)进行比较,则诸如代码占用空间、CSS/HTML复杂度、调试等问题会变得相当平衡(或者至少可以做出更有用的对比)。仅仅说这些东西在抽象意义下是“缺点”并不真正准确,因为它们主要是任何复杂RIA框架的要求。

关于某些具体点,这个列表(根据来源文章)提到的是Ext 3.0。截至本篇翻译撰写时的当前版本是4.0.7。总代码占用空间实际上自3.0以来已经增加了,但现在Ext随附有一个动态类系统和构建工具,可以根据应用程序的依赖关系创建优化的构建版本。因此,它总体的占用空间很大,但您不必包含所有内容。

CSS/HTML的复杂性是基于Ext JS支持的小部件和布局系统的复杂性而来的。这在RIA世界中很常见,不能与简单的jQuery插件进行比较。顺便说一下,Ext 4.0现在使用SASS/Compass,并带有生成的CSS,因此现在比3.0的情况更容易自定义源样式。

调试在4.0中也相对更容易(再次归功于新的类系统),但肯定比任何静态类型语言如Java(GWT)要困难得多。这是任何基于JavaScript的框架的问题,不仅是Ext。

如果您实现了历史/状态记录(Ext提供两者支持),那么在您的应用程序中添加书签页是完全可能的。这是必须要做的事情,因为它是应用程序特定的(在单个小部件级别有一些自动状态管理),但绝对是可行的。同样,这是一个常见的RIA问题,与Ext无关。
我同意的优点清单(除了第5点是没有上下文并且毫无意义呈现出来)。事实上,自3.0版本以来,文档和帮助指南已经变得更好得多。如果您想要将Ext JS与其他RIA框架进行具体比较,请搜索SO,因为这已经被广泛讨论过了

12

你使用框架的目的将决定需要使用哪一个。

ExtJS

非常适合单页面RIA应用程序,其中ExtJS框架只在页面上加载一次,几乎没有手写HTML代码。这意味着该框架可以管理应用程序中的所有内容。


JQuery

用法有很大不同:您的服务器端框架通过JSP、GSP、ASP等生成HTML,并通过每个页面添加JQuery库来为这些页面添加功能。


ExtJS缺点:

  1. 复杂的框架-不是针对新手 :)
  2. 陡峭的学习曲线
  3. 可能会出现错误-是的,确实存在。但是,大多数问题源于未正确使用框架和未充分理解文档。
  4. 不断发展的框架-这既可以被视为正面也可以被视为负面,但今年已经发布了大约7个版本。

ExtJS优点:

  1. 真正多才多艺的客户端MVC框架,具有当前可用的最完整组件和小部件集。
  2. 可扩展性强。实际上,Ext.extend()是你要做的第一件事。
  3. 美丽。开箱即用的主题设计非常出色,大多数没有主题技能的开发人员(我们不指名道姓)都可以创建真正专业和好看的Web应用程序。
  4. 文档是我见过的任何库、API或开源项目中最好的。带有API文档(即使存在一些缺陷),具有实时代码示例,您可以调整并查看发生了什么+源代码。涵盖大部分库的优秀示例。从MVC到主题的重要主题的优秀指南。甚至还有视频库。这份文档最近得到了很大更新,所以如果您在过去6个月内没有看到它-好吧,去看看吧!
  5. 论坛非常活跃,许多关键专家每天积极参与其中。
  6. 用户扩展(UX)-庞大的用户社区导致出现了惊人的创造性解决方案。
  • 它非常强大!拥有如此多的出色组件,以至于我从未需要将某些东西扩展到无法识别。我提到了学习曲线吗?
  • MVC—对于任何自尊的RIA应用程序,MVC框架都是必须的。
  • 构建工具
  • 支持使用SASS和Compass进行主题设置
  • ...还有很多更多的功能。
  • 声明:我曾经是一名沮丧的ExtJS开发人员,现在已经足够高超了,真正享受它 :)

    • (欢迎作为社区Wiki)

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接