Extjs學習筆記 --- 初篇

          Posted on 2007-12-25 21:11 久城 閱讀(8657) 評論(5)  編輯  收藏 所屬分類: EXT&Extjs
          至此圣誕佳節,漫寫學習筆記。

          無意中接觸到的Extjs,還去baidu查了查什么是Extjs,隨之,被它酷酷的外表迷惑了,即使很多人在議論著它幾百K的胖客戶端所帶來的性能問題,依舊不會影響我學習它的心情。

          對于Extjs的前景我沒資格談,也不想談,這個問題離我太遠。

          Extjs就是一個js庫,里面封裝了很多常用的UI組件,目前的版本是2.0。

          關于學習Extjs

          官方網站:http://www.extjs.com/
          這里當然是最好的學習Extjs的地方,里面有關于Extjs的Demo和文檔。而且,它的論壇的口碑也不錯,推薦英語猛的人可以去逛逛。
          象我這種英語比較poor的人,學習起來就比較費勁了。

          推薦一個中文論壇:http://jstang.5d6d.com
          逛了兩天,感覺里面的一些資料很不錯,還居住著一些象frank這樣的牛人。

          去官網上下載一個ext2.0的包,這個包里面就是要學的全部內容。
          包里的docs和examples兩個文件夾就是Extjs的文檔和Demo,和網站上看到的是一樣的。

          examples一般就是學習者的入口了,研究里面的幾個例子。

          主要應用的幾個文件:
          ext-all.js,adapter\ext\ext-base.js和resources下的全部,這是別人的一個推薦,沒什么標準,我感覺先排除一些文件,可以提高學習的效率。

          關于學習Extjs的環境

          myeclipse + spket插件 + firefox + firebug
          對于firefox + firebug前幾天提過了,spket插件今天是第一次用,spket也可以作為一個獨立的IDE平臺。它的功能還不清楚,使用它是因為下載的Ext包里的js文件都是密密麻麻的無格式化的代碼。而spket中的ctrl + shift + f 讓我有一種熟悉的感覺,這樣在eclipse中可以清晰的看到js的結構。

          學習內容

          當初就是因為一個panel的實現,讓我接觸到的Extjs,這不是Extjs最引人的地方,卻是我學習的方向和入口。

          看了大多數的學習筆記,首先要接觸的就是
          Ext.onReady(function() {
              alert('hello world
          !');
          }
          );

          這個是在DOM加載完之后執行的,也就是我們平時所常說的頁面加載完畢之后執行的,當然它應該屬于頁面加載的一部分。
          onReady方法里的function可以看作一個匿名類對象。
          還有一些常用的語法:

          var myDiv = Ext.get('myDiv'); 
          // 返回id為myDiv的Element對象
          var ps = Ext.select('p');  
          // 返回id為p的Element對象數組,可以使用ps.each()進行遍歷。
          Ext.get('myButton').on('click', yourClickFunction); 
          // 給myButton元素添加事件,yourClickFunction是一個function對象.
          //
           more


          學習ext-base.js
          這個文件定義了Ext對象的基本結構

          開始為Ext = {version : "2.0"};
          此時Ext對象只有一個元素version,值為2.0.

          Ext.apply = function(C, D, B) {
           
          if (B) {
            Ext.apply(C, B)
           }

           
          if (C && D && typeof D == "object"{
            
          for (var A in D) {
             C[A] 
          = D[A]
            }

           }

           
          return C
          }
          ;

          如果用我的js的思想來說,這里定義了Ext的apply元素為一個function對象。如果用java的類的思想來說,這里定義了Ext類的apply方法。(以下統一稱作方法)
          apply這個方法,實現了把D,B中的元素都添加給C,然后返回添加后的C。
          關于return,在網上學到的理解方式,就是return的部分屬于public的,而其余的部分屬于是private的,只在當前function中可見。

          再后面Ext.apply(Ext, {.....});
          這個{}的里面有很多內容,也就是利用Ext.apply給Ext對象添加了很多屬性和方法。
          屬性如:isStrict : isStrictis,Secure : isSecure
          方法如:

          extend : function() {
                 
          var io = function(o) {
                  
          for (var m in o) {
                   
          this[m] = o[m]
                  }

                 }
          ;
                 
          return function(sb, sp, overrides) {
                  
          if (typeof sp == "object"{
                   overrides 
          = sp;
                   sp 
          = sb;
                   sb 
          = function() {
                    sp.apply(
          this, arguments)
                   }

                  }

                  
          var F = function() {
                  }
          , sbp, spp = sp.prototype;
                  F.prototype 
          = spp;
                  sbp 
          = sb.prototype = new F();
                  sbp.constructor 
          = sb;
                  sb.superclass 
          = spp;
                  
          if (spp.constructor == Object.prototype.constructor) {
                   spp.constructor 
          = sp
                  }

                  sb.override 
          = function(o) {
                   Ext.override(sb, o)
                  }
          ;
                  sbp.override 
          = io;
                  Ext.override(sb, overrides);
                  
          return sb
                 }

                }
          (),

          這個extend方法后面會經常遇到。

          Ext.ns("Ext""Ext.util""Ext.grid""Ext.dd""Ext.tree""Ext.data",
            
          "Ext.form""Ext.menu""Ext.state""Ext.lib""Ext.layout",
            
          "Ext.app""Ext.ux");

          這里定義了Ext的命名空間,涵蓋了Ext的幾大牛B的對象,以后慢慢學。

          Ext.apply(Function.prototype, {
           createCallback : 
          function() {
            
           }
          ,
           createDelegate : 
          function(C, B, A) {
            
           }
          ,
           defer : 
          function(C, E, B, A) {
            
           }
          ,
           createSequence : 
          function(B, A) {
            
           }
          ,
           createInterceptor : 
          function(B, A) {
            
           }

          }
          );

          這里為function的原型對象添加了五個方法。每一個function都有它的原型對象prototype,這樣定義之后,對于以后任何的function對象,都具有如上定義的五個方法。

          如此分析ext-base.js的類,讀代碼時,才感覺到自己的javascript的基礎還是太差了。準備一邊學習Extjs,一邊補習javascript。

          關于javascript知識點

          this的用法
          參考:http://www.cnblogs.com/raymond19840709/archive/2007/10/30/942520.html
          var的用法
          參考:http://www.cnblogs.com/birdshome/archive/2005/01/26/97885.html

          一點積累,一點學習,一點想說的。

          初學,歡迎交流,歡迎指正。


          歡迎來訪!^.^!
          本BLOG僅用于個人學習交流!
          目的在于記錄個人成長.
          所有文字均屬于個人理解.
          如有錯誤,望多多指教!不勝感激!

          Feedback

          # re: Extjs學習筆記 --- 初篇  回復  更多評論   

          2007-12-25 23:00 by 海邊沫沫
          兄弟,你是在分析它的源代碼吧?
          我覺得,從使用的角度來講會更加不錯。

          # re: Extjs學習筆記 --- 初篇  回復  更多評論   

          2007-12-25 23:00 by Lingo
          廣告廣告:D

          新版ext教程
          www.family168.com上有一部分免費預覽版。

          # re: Extjs學習筆記 --- 初篇  回復  更多評論   

          2007-12-26 08:42 by 久城
          @海邊沫沫
          有理!~:)
          這幾天只是看了一下它的整體結構,我的JavaScript基礎比較差,研究一下源碼,可以轉變一下用JavaScript編程的思想。

          以往的web編程,一個頁面會包含很多內容,如html,css,javascript,甚至是一些邏輯處理,而現在,他們的獨立實現使耦合性更加明顯了,以前還不是很適應css,js的分離,現在感覺,隨著web得動態性,除了少數特殊的情況(如純靜態內容),html,css,javascript的分工也更加的明細。

          所以盡量不要把表現,樣式和事件寫在一起,應該分開來寫。

          比如:
          一個按鈕的事件初始化:
          Ext.get('mybutton').on('click', yourClickFunction);
          一個按鈕的樣式初始化:
          .mybutton {background-color:#FFFFFF;}
          這樣html標簽單純的用來顯示,只需設置一個id:


          PS:上邊的XXX也應該是脫離于表現的,屬于數據存儲部分,可以存放在配置文件中。這樣,分工明確了。

          以上,愚見。進一步會從使用的角度來學習。

          # re: Extjs學習筆記 --- 初篇  回復  更多評論   

          2008-01-14 02:33 by 過河卒
          很喜歡這樣的研究思路,我也是沿這個思路看的。實用的話用到再說 呵呵

          # re: Extjs學習筆記 --- 初篇  回復  更多評論   

          2008-03-07 20:32 by owenf
          同樣剛開始看這個東西,不過確實沒心情看亂成一堆的代碼

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          Copyright © 久城

          主站蜘蛛池模板: 太白县| 江华| 海宁市| 南澳县| 阳东县| 正镶白旗| 当阳市| 平安县| 宁河县| 平利县| 泸定县| 西畴县| 石渠县| 安宁市| 红河县| 汉源县| 耒阳市| 宣城市| 五台县| 澎湖县| 鹤庆县| 磐安县| 拉孜县| 黎川县| 木里| 东乡县| 阿拉善左旗| 梨树县| 临泽县| 木兰县| 安顺市| 尚义县| 灵宝市| 富源县| 区。| 阿克| 五原县| 新乐市| 临城县| 岳西县| 长宁区|