请跟我来(完)--使用Ext及其llano的注意事项

    公司事情越来越多!所以赶紧挤点时间一口气把我知道的要点写出来,和大家探讨交流。虽然在软件业混了10多年,但是总感觉自己知道的东西太少(Ext2.0确实十分优秀,我也才接触3个月,以前很不熟悉以js代码,目前只是看了一下我们的实际项目常用到的地方)。希望结交一些有才华的朋友。
    实际上我的技术不强,一直做管理和质量方面的工作,写代码有时只是研究或者兴趣所在。两年前由于项目组实在太忙,高手都抽不出时间,所以我就去写了公司的WEB开发框架,当时还没有学过Java,实在是很辛苦,什么都现学现用。经过两年的项目检验,总算能够满足公司内部使用。至于.net版本的,刚移植过来,可能会有些问题。如果有什么需要我帮助的地方,可以联系我:QQ:657241411 Emial: liusj@139.com
    下面就我研究的心得和大家交流一下:

1)ExtJs 2.0注意事项:
   a) 没有好的IDE,确实没有delphi开发那么方便!根据网景浏览器以及Castle被MS借鉴的前例,我相信如果Ext团队不及时推出更好的开发辅助支持,将很难将好东西推广。目前我们的办法是安装firefox,再装个firebug,可以降低一些调试时间,如果使用VS2008,可能js调试就简单些了。
   b) Ext提供的组件十分丰富,如果要做一些新的界面组件,尽量使用组合方式少用继承。举个任务板的组件示意一下:
Msgs = function(cfg){
    
this.initialConfig = cfg;
   
this.panel=null;
   
this.draw(cfg);
}


Msgs.prototype 
= {

    draw : 
function(cfg){
    
//    if(this.panel!=null) for(var p in this.panel.items) this.panel.remove(this.panel.items[p]);
    if(this.panel!=null) Ext.destroy(this.panel);
     
this.panel = new Ext.Panel({
             width:cfg.width,height:cfg.height,
               
// baseCls:'x-plain',
                renderTo: cfg.div_id,
                title:cfg.title,
                autoShow:
true,
                layout:
'table',
                layoutConfig: 
{columns:3},
               collapsible: 
true,
               frame:
true,
                defaults: 
{frame:true, width:200, height: 200},
                items:cfg.items
            }
);
    }
,
    setHtml : 
function(id,text){
        
//alert(text);
       var msg=this.panel.findById(id);
        msg.body.update(text);
    }
,
     removeItem : 
function(id){
       
this.panel.remove(id,true);
     
this.panel.doLayout();
    }
,
     AddItem : 
function(id,title,text){
        
        Ext.apply(
this.initialConfig.items,[{id:id,title:title,html:text}]);// todo decode tostring then encode
        this.initialConfig.items=Ext.decode("[{id:'msg1',title:'Item 1'},{id:'msg2',title:'Item 2'},{title:'"+title+"',html:'"+text+"'}]");
        alert(Ext.encode(
this.initialConfig.items));
        
this.draw(this.initialConfig);
     }

}
;

  c) 弄清楚事件模型机制和组件注册机制,园子里有些介绍文章可以查看,如果没有太多时间我建议看看ext-2.0\source\widgets\PagingToolbar.js
  d) 开发时尽量使用debug版本,使用Ext.log输出一下,不过发布时不像log4j等那些方便设置。

2)llano注意事项:
   虽然是公司所有的,但是大家可以去研究,用在商业上请通知我们,这样可以商议由我们提供技术服务,实现双赢
  a) 基于以前项目组各自为政的教训,我们的基类Entity只能使用String类型的id
  b) 简单的多对多关系可以交由系统统一维护,删除实体时就会自动清理无效的关系数据
  c) 直接实际开发需要的数据参数字典功能,使用缓存策略。
  d) java支持toXML(),net版本重载ToString()输出JSON格式,不再支持XML

   由于稳定性的要求,公司要求尽量的简单,实际上我也很赞同"最有效的往往很简单!"。llano只是简单集成了一下别人的优秀成果加上了一点我们的最佳实践,所以整个框架40K。在些测试中,发现NHibernate和Java版本还有不少差距。

    好了,近期就写到这里了。我感觉大家一定要注重技术的思想体会,毕竟一个项目的成功,技术因素通常只占20%,但是可能耗去80%的时间。如果大家掌握了关键思想,其实在.NET根本就不愁框架和工具,LINQ就是不错的例子。但是事情也是两面性的,Java工具的不好倒是培养了大批优秀的架构师。

alex 1-7





 

posted @ 2008-01-07 11:04  成为-行动-拥有(BeDoHave)  阅读(2934)  评论(4编辑  收藏  举报