dojo vs extjs for large single page js app

tee*_*tee 6 javascript model-view-controller dojo extjs javascript-framework

我将构建一个非常大的mvc js app管理应用程序并将其缩小到dojo和extjs

我想知道是否有人在过去6个月内对这些框架中的任何一个有任何经验,如果您对以下任何一个领域有任何问题

  • 发展速度
  • MVC
  • 文件
  • 绑定
  • 主题小部件
  • 一个可搜索的客户端商店(不必离线,只需能够在收到后存储记录,然后对这些记录进行本地搜索)
  • 使用一些完整的堆栈工具测试,如硒
  • datagrid,分页,整理整个作品

PEM*_*PEM 15

由于Dojo完成了您所需的一切.

Dojo支持完全符合您要求的"商店".它们还支持不同的东西,如JsonRestStore,XMLStore,HTMLStore和许多其他东西,因此您可以轻松切换数据源.

关于单元测试,您可以使用名为Dojo Objective Harness的内置工具,它是机器人,或其他类似selenium或eventd(dojo)的工具.

关于MVC,dojo有一个名为dojox.mvc的东西:http://livedocs.dojotoolkit.org/releasenotes/1.7#mvc

虽然还有很多其他的东西:)

我建议你阅读这里的教程:http://dojotoolkit.org/documentation/

你的问题有点难以回答,因为我猜今天几乎每个体面的框架都可以做你所要求的.每个开发人员都会告诉你他喜欢的框架更好^^

就个人而言,我使用Dojo,我觉得它很强大,特别适合大型应用程序.他们也非常活跃并且跟上最新趋势(AMD Loader RequireJS等).还有一个很好的社区,互相帮助,特别是在邮件列表和irc频道.

此外,如果它无论如何重要,IBM等公司都会信任并花时间帮助框架改进它.

  • 发展速度:好
  • mvc:好的
  • 文档:好 - 最近的巨大进步:)
  • 绑定:好
  • 内化:好
  • 主题小部件:使用LESS岩石
  • 一个可搜索的客户端商店(不必离线,只需一旦收到存储记录,然后对这些记录进行本地搜索):good
  • 使用像selenium这样的完整堆栈工具进行测试:很好
  • datagrid,分页,整理整个作品:新dgrid很棒,旧网格很好Dojo很强大,但有时可能很棘手,好的支持弥补了它

  • *开发速度:好*mvc:好*文档:糟糕但最近取得了巨大进步:)*绑定:良好*内化:好*小部件主题:使用LESS岩石自定义东西*可搜索的客户端存储(不必须离线只是一旦收到后存储记录的能力,然后对这些记录进行本地搜索):使用一些完整的堆栈工具(如selenium)进行良好的测试:良好的*数据网格,分页,对整个工作进行排序:新的dgrid很棒,旧的网格是好的Dojo非常强大,但有时可能很棘手,良好的支持弥补了它 (2认同)

Jua*_*des 9

这是Ext-JS提供的.

这不属于答案,但如果您最终使用Ext-JS,则可能需要以下内容才能获得更好的图表.Ext图表的优点是它们更易于交互(鼠标悬停,点击),因为它不像flot那样基于画布.

/**
 * Renders a single flot chart, a much simplifed version of ExtFlot
 */
Ext.define('Ext.ux.FlotPanel',  {
    extend: 'Ext.Component',
    alias: 'widget.flot',

    /**
     * @cfg {number[][]} data The data to be drawn when it gets rendered
     */
    data: null,

    /**
     * @cfg {object} flotOptions
     * The options to be passed in to $.plot
     */
    flotOptions: null,

    /**
     * @property
     * The Flot object used to render the chart and to manipulate it in the future. It will only
     * be available after the first resize event
     * You may not set this property but you are free to call methods on it
     */
    flot: null,

    initComponent: function() {
        this.callParent(arguments);
        // The only time that we're guaranteed to have dimensions is after the first resize event
        this.on('resize',  function(cmp) {               
            if (!cmp.flot) {
                cmp.flot = $.plot(cmp.getTargetEl().dom, cmp.data, cmp.flotOptions);
            } else {
                // Flot knows to look at the container's size and resize itself 
                cmp.flot.resize();
                cmp.flot.setupGrid();
                cmp.flot.draw();
            }
        });

        this.on('beforedestroy', function(cmp){
            if (cmp.flot) {
                cmp.flot.shutdown();
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

当我4年前看到Dojo时,我讨厌它.Coudl不会在HTML中声明小部件.我宁愿用JS对象声明它们(我听说你现在可以在不指定HTML的情况下声明小部件.有些人喜欢在HTML中创建小部件,但在我的情况下(动态的商业头脑应用程序),屏幕上的每一个部分是动态的,配置来自服务器,所以我不希望服务器生成我的HTML,因为我需要在我的JS中了解它.

无论如何,我对Ext-JS非常满意,没有理由去购买新的框架.

  • "当我4年前看到Dojo时,我讨厌它." 你对Dojo的评论完全无关...... 4年前Ext-js怎么样?根据您的需求和偏好,有两种在Dojo中以编程方式和声明方式创建小部件的方法.你也可以完全管理一个小部件生命周期,并且发布代码显示开始使用你已经需要黑客攻击的ext-js并不会让它变得更加明亮:) (3认同)