`
bevin_b
  • 浏览: 6965 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

有没有用EXT做过大型企业级应用的高手?

阅读更多
目前我们的项目前端使用的是EXT2.0结合DWR, 并且采用完全OPOA的结构,即一个模块对应一个独立的JS文件,在用户访问时才动态载入并生成Tab页面. 这种结构在应付项目初期的简单模块时还是游刃有余的, 但是随着项目的发展, 页面设计越来越过于复杂, 有些页面甚至需要用到一百多个Field组件,于是现在各种问题也凸现了出来,尤其是浏览器的内存泄露。我们目前暂时想到了两种解决方案:

一是采用“隐藏”的方式替代“关闭”,即模块页面打开后再关闭时只对其做隐藏,再次打开时只需做页面数据的刷新, 因此不会占用新的内存和页面初始化时间。虽然项目庞大,但是实际使用时使用者拥有的模块权限不会很多,因此是不会出现打开所有模块将内存消耗殆尽的情况的。

二是舍弃OPOA的结构,在Tab页中嵌入IFRAME,将每个模块独立成单个页面。目前发现这种方法在处理内存泄露问题上的效果是比较好的,但是由于每个页面都必须重新引入EXT库的原因,单个模块占用的内存较之前增加了十多兆。而我们已经使用到了EXT的绝大部分功能,因此再对库文件做裁减意义已经不大。

不知道各位高手有没有更好的建议,烦请不吝赐教。
分享到:
评论
43 楼 xieye 2008-12-19  
我这样做,
外面是ext做布局,
里面一个iframe,用prototype。
当然,实际不用ajax。


以上方案用于管理员的后台,感觉不错。
42 楼 free_chilly 2008-12-19  
成熟的企业级应用中,还没有太多ext的身影,它仅代表了一种发展趋势。
它的应用风险当前还是太高。
41 楼 walkman 2008-12-16  
最近也在用 Ext 做一个管理后台,开始动手之前考虑最多的也是怎么加载各个模块的页面,怎么不重复加载 Ext 库

autoload 当然是不错的方案,整个程序跑起来奇快无比,但是缺点也是显而易见的:当在同一个窗口中加载了 N 多的 dom 以后,这些 dom 在实际 select 的时候极有可能无法找到你想要的那一个(IE 尤为困难),即使你至始至终都不用 id 或者只使用类似 AUTO_ID 之类的东西寻址也无法避免很多潜在的问题。而且当加载的模块过多以后,js 对象之间必须要靠精心设计的 namespace 才能有条不紊地工作

如果使用 iframe 来加载各个模块的页面,上面说的 autoload 的问题当然不存在,但缺点却也是致命的:重复加载 Ext 库的速度令人无法忍受

思来想去我最后还是选择了 autoload 的方式,主要看重的还是加载速度,不是一般的快哦,呵呵。不知道大家都用的什么方式多一点?
40 楼 sxhan 2008-12-14  
extjs库文件已经很大,如果使用iframe则会严重影响速度,可使用eval来动态执行js代码
39 楼 bevin_b 2008-12-09  
vb2005xu 写道

EXT + DWR 服务器烧着么?? 不就是异步么?? 要服务器和客户端框架一窝端么? 自己不会写 还抱怨EXT内存泄露严重,把你们自己的代码优化好再说别人的东西不好吧,那些使用EXT的大头公司都没有抱怨EXT这个问题有多严重,几个跳梁小丑还好意思出来 得瑟! 有时间多做些代码优化的工作吧!! 又要马儿跑得快,又要马儿不吃草! 看看你们一群的盗版分子,你们中间有几个EXT是合法的版本??? bzlc


内存泄漏关服务器什么事?连基本的概念都没有弄清楚也能跑出来骂街吗?

本人水平有限,本来以前只是把公司项目中遇到的问题写出来,希望能够遇到真正的高手给予一些指点的,没想到还惹出些无知又爱卖弄的愤青来。一直都很少逛论坛发贴,就是因为像你这样让人生厌的人太多了
38 楼 小马哥 2008-12-04  
vb2005xu 写道
EXT + DWR 服务器烧着么?? 不就是异步么?? 要服务器和客户端框架一窝端么?

自己不会写 还抱怨EXT内存泄露严重,把你们自己的代码优化好再说别人的东西不好吧,那些使用EXT的大头公司都没有抱怨EXT这个问题有多严重,几个跳梁小丑还好意思出来 得瑟!

有时间多做些代码优化的工作吧!! 又要马儿跑得快,又要马儿不吃草! 看看你们一群的盗版分子,你们中间有几个EXT是合法的版本??? bzlc

我们就是买的正版的授权,只是没买support licence,觉得没必要。
没有反馈哪来的进步?内存泄漏的问题,Ext的核心开发人员也是承认确实存在的,你去extjs论坛看看jack和briant都曾经说过。
37 楼 fangzhouxing 2008-12-03  
做技术的人就这样的素质吗?
36 楼 blackjxx 2008-12-03  
楼上这个SB啊,我操。。。。
35 楼 vb2005xu 2008-12-01  
EXT + DWR 服务器烧着么?? 不就是异步么?? 要服务器和客户端框架一窝端么?

自己不会写 还抱怨EXT内存泄露严重,把你们自己的代码优化好再说别人的东西不好吧,那些使用EXT的大头公司都没有抱怨EXT这个问题有多严重,几个跳梁小丑还好意思出来 得瑟!

有时间多做些代码优化的工作吧!! 又要马儿跑得快,又要马儿不吃草! 看看你们一群的盗版分子,你们中间有几个EXT是合法的版本??? bzlc
34 楼 znjq 2008-05-23  
ext的内存泄露才是最严重的问题!
代码本身就有很多问题,该在beforedestroy的在ondestroy里面,该释放的不释放,该destroy的组件不destroy,等等。。。
内存泄露不解决,什么单页面,动态加载,autoload都是白费力气!!
33 楼 sp42 2008-05-23  
yanshiyi 写道
sp42 写道
yanshiyi 写道
microboat 写道
把每个模块都封装成JS类,主页面动态加载,用哪个模块就加载哪个。我目前就是这么做的,真正的单页系统。

如果模块达到上百个,每个模块都很很多自己的函数,你又该怎么办?估计到时候js函数都有1m多了。


不要简单地套用ext组件。
可自己尝试着写一些复合组件,即在ext组件上再联合封装一下,
通过项目的实践,感觉还是有必要建立适应程序自身的“控件”(crud、分类等)




如果你的系统要用到ext80%的组件,你还想自己开发吗?或者你相信你开发的比人家的更好吗?
我现在的东西都是我自己写的,但是有严重的内存泄露问题,遗憾的是我不懂ext,也不懂其他的组件库,只能等自己学好了javascript再说了。还好我们不用太多的富客户组件。

不是太明白你的意思。
其实不一定要全部都用ext,可结合自己的代码一步扩展。
32 楼 kin_me 2008-05-23  
请问谁用ext来做国报表啊
31 楼 sp42 2008-05-11  
yanshiyi 写道
microboat 写道
把每个模块都封装成JS类,主页面动态加载,用哪个模块就加载哪个。我目前就是这么做的,真正的单页系统。

如果模块达到上百个,每个模块都很很多自己的函数,你又该怎么办?估计到时候js函数都有1m多了。


不要简单地套用ext组件。
可自己尝试着写一些复合组件,即在ext组件上再联合封装一下,
通过项目的实践,感觉还是有必要建立适应程序自身的“控件”(crud、分类等)



30 楼 csf177 2008-05-10  
Ext在内存泄漏上已经下了很多工夫了
很遗憾还有这么多问题 只能等它自己解决了
29 楼 microboat 2008-04-08  
// 定义主程序类
App = function(){    
    this.init();
}
Ext.extend(App, Ext.util.Observable, {
    init: function(){ 
        //每个模块的父面板,注意id和js文件名是一样的      
        this.tab1 =  new Ext.Panel({
            title: '个人资料',
            id: 'person'
        });
        this.tab2 =  new Ext.Panel({
            title: '公司资料',
            id: 'company',
            layout: 'fit'
        });
        this.body = new Ext.TabPanel({
            region:'center',
            margins:'0 5 0 5',
            autoScroll: true,
            items: [this.tab1, this.tab2]
        });
        
        var viewport = new Ext.Viewport({
            layout:'border',
            items:[
                new Ext.BoxComponent({region:'north', el:'header', height:60}),
                new Ext.BoxComponent({region:'south', el:'footer', height:50}),
                this.body
            ]
        }); 
        
        this.body.on('tabchange', this.tabActive, this);
        this.loadMask = new Ext.LoadMask(this.body.body);
        this.body.activate(this.tab1);

    },
    
    tabActive: function(p,t){
        //如果此模块已加载就返回
        if(this[t.id]){
            return false;
        }
        this.loadMask.show();
        Ext.Ajax.request({
            method:'GET',
            url: 'modules/'+t.id+'.js',  //加载对应的模块js文件
            scope: this,
            success: function(response){
                var module = eval(response.responseText);
                //实例化模块类并把模块父面板的id作为对象名
                   this[t.id] = new module(t);
                this.loadMask.hide();
            }
        });
    }
});


//定义模块基类
App.Module = function(main){
    this.main = main;
    this.init();
}

Ext.extend(App.Module, Ext.util.Observable, {
    init : Ext.emptyFn
});

Ext.onReady(function(){
    Ext.QuickTips.init();
    desktop = new App();
});


某个模块类
Ext.extend(App.Module, {
    init: function(){
        this.panel = new Ext.Panel({
            html:'这是模块面板'
        });
        
        this.main.add(this.panel);
        this.main.doLayout();
    }
});


欢迎加入Q Q群37921608讨论。
28 楼 fangzhouxing 2008-04-08  
microboat,能详细描述一下你的开发方法吗?
27 楼 microboat 2008-04-07  
把每个模块都封装成JS类,主页面动态加载,用哪个模块就加载哪个。我目前就是这么做的,真正的单页系统。
26 楼 fangzhouxing 2008-04-07  
用ExtJS开发大型企业级应用的最佳实践,可以参考:
1)http://extjs.com/forum/showthread.php?t=26728

2)http://extjs.com/blog/2008/03/31/implementation-spotlight-jama-contour/

25 楼 jiakechong 2008-04-06  
有人用google的gwt吗,好象界面效果跟ext差不多把
24 楼 bevin_b 2008-03-17  
没有什么恭与不恭,我承认我就是菜鸟

只是希望高手在指点大家的时候,能先认真看看别人说的是什么,甚至能再浪费一点宝贵的时间自己去试一试真的有没有这种问题存在.就像被你引用的几句话,和你所说的好象没有什么联系吧

相关推荐

    Ext Grid控件的高级应用

    本实例使用官方Ext3.1包 分五个部分 1.创建简单快捷的Ext Grid控件 代码清晰 2.Grid 读取 Xml 3.Grid 读取 json 4.Grid 读取 Excel 5.直接在 Grid 控件进行增删改查的操作 有任何疑问的同志欢迎提出即可谢谢

    Ext JS高级程序设计

    通过学习《Ext JS高级程序设计》,开发者可以掌握创建复杂、动态和交互性强的Web应用的技能,从而提升其在企业级Web开发中的专业能力。无论是初学者还是有经验的开发者,都能从中受益,提升自己在Ext JS领域的技术...

    ext combobox二级联动

    ext,ext combobox,ext二级联动,ext combobox二级联动 ___本人的原则:上传好东西,但绝不便宜.因为自己的心血 ext combobox二级联动,ext ,ext combobox,combobox,combobox二级联动,ext 二级联动 groupCombo.on('...

    ext3.jar ext使用非常多

    无论是企业级应用还是大型网站,EXT3都能提供出色的用户体验和高效开发流程。然而,需要注意的是,EXT的学习曲线相对较陡,因为它的组件和API众多,需要花费时间去理解和掌握。同时,由于EXT是闭源的商业产品(EXT ...

    Ext java web实战项目 企业进销存系统

    1. **EXT框架**:EXT是一个基于JavaScript的富客户端框架,主要用于构建桌面级的Web应用。它提供了丰富的组件库,包括表格、表单、树形视图、图表等,使得开发者能够构建出具有桌面应用般交互体验的网页。EXT的布局...

    运用Struts2.0+Spring+Hibernate+Ext做的上传技术(JS高手制作)

    Spring框架则是一个全面的企业级应用开发框架,它提供了一种依赖注入(DI)和面向切面编程(AOP)的方式,简化了Java组件的管理和集成。在上传技术中,Spring可能负责管理业务层和服务层的bean,实现文件的持久化...

    Ext简介及应用案例 ppt

    这些实例进一步证明了Ext在企业级Web应用中的广泛应用。 学习和掌握Ext开发,需要具备基本的JavaScript面向对象编程、HTML、DOM、CSS、JSON以及Ajax等基础知识。通过深入理解这些基础,开发者可以更快地入门Ext,并...

    ext教程、ext核心API 、ext中文教程

    EXT,全称EXT JS,是一款基于JavaScript的开源前端框架,由Sencha公司开发,主要用于构建富客户端Web...在实际项目中,EXT常常被用于企业级应用的开发,因此熟悉并精通EXT技术,对于提升个人职业竞争力具有显著效果。

    Ext4+JSON+Servlet+Tree构建Web应用框架

    Ext4在性能、可维护性和API设计上都有显著提升,适合大型企业级应用。 2. JSON(JavaScript Object Notation):是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web应用中,后端...

    ext下载包,ext,ext包,ext下载

    其丰富的组件库、强大的数据管理和优秀的可扩展性使它在企业级应用开发中广泛应用。然而,由于其体积较大,对于性能和加载速度有一定的要求,因此在使用时需要权衡其优势和可能的性能影响。同时,学习EXT也需要一定...

    EXT.NET网站应用程序开发教程英文版

    10. **实战案例**:通过实际的项目案例,展示EXT.NET在开发企业级应用中的应用,帮助开发者掌握EXT.NET的实际开发流程。 11. **调试与测试**:介绍EXT.NET的调试工具和测试策略,帮助开发者找出并修复问题。 12. *...

    ext官方21种样式

    1. ** Neptune**:EXT的基础主题,提供了简洁、现代的外观,适合大多数企业级应用。 2. **Triton**:Neptune的变体,具有更暗的背景色,适合夜间模式或强调对比度的应用。 3. **Aqua**:一种明亮、活泼的主题,使用...

    ext-grid+json简单应用

    在"EXT-GRID+JSON简单应用"中,我们将探讨如何使用EXT-JS的Grid组件与JSON数据源进行集成,以创建一个动态的数据表格。 EXT-JS的Grid组件允许开发者通过定义列模型、存储器和视图来展示数据。在JSON方面,它是一种...

    ext grid tree 应用

    在EXT JS框架中,"ext grid tree 应用"是一个常见的功能组合,它结合了Grid面板和Tree面板的优势,用于展示复杂的数据结构。Grid通常用于显示二维表格数据,而Tree则用于展示层次化的数据。在这个例子中,开发者通过...

    在windows下使用Ext2Fsd访问EXT4分区

    - 高级用户可以使用命令行参数来定制挂载选项,但这需要对EXT4和Windows命令行有一定了解。 总之,Ext2Fsd是Windows用户访问EXT4分区的一个实用工具,它提供了一个方便的桥梁,使跨平台的数据交换变得更加简单。...

    ext2.0官方文档(chm),Ext 2.0 简明教程,Ext2经典应用

    Ext 2.0是Sencha公司开发的一个JavaScript框架,用于构建富互联网应用程序(RIA)。它提供了丰富的组件库,包括表格、树形视图、图表、菜单等,使得开发者能够创建功能强大、用户界面友好的Web应用。这个压缩包包含...

    Ext+JS高级程序设计.rar

    8.3.2 在CRUD操作中restful的设置以及使用Ext.Direct的问题 247 8.4 ListView控件 248 8.5 本章小结 251 第四部分 Ext 扩展和Ext插件 第9章 Ext 扩展 254 9.1 利用Ext.extend实现继承 254 9.2 与Ext扩展相关的预备...

    ext js calendar 日历

    Ext JS Calendar 日历是一款强大的日历控件,适用于构建具有丰富功能的日程管理应用。它提供了多种视图,包括月视图、日视图和周视图,允许用户灵活查看和管理时间安排。本文将深入探讨Ext JS Calendar的核心组件、...

    javascript的ext综合应用,Ext js 资源大全

    2. **EasyJWeb与EXT技术结合**:EasyJWeb是一个轻量级的Java Web框架,它与Ext JS的结合,可以创建出既有后台Java处理能力,又有前台富交互体验的Web应用。在"基于EasyJWeb开发的AJAX综合演示程序,用到了EXT等技.zip...

    ext 2 (javascript经典应用)

    EXT 2 是一个基于 JavaScript 的前端开发框架,尤其在创建富互联网应用程序(Rich Internet Applications, RIA)方面表现卓越。这个框架由 Sencha 公司开发,它提供了一套全面的组件模型,允许开发者构建功能丰富的...

Global site tag (gtag.js) - Google Analytics