ExtJS 有标准的设计模式吗

Posted

技术标签:

【中文标题】ExtJS 有标准的设计模式吗【英文标题】:Is there a standard design pattern for ExtJS 【发布时间】:2011-08-24 15:45:46 【问题描述】:

我们在旗舰应用程序中大量使用 ExtJS 3.x。我们应用程序的管理区域分为我们提供的不同模块。每个模块,以及随后模块的不同 CRUD 操作的每个页面都有自己的 .js 文件来处理功能。

刚开始时,我们只是将所有代码放入Ext.onReady(),并没有真正担心全局命名空间(嘿……我们从未真正认为自己是 javascript 开发人员)。在掌握了 ExtJS 的窍门后,我开始使用单例模式,并像这样从Ext.onReady() 调用 init 方法。

var newModule = 
    propertyOne: 'asfd',
    propertyTwo: 'asdf',
    init: function() 
        // set up
    
;

Ext.onReady(function() 
    newModule.init();
);

这是对 javascript 单例模式的正确使用吗?有没有比单例更适合 ExtJS 的模式,比如模块模式?

我一直使用this guide 作为学习 Javascript 设计模式的起点。

【问题讨论】:

如果你有足够的资源,你可以升级到 extjs 4 并使用他们强大的 MVC 应用程序来设计你的应用程序,而不用担心命名空间。 不幸的是,现在升级是不可能的。我们计划在我们的软件达到稳定版本后立即升级。我迫不及待想要使用 MVC 模式和新的 Sass 主题系统。 在 Ext JS 3.x 中使用 a 模块设计模式的其他细节可以在这里找到:ExtJS (JavaScript) Module Design Pattern best practices 【参考方案1】:

我们最终决定升级到 ExtJS,似乎有了新的 MVC 架构,设计 ExtJS 软件的最佳方式是使用Ext.application()

你可以阅读它here。

【讨论】:

【参考方案2】:

您可以查看here 例如创建自己的模块,文件Module.js。我们在自己的应用程序中使用了这种模式并且没有遇到任何问题。

Ext.app.Module = function(config)
    Ext.apply(this, config);
    Ext.app.Module.superclass.constructor.call(this);
    this.init();


Ext.extend(Ext.app.Module, Ext.util.Observable, 
     init : Ext.emptyFn
);

【讨论】:

以上是关于ExtJS 有标准的设计模式吗的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS:编辑整个网格并一次保存

Extjs MVC模式开发,循序渐进,Helloworld

将背景图像分配给 ExtJs 的工具栏

跟我一起学extjs5(22--模块Form的自己定义的设计)

python对电商设计师有帮助吗

ExtJS TreeGrid的使用方法