论坛首页 Web前端技术论坛

关于extjs开发的方式

浏览 21626 次
精华帖 (4) :: 良好帖 (1) :: 新手帖 (8) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-14  
lich0079 写道
那么大家的那个单页面一般占多少内存
我们现在的项目在任务管理器看上个100m很平常


70-80M左右
0 请登录后投票
   发表时间:2009-10-14  
我也用ext开发过.那满篇的JS
和空空的body体让人看着真的不舒坦
0 请登录后投票
   发表时间:2009-10-14  
内存泄漏好像没有太好的解决方法, 我们现在的做法就是new完以后不销毁, 页面轮转的时候自定义一个方法来请求后台重新加数据和重新设置页面状态. 虽然页面都打开后比较占内存但是轮转时候速度会变快, 浏览器内存占用也不会无限增大.
0 请登录后投票
   发表时间:2009-10-14  
我现在一般window的closeAction都是close(也就是默认);但是效果不是很明显,这玩意儿内存消耗确实厉害,但是有利有弊.单页面我没有出现过内存泄露的问题.....
0 请登录后投票
   发表时间:2009-10-14  
geweixin 写道
我用EXT将近1年半了,我觉得EXT也可以类似JAVA一样的开发方式,每一个JS文件一个类,一个对象,
然后需要调用的时候,new 一下!!,我在开发中就是这么做的。。。


但是这样做法有一定问题,java文件一般运行在本地,但是js文件确是需要下载的,所以应该尽量减少JS文件的个数,不过思路可以和JAVA类似,只不过把JS的几个类放到一个大的JS文件中~这样对于速度是有益的
0 请登录后投票
   发表时间:2009-10-14  
单页面应用肯定会遇到内存泄漏的问题 , 伟库网每个功能模块都附着在一个html上面, 切换时刷新, 不会泄漏, 但是每个页面都要引用ext-all
0 请登录后投票
   发表时间:2009-10-14   最后修改:2009-10-14
  ...编辑 请删除此回复 谢谢
0 请登录后投票
   发表时间:2009-10-14  
不知道为什么被投了7个新手帖,这个问题单纯来看不复杂,但是如果结合几个用户需求以后就没这么简单了,例如:根据用户的权限隐藏部分元素,保存用户对界面的设置(表格的排序方式,部分列隐藏,列宽度和位置)

js可以动态加载
http://www.extjs.com/forum/showthread.php?t=69465
runtime javascript loader class
Ext.ensure({
    js: ['../js/somejs.js', '../js/OtherjsFile.js'],
    callback: function() {
        var win = new Ext.ux.MyWindow({});
        win.show();
    },
    scope: this
});

js的结构可以参照nan21-ebs的做法,svn地址在http://nan21-ebs.googlecode.com/svn/trunk/ClientExtjs/src/
0 请登录后投票
   发表时间:2009-10-14  
andy_ghg 写道
我觉得,开发EXTJS,首先要建立的就是组件化编程,你把一个form作为一个组件,也可以将半个页面都作为一个组件.当组件化编程之后你就要考虑分类别,分模块开发了,

我认为,一个组件一个JS文件,多个组件拼接成一个模块,这些组件都放在一个文件夹下,命名方法其实很简单,类似java如:
在App文件夹下的Scene文件夹内
App.Scene.ScreenManager.js
    Ext.namespace("App.Scene.ScreenManager.XX","App.Scene.ScreenManager.YY");

App.Scene.ScreenControl.js
    Ext.namespace("App.Scene. ScreenControl.XX","App.Scene. ScreenControl.YY");

App.Scene.Main.js
    Ext.namespace("App.Scene. Main.XX","App.Scene.Main.YY");

在App文件夹下的Business文件夹内
App.Business.CheckUser.js
    //同上
App.Business.Logout.js
    //同上

并且,切记,要把Extjs当做java来写,因此,你的程序只能有一个入口即只能允许整个程序中只出现一个
Ext.onReady(function(){

});
很多人不信Extjs可以这样写,说只能应用在小型的项目中,但是我可以告诉你,这样的写法完全适用与大项目,而且是项目越大越能展现出他的好处

我经历过刻骨铭心的失败总结出以下几点经验:
1.绝不使用全局变量(如有必要,可以用静态方法来做)
2.不能设置组件的(包括该组件下的小组件的)ID这个属性,(此组件的派生类你可以随意).
3.稀奇古怪的代码少写,因为你不能保证你的EXTJS版本永远停留在当前版本上(如果公司有钱买授权的话)
4.能在后台完成的业务逻辑坚决不在前台做,即使在前台做看起来比较简单(如果前台坐起来非常简单就算了,例如验证)
5.统一管理你的JSON生成.
6.规范你的代码


我下面有一段代码是我的风格,当然可能并不适合你:
Ext.ns("App.Users.CURD");
/**
 * 必要的注释一个不能少,Javascript代码维护起来没有java好维护....
 *
 */
App.Users.CURD = Ext.extend(Ext.Panel,{
    //属性代码全部写在这里
    title:"CURD",
    //初始化组件(如果你的组件需要改变样式或者需要动它的dom,你可以重写父类的onReander,并把部分视图代码放在onReander函数中)
    initComponent:function(){
        App.Users.CURD.superclass.initComponent.call(this,arguments);
        //先定义自定义事件(如果必要的话)
        
        //接着视图代码全部写在这里

    },
    //方法函数全部写在这里
    //先将与后台数据交互的函数写出来
    addUser : function() {
        //对应后台同名的Action方法函数
    },
    delUser : function() {
        //对应后台同名的Action方法函数
    },
    updateUser : function() {
        //对应后台同名的Action方法函数
    },
    //供自己内部使用的函数跟在后面
    formClear : function() {

    },
    //提供给外部调用的函数紧跟数据操作
    getSelectUsers : function(){
        return ......
    }
    setXXXX : function() {
    },
    //最后就是事件处理函数,因为函数比较多,事件处理往往伴随着页面逻辑,放在后面比较好找....混在中间不太好找
    onSubmit : function() {

    },
    onDelet : function() {

    }
});

//*因为是基于UI的组件,因此一般都可以独立测试,测试通过后注释掉即可(注意我的注释写法)
Ext.onReady(function(){
    //.........
});
//*/



最后一句....无论是ASP.NET组件(Coolite)还是什么可视化组件,前期学习都不要使用.



我的写法这个这位的比较接近,但是我多写了一个含有公共方法的xxx.panel用来继承
也就是:App.Users.CURD = Ext.extend(Ext.Panel,{...})中
我用自己写的xxx.panel来代替Ext.Panel




0 请登录后投票
   发表时间:2009-10-14  
一个页面两个js,一个是显示的,一个业务的
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics