轻松掌握ExtJs系列教程一:写在使用ExtJs之前
作者:GDNPC 日期:2009-05-22
使用ExtJs已经一个多月了,先简单说一下我的使用感受。
之所以选择使用ExtJs是被它的GridPanel所吸引,刚好近期有个任务需要使用复杂的Grid,因此没多想就选择了ExtJs。
刚开始一切很顺利,网上例子很多,东挪西凑一个漂亮的grid就出来了。但随着不断深入,麻烦也越来越多,在很多细节上,用ExtJs的确不是很方便,例如layout就是一个难点,我都现在都没有做出完美的效果。那段时期真的非常痛苦,很多次真想用传统的方法推倒重来。但ExtJs GridPanel的丰富功能的确令人难以割舍,况且我不想放弃这个学习ExtJs的大好机会,这次放弃了,以后相信就没多大机会能用上了。
做开发就和长跑一样,中间总会有段觉得辛苦而想放弃的阶段,但一旦撑过去,一切就显得海阔天空,游刃有余。以下是我做的grid,一行html都没写,全部用js来实现,一共写了1500多行js代码,几乎所有功能都用上了,碰到很多疑难杂症也一一解决,具体我已记录在《ExtJs疑难杂症》系列文章里。

这个项目,我只在一个页面使用了ExtJs,其他页面我还是使用JQuery。因为我觉得ExtJs的UI理念,不是短期内能适应的。ExtJs提倡UI层应该用js来实现,哪怕是一个dom对象,也应该通过js来生成而不应该直接写在html里。页面的布局类型,也封装在ExtJs里,用户不能自由调动页面布局,如非对ExtJs有深刻的理解,开发者很难随心所欲做出自己想要的界面。而且ExtJS是一个重量级js框架,大量使用很难保证IE的性能,个人觉得它只适用于局域网的OA系统,如果把它放在广域网,相信开发者会被一堆堆跨浏览器问题,异步调用问题,js调试问题而拖死。
我简单举个例子,ExtJs在实现一个alert功能时,会向客户端输出什么代码?
- Ext.onReady(function(){
- Ext.Msg.alert('bonjour','hello god!');
- });

用IE deveploer Toolbar查看页面的dom对象,发现代码是惊人的多!!
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Transitional//EN">
- <HTML><HEAD><TITLE></TITLE><LINK href="resources/css/ext-all.css" type="text/css" rel="stylesheet" />
- <SCRIPT src="adapter/jquery/jquery.js" type="text/javascript">
- </SCRIPT>
- <SCRIPT src="adapter/jquery/ext-jquery-adapter.js" type="text/javascript">
- </SCRIPT>
- <SCRIPT src="ext-all.js" type="text/javascript">
- </SCRIPT>
- <SCRIPT type="text/javascript">
- Ext.onReady(function(){
- Ext.Msg.alert('bonjour','hello god!');
- });
- </SCRIPT>
- </HEAD><BODY class=" ext-ie ext-ie7 ext-border-box x-body-masked" id="ext-gen6">
- <DIV class="x-window-proxy" id="ext-gen47" style="DISPLAY: none">
- </DIV>
- <DIV class="ext-el-mask" id="ext-gen48" style="DISPLAY: block; Z-INDEX: 9000; WIDTH: 1400px; HEIGHT: 534px" jQuery1243001417109="13">
- </DIV>
- <DIV class="x-ie-shadow" id="ext-gen72" style="DISPLAY: block; Z-INDEX: 9002; FILTER: progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius=4); LEFT: 635px; WIDTH: 104px; TOP: 211px; HEIGHT: 105px">
- </DIV>
- <DIV class="x-window x-window-plain x-window-dlg" id="ext-comp-1001" style="DISPLAY: block; Z-INDEX: 9003; LEFT: 640px; VISIBILITY: visible; WIDTH: 100px; POSITION: absolute; TOP: 214px" jQuery1243001417109="14">
- <DIV class="x-window-tl">
- <DIV class="x-window-tr">
- <DIV class="x-window-tc">
- <DIV class="x-window-header x-unselectable x-window-draggable" id="ext-gen7" style="MozUserSelect: none; KhtmlUserSelect: none" unselectable="on" jQuery1243001417109="3">
- <DIV class="x-tool x-tool-close" id="ext-gen52" style="DISPLAY: block" jQuery1243001417109="15">
- </DIV>
- <SPAN class="x-window-header-text" id="ext-gen50">bonjour</SPAN>
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- <DIV class="x-window-bwrap" id="ext-gen8">
- <DIV class="x-window-ml">
- <DIV class="x-window-mr">
- <DIV class="x-window-mc">
- <DIV class="x-window-body" id="ext-gen9" style="WIDTH: 88px; HEIGHT: auto">
- <DIV id="ext-gen59">
- <DIV class="ext-mb-icon x-hidden" id="ext-gen60">
- </DIV>
- <DIV class="ext-mb-content">
- <SPAN class="ext-mb-text" id="ext-gen61">hello god!</SPAN><BR />
- <DIV class="ext-mb-fix-cursor">
- <INPUT class="ext-mb-input" id="ext-gen62" style="DISPLAY: none" jQuery1243001417109="16" value="" /><TEXTAREA class="ext-mb-textarea" id="ext-gen64" style="DISPLAY: none"></TEXTAREA>
- </DIV>
- </DIV>
- <DIV class="x-progress-wrap x-hide-display" id="ext-comp-1006">
- <DIV class="x-progress-inner">
- <DIV class="x-progress-bar" id="ext-gen66" style="WIDTH: 0px; HEIGHT: 18px">
- <DIV class="x-progress-text " id="ext-gen67" style="Z-INDEX: 99; WIDTH: 0px">
- <DIV id="ext-gen69" style="WIDTH: 364px; HEIGHT: 18px">
- </DIV>
- </DIV>
- </DIV>
- <DIV class="x-progress-text x-progress-text-back" id="ext-gen68">
- <DIV id="ext-gen70" style="WIDTH: 364px; HEIGHT: 18px">
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- <DIV class="x-clear" id="ext-gen71">
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- <DIV class="x-window-bl">
- <DIV class="x-window-br">
- <DIV class="x-window-bc">
- <DIV class="x-window-footer" id="ext-gen10">
- <DIV class="x-panel-btns-ct">
- <DIV class="x-panel-btns x-panel-btns-center">
- <TABLE cellSpacing="0">
- <TBODY>
- <TR>
- <TD class="x-panel-btn-td" id="ext-gen13">
- <TABLE class="x-btn-wrap x-btn x-btn-focus" id="ext-comp-1002" style="WIDTH: 75px" cellSpacing="0" cellPadding="0" border="0" jQuery1243001417109="5">
- <TBODY>
- <TR>
- <TD class="x-btn-left">
- <I> </I>
- </TD>
- <TD class="x-btn-center">
- <EM unselectable="on"><BUTTON class="x-btn-text" id="ext-gen15" jQuery1243001417109="4">OK</BUTTON></EM>
- </TD>
- <TD class="x-btn-right">
- <I> </I>
- </TD>
- </TR>
- </TBODY>
- </TABLE>
- </TD>
- <TD class="x-panel-btn-td x-hide-offsets" id="ext-gen21">
- <TABLE class="x-btn-wrap x-btn" id="ext-comp-1003" style="WIDTH: 75px" cellSpacing="0" cellPadding="0" border="0" jQuery1243001417109="7">
- <TBODY>
- <TR>
- <TD class="x-btn-left">
- <I> </I>
- </TD>
- <TD class="x-btn-center">
- <EM unselectable="on"><BUTTON class="x-btn-text" id="ext-gen23" jQuery1243001417109="6">Yes</BUTTON></EM>
- </TD>
- <TD class="x-btn-right">
- <I> </I>
- </TD>
- </TR>
- </TBODY>
- </TABLE>
- </TD>
- <TD class="x-panel-btn-td x-hide-offsets" id="ext-gen29">
- <TABLE class="x-btn-wrap x-btn" id="ext-comp-1004" style="WIDTH: 75px" cellSpacing="0" cellPadding="0" border="0" jQuery1243001417109="9">
- <TBODY>
- <TR>
- <TD class="x-btn-left">
- <I> </I>
- </TD>
- <TD class="x-btn-center">
- <EM unselectable="on"><BUTTON class="x-btn-text" id="ext-gen31" jQuery1243001417109="8">No</BUTTON></EM>
- </TD>
- <TD class="x-btn-right">
- <I> </I>
- </TD>
- </TR>
- </TBODY>
- </TABLE>
- </TD>
- <TD class="x-panel-btn-td x-hide-offsets" id="ext-gen37">
- <TABLE class="x-btn-wrap x-btn" id="ext-comp-1005" style="WIDTH: 75px" cellSpacing="0" cellPadding="0" border="0" jQuery1243001417109="11">
- <TBODY>
- <TR>
- <TD class="x-btn-left">
- <I> </I>
- </TD>
- <TD class="x-btn-center">
- <EM unselectable="on"><BUTTON class="x-btn-text" id="ext-gen39" jQuery1243001417109="10">Cancel</BUTTON></EM>
- </TD>
- <TD class="x-btn-right">
- <I> </I>
- </TD>
- </TR>
- </TBODY>
- </TABLE>
- </TD>
- </TR>
- </TBODY>
- </TABLE>
- <DIV class="x-clear">
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- </DIV>
- <A class="x-dlg-focus" id="ext-gen45" href="file:///F:/Downloads/ext-2.2.1/example.htm#" jQuery1243001417109="12"> </A>
- </DIV>
- </BODY></HTML>
这只是最简单的alert功能,可见华丽的效果不是三言两语可以完成的,上面就是个典型例子。
因此,在本教程开始之前,我奉劝大家在选择使用ExtJs之前一定要深思熟虑,一旦决定使用,就不要轻易放弃,ExtJs的确是一个优秀的框架,我们需要考虑的,是在开发成本,维护成本,IE性能和ExtJs强大华丽的功能之间作一个权衡。
文章来自: 本站原创
Tags: extjs js javascript 技术
相关日志:
上一篇
下一篇



