ä¸çŸ¥ä¸è§‰2008å·²ç»èµ°åˆ°äº†å°½å¤ß_¼Œåœ¨è¿™˜q‘一òq´ä¸åQŒä¸€ç›´ä¸æ–çš„ž®è¯•用ExtJSåšé¡¹ç›®ï¼Œä»?.1到现在的2.2åQŒåƒäº†ä¸ž®‘苦å¤ß_¼Œä¹Ÿæœ‰ä¸å°‘收获åQŒæ€È»“一下,一起分享ï¼
1. ExtJSçš„å®šä½æ˜¯RIAåQŒå’ŒPrototypeã€jQuery½{‰ç±»åº“的定ä½ä¸åŒã€‚ä‹É用ExtJSåšå¼€å‘,ž®±æ˜¯æ„味ç€ä»¥å®¢æˆïL«¯å¼€å‘äØ“ä¸»ï¼Œä¸ç„¶ž®×ƒ¸å«RIA框架了,而Prototypeã€jQuery½{‰åªæ˜¯è¾…助性的客户端框æžÓž¼Œå’ŒExtJSä¸åœ¨åŒä¸€æ¡è“v跑先上。如果一定è¦å’Œå…¶å®ƒçš„æ¡†æž¶åšæ¯”è¾ƒçš„è¯ï¼Œåº”该å’?a target="_blank">Isomorphic SmartClientã€?a target="_blank">Backbase Enterprise Ajaxä¹‹ç±»çš„æ¡†æž¶åšæ¯”较åQŒå½“ç„Óž¼Œå’Œä»–们相比,ExtJS˜q˜æ˜¯æœ‰å¾ˆå¤§çš„优势的ã€?/p>
2. 使用ExtJSæ—‰™œ€è¦è§£å†›_¦‚何æœåŠ¡ç«¯é€šä¿¡çš„é—®é¢?/strong>。由于ExtJSåªæ˜¯ä¸€ä¸ªå®¢æˆïL«¯çš„æ¡†æžÓž¼Œå’ŒæœåŠ¡ç«¯æŠ€æœ¯æ²¡æœ‰å…³¾p»ï¼Œä¹Ÿå°±æ²¡æœ‰ç›¸åº”çš„æœåŠ¡ç«¯çš„é€‚é…å±‚ï¼Œå› æ¤å®¢æˆ·ç«¯å¦‚æžœè¦ç”¨ExtJSåQŒåˆ™å¿…é¡»æä¾›å®ƒéœ€è¦çš„æ•°æ®¾l“构。ExtJS主è¦é€šè¿‡˜q™å‡ ¿Uæ–¹å¼å’ŒæœåŠ¡ç«¯è¿›è¡Œé€šä¿¡åQ?
- Ext.Ajax.request åšæ™®é€šçš„异æ¥è¯äh±‚åQŒæœåŠ¡ç«¯å¯ä»¥æ ÒŽ®å®žé™…情况˜q”回JSON形弿•°æ®æˆ–者HTML片段åQ?
- Ext.tree.TreeLoader åŠ è²æ ‘åÅž¾l“æž„åQŒæœåŠ¡ç«¯å¿…é¡»˜q”回JSON形弿•°æ®åQŒè€Œä¸”è¦ç¬¦åˆExt.tree.TreeNode的酾|®è¦æ±‚,å¦åˆ™è‡ªå·±åšè{æ¢ï¼›
- Ext.data.StoreåŠå…¶‹z„¡”Ÿ¾c?/strong> åŠ è²è¡¨æ ¼å½¢å¼çš„æ•°æ®ï¼ŒæœåŠ¡ç«¯å¯ä»¥æ ¹æ®å®žé™…情况返回JSON形弿•°æ®æˆ–者XML形弿•°æ®åQŒå¦‚果没有特ŒDŠè¦æ±‚,推è˜q”回JSONæ ¼å¼çš„æ•°æ®ï¼›
- Ext.Element.update 局部更斎ͼŒ˜q™ä¸ªæ–ÒŽ³•最总还是è¦è°ƒç”¨Ext.Ajax.requestæ–ÒŽ³•åQŒä¹‹æ‰€ä»¥æŠŠå®ƒå•独列出æ¥åQŒæ˜¯å› 䨓˜q™ç§æ–¹å¼æ¯”较å®ÒŽ˜“被忽视,但是在æŸäº›æƒ…况下˜q˜æ˜¯æŒ? 有用的,比如调用Ext.Panel.body.update()å¯ÒŽŸä¸ªExt.Panel的内容进行局部更斎ͼŒå¦‚果使用˜q™ç§æ–¹å¼åQŒé‚£ä¹ˆæœåŠ¡ç«¯åªèƒ½ç›¸åº”çš? ˜q”回HTML片段了;
3. 使用ExtJS时的注æ„事项。ExtJS和其它的辅助性类åº?Prototypeã€jQuery½{?相比昑־—éžå¸¸åºžå¤§åQŒè®©å¾ˆå¤šå¾ˆå¤šåˆå¦è€…æœ›è€Œå´æ¥ã€‚绘q‡è¿‘一òq´çš„å¦å’Œç”¨ï¼Œå¯¹äºŽExtJSçš„ä‹É用,我æ€È»“äº†ä¸€ä¸‹å‡ ä¸ªæ³¨æ„事™å¹ï¼š
- ž®½é‡ä½¿ç”¨ExtJS的方a€ã€? ExtJSæä¾›äº†å¾ˆå¤šæœ‰ç”¨çš„æ–ÒŽ³•åQŒè§£å†›_®¢æˆïL«¯JavaScript常è§çš„å¼€å‘ä“Q务,常è§çš„æœ‰æŸ¥è¯¢HTMLDomåQŒåˆ›å»ºHTMLå…ƒç´ åQŒäØ“HTMLå…ƒç´ æ³¨å†Œäº‹äšgå“应函数½{‰ï¼Œ˜q™äº›å¤§å¯ä»¥å…¨éƒ¨ä‹É用ExtJSæä¾›çš„æ–¹æ³•,使自å·×ƒ»£ç æž„å»ÞZ¸ŽExtJS之上åQŒä‹Då‡ ä¸ªä¾‹ååQ?
- 查询ID为containerçš„DIV下所有的checkboxåQŒå¯ä»¥ä‹É用:Ext.fly(‘container’).select(‘input[type=checkbox]’);
- 在ID为containerçš„DIV内创å»ÞZ¸€ä¸ªæŒ‰é’®ï¼Œå¯ä»¥ä½¿ç”¨åQ?span style="font-family: Courier New; color: #ff8000">Ext.fly(‘container’).createChild({ tag: ‘input’, type: ‘button’});
- 为ID为containerçš„DIVçš„click事äšg注册处ç†å‡½æ•°åQŒä‹É用:Ext.fly(‘container’).on(‘click’, handlerFn, scope);
- ExtJS的自定义事äšg很好ç”?/strong>åQŒå¯ä»¥å®žçŽîC¸€å¯¹å¤šçš„通知åQŒè€Œä¸”ä»ÖM½•自定义事仉™ƒ½å¯ä»¥ä¸é€”åœæ¢ï¼Œåªè¦æœ‰ä¸€ä¸ªå¤„ç†å‡½æ•°è¿”回falseã€?
- Storeåˆåƈæˆä¸€ä¸ªæ–‡ä»?/strong> 用ExtJS昄¡¤ºæ•°æ®åQŒè‡ªç„¶å°±éœ€è¦ç”¨åˆ°Ext.data.StoreåŠå…¶‹z„¡”Ÿå‡ºæ¥çš„ç±»åQŒå¯ä»¥è€ƒè™‘所有的StoreåˆåƈåˆîC¸€ä¸ªæ–‡ä»Óž¼Œ˜q™æ ·å¯šw‡ç”¨æœ‰å¾ˆå¤§çš„帮助ã€?
- 脚本文äšg½Ž¡ç† ž®½å¯èƒ½çš„æ¯ä¸ªæ¨¡å—åšæˆä¸€ä¸ªç±»åQŒä¸€ä¸ªç±»ä¸€ä¸ªæ–‡ä»Óž¼Œ¾cÖM¼¼ä¸ŽJava或C# çš„æ–‡ä»¶å¤„ç†æ–¹æ³•,æ¯ä¸ªæ–‡äšg注明其作用,ä¾èµ–的文件ç‰åQŒå¦‚果太多的è¯å¯ä»¥è€ƒè™‘写一个酾|®æ–‡ä»Óž¼Œé€šè¿‡è¯»é…¾|®æ–‡ä»¶æ¥è¾“出脚本到客æˆïL«¯ã€?
- 调试和部¾|²åˆ†åˆ«åŠ è½½Debugå’ŒRelease版本的脚æœ?/strong> ExtJS附带的例å䏿²¡æœ‰ä½¿ç”¨å®Œæ•´Debug版本的例å,所以很多äh找ä¸åˆ°å®Œæ•´çš„Debug版本的引用顺åºï¼Œé€šè¿‡å¯¹Sourceæ–‡äšg夹下的ext.jsbæ–‡äšg˜q›è¡Œåˆ†æžåQŒå°±å¯ä»¥å¾—到æ£ç¡®çš„åŠ è½½é¡ºåºï¼Œå¦‚下åQ?
- Debug
- /ext-path/source/core/ext.js
- /ext-path/source/adapter/ext-base.js
- /ext-path/ext-all-debug.js
- Release
- /ext-path/adapter/ext/ext-base.js
- /ext-path/ext-all.js
- 对Script˜q›è¡ŒåŽ‹ç¾ƒ 寚w¡¹ç›®ä¸æœ‰å¤§é‡çš„JavaScriptçš„è¯åQŒå¯¹å…¶è¿›è¡ŒåŽ‹¾~©æ˜¯å¾ˆæœ‰å¿…è¦çš„,˜q™é‡Œæˆ‘推è的是ExtJSçš„è®ºå›æä¾›çš„JS BuilderåQŒå¯ä»¥é€šè¿‡é…置文äšgæ¥å¯¹Scriptå’ŒCSS˜q›è¡ŒåŽ‹ç¾ƒåQŒæ®è¯´ExtJSž®±æ˜¯ç”¨è¿™ä¸ªå·¥å…¯‚¿›è¡ŒåŽ‹¾~©çš„åQŒä¸˜q‡æœ‰ä¸€ä¸ªç¼ºç‚¹ï¼Œž®±æ˜¯ä¸æ”¯æŒUTF-8¾~–ç ã€?/li>
4. ExtJS的优点和¾~ºç‚¹æ€È»“。绘q‡è¿‘一òq´çš„ž®è¯•åQŒExtJS的优¾~ºç‚¹æ€È»“如下åQ?
- 优点
- 一致的¾cÕdº“ ˜q™ç‚¹åœ?.1ç‰ˆæœ¬æ—¶è¿˜ä¸æ˜¯å¾ˆå®Œå–„,但是åˆîCº†2.0以åŽåQŒExtJS内部¾l过了翻天覆地的å˜åŒ–åQŒç‰¹åˆ«æ˜¯UI¾l„äšgåQŒæœ‰¾lŸä¸€çš„基¾c»ï¼Œ¾l™ähçš„æ„Ÿè§‰å¾ˆåƒæ˜¯ä¸€ä¸ªè¿è¡Œåœ¨‹¹è§ˆå™¨ä¸Šçš„è¿è¡Œæ—¶æ¡†æž¶åQŒè¿™ä¸€ç‚¹åªæœ‰åœ¨å¯¹ExtJSç†Ÿç»ƒäº†ä¹‹åŽæ‰èƒ½ä½“会到ã€?
- 托管™åµé¢å‘ˆçް ExtJS在å‘展到2.0之åŽåQŒä¸ä»…UI¾cÕdº“一致了åQŒè€Œä¸”渲染方å¼ä¹Ÿæ˜¯¾lŸä¸€çš„,用官方的è¯è¯´åQŒæ˜¯Managed RenderingåQŒè¿™ä¸€ç‚¹ä‹Éå¾—UI的扩展也比较一è‡ß_¼Œæœ‰åˆ©äºŽä»¥åŽçš„¾l´æŠ¤ä¸Žå‘展ã€?
- 相对丰富的文档和½CÞZ¾‹ æ¯«æ— ç–‘é—®åQŒåˆšåˆšæŽ¥è§¦åˆ°ExtJSçš„äh多数都是被它附带的例åå’Œå¼€å‘æ–‡æ¡£å¸å¼•过åŽÈš„åQŒå®ƒçš„æ–‡æ¡£åšçš„确实ä¸é”™ã€?
- åŽä¸½è€Œæˆç†Ÿçš„ç•Œé¢ ExtJSåœ?.0之åŽçš„界é¢çœŸçš„æ˜¯æ²¡å¾—è¯ß_¼Œä¸ä»…åŽä¸½åQŒè€Œä¸”相对很æˆç†Ÿã€?/li>
- ¾~ºç‚¹
5. 使用ExtJSåšåº”用的一些å¾è®?/strong>。多æ•îChè®¤äØ“ExtJS的脚本体¿U¯å¾ˆå¤§ï¼Œä¸é€‚åˆæ”‘Öˆ°äº’蔾|‘上åQŒå¯¹äºŽè¿™ä¸€ç‚¹ï¼Œæœ‰å¦‚下å¾è®®ï¼š
- 部çÖvåˆîCº’è”网上的Web应用一定è¦åŠ è²Release版本的ExtJS
- å¯ä»¥è€ƒè™‘åªåŠ è½½å¿…™åÈš„¾l„äšgåQŒbuild目录下脚本文仉™ƒ½æ˜¯åŽ‹¾~©è¿‡çš„,如果™å¹ç›®ä¸ç”¨åˆ°çš„ExtJSçš„ç»„ä»¶ä¸æ˜¯å¾ˆå¤šï¼Œå¯ä»¥åªåŠ è½½ç”¨åˆ°çš„
- 考虑使用IIS的文件压¾~©åŠŸèƒ?
- 使用Googleçš„GearsåQŒæŠŠæ‰€æœ‰çš„陿€æ–‡ä»¶åšå®¢æˆ·ç«¯ç¼“å?
- 使用ADOBEçš„AIRåQŒæŠŠè„šæœ¬æ‰“åŒ…åˆ°å®¢æˆïL«¯˜q行
æ€Èš„æ¥è¯´åQŒExtJS是一个ä¸é”™çš„æ¡†æž¶åQŒå®ƒé™ªä¼´æˆ‘èµ°˜q‡äº†¾_‘Ö½©çš?008åQŒä¹Ÿè®¸åœ¨æœªæ¥çš?009åQŒæˆ‘会è{å‘其它的RIA技术,但是我至ž®‘会¾l§ç®‹å…Ïx³¨ExtJSåQŒåŒæ—¶ä¹Ÿå¸Œæœ›˜q™ä¸ªæ¡†æž¶èƒ½å¤Ÿ™å½å¼ºçš„生å˜ä¸‹åŽ…R€?/p>
PSåQŒå…±äº«ä¸€äº›å¦ä¹ 资料: