Extjs4循序漸進(一)——開始Ext


  前言

  做前端開發也很長時間了,從寫基本的JS到JQ,從easyui、jq-ui等簡單的UI插件到自己寫插件也經歷過不少。目前因項目需要,要用到Extjs做前端,於是用了最新的4.0.7版本。雖然以前也接觸過Extjs,但在一段時間的開發過程中依舊感覺到各種無力,特別是在Extjs4.X版本改動較大的情況下,很多東西已經不能只靠百度去尋找了(找到也沒用)。在網上關於Extjs4.X的東西少之又少,要么就僅限於官方的那幾個demo。在同事和朋友的慫恿下,小弟不才願意將開發過程中所學到的,用到的,一一記錄下來,跟大家一起分享。同時也希望通過博客園能吸引到大牛,幫助小生解決一下一些頭疼的問題。

聲明:文中有部分資料是來源與網上查找,若是有轉載聲明則本人會注明,若沒有,則是無法獲知來源。本人不接受任何形式的跨省。

  國際慣例先獲取開發包

         首先在http://www.sencha.com/products/extjs/download/頁面,點擊“download for Ext JS 4.0.7”下載ext開發包。

         下載后解壓,亂78遭的東西忒多了,大概的解釋下:

  • builds目錄是Extjs壓縮后的代碼,體積更小,加載更快。
  • docs是Extjs的文檔,包括Ext的Api,必備工具。
  • example是官方的示例,學習就從研究這里面的代碼開始。
  • locale是多國語言包,ext-lang-zh_CN.js是簡體中文。(在項目中如果覺得開發包臃腫,可以把除了zh-cn外的都刪除)
  • overview是Extjs功能描述。
  • pkgs是Extjs各部分功能的打包文件。
  • resource是Extjs中要用到的圖片和樣式表。
  • src目錄是未壓縮的源代碼目錄。
  • bootstrap.js是ExtJS庫的引導文件, 通過參數可以自動切換ext-all.js和ext-all-debug.js。
  • ext-all.js文件是ExtJS的核心庫,是必須要引入的。
  • ext-all-debug.js文件是ext-all.js的調試版。

  新特性

既然要用新的版本,那必然有用新版本的意義。Extjs4.X的版本為我們提供了什么新的便利呢?

 

1 動態加載和類定義

Extjs4.0引入了Ext.define方法,可以通過類的字符串名定義和繼承類,這就避免了由於類不存在而報錯。類管理器會自動檢查類之間的依賴關系。示例:

Ext.define('MyDataModel',{
        extend: 'Ext.data.Model',
        fields:[
                {name: 'id', type: 'string'},
                {name: 'name',  type: 'string'},
                {name: 'email',  type: 'string'},
                {name: 'phone',  type: 'string'}
               ]
});

以上代碼聲明了一個叫'MyDataModel'的類,他繼承了Ext.data.Model。如何調用呢,再看下面代碼: 

var myStore = Ext.create('Ext.data.Store', {
    model: 'MyDataModel',
    proxy: {
        type: 'ajax',
        url : 'data.xml',
        reader: {
            type: 'json',
            root: 'data'
        }
    }
});

myStore我們可以理解為一個數據的存儲器,以上的代碼可以理解為“從data.xml這個路徑獲取了json形式的數據,數據的根節點為'data'”。

大家應該可以看出來了,Model就像是定義了一個空表,Store為這個空表填充了數據。具體的使用,會在Grid的章節中講到。

 

2 強大的圖表和圖形

具體的就不述說了,可以在example/charts這個路徑下看到很多demo。常用的柱狀圖,餅狀圖,波形圖,甚至還有三維圖形都有。簡單的截一張圖:

順便值得一體的是,如果部分圖形或者其他demo看不到或報錯的話,請用IIS建一個虛擬目錄,將demo都放進虛擬目錄中去。

 

  不一樣的HelloWorld

  好吧我實在是不想寫HelloWorld,但經過各種批評教育后,我表示深深的反省,HelloWorld是程序員的靈魂啊,贊美HelloWorld。

  首先引用JS:

<link rel="stylesheet" type="text/css" href="../ext-4.0.7/resources/css/ext-all.css" />
<script type="text/javascript" src="../ext-4.0.7/bootstrap.js"></script>
<script type="text/javascript" src="../ext-4.0.7/locale/ext-lang-zh_CN.js"></script>

bootstrap.js會自行引用ext-all.js文件。接下來貼JS代碼: 

<script type="text/javascript">
         Ext.onReady(function(){
                   Ext.MessageBox.alert("Hello World","Hello World!")
         });
</script>

效果圖: 

 有神馬不一樣的?沒坑爹,不一樣的在下面。申明一個json對象:

var config={
           title:'HelloWorld',
           msg:'確實有點不一樣的HelloWorld'
  };

然后將這段替換剛剛的alert()方法:

Ext.MessageBox.show(config);

運行后看到結果的同學請鼓掌。 

  聰明的同學或許已經想到了,json是常用的數據傳輸手段,而Extjs支持json配置的方式,那么前台只需要放幾句簡單的代碼,就可以通過ajax的方式用后台代碼控制前台的頁面輸出的內容。關於該應用的強大我們會在后面慢慢的體現。

 報錯腫么辦?

最后教給大家一些調試的方法,前端調試最犀利的莫過於firefox的firebug,必備利器。

眾所周知,JS調試是一件惡心到爆的事情,常常因為漏寫一個符號、寫錯字母導致無法運行,而報錯信息又讓人無法正確定位錯誤原因,特別是用JQ,Ext等庫,調試起來更是讓人欲哭無淚。以下是我故意寫錯后IE報錯:

我頁面上根本沒有什么buttons,完全無法理解這是什么錯誤。

再用firebug打開,選中“控制台”: 

錯誤很明確了,位置也知道了。 

沒錯,我在頁面上亂打了個ccc,依賴於ext-all-debug.js將錯誤輸出到了控制面板上,我很輕易的找到了錯誤。回想一下你在幾千行代碼中找錯誤時抓狂的心情吧,表示能夠肉眼找出來的朋友肯定是“大家來找茬”的高手。

     順便值得一說的是,firebug控制台也可以自定義一些調試,代碼:

console.log("輸出在控制台");

運行后你會在控制台找到輸出的內容: 

以前相信很多朋友都是用alert()來彈出消息用以調試,在遇到循環輸出需要跟蹤每次循環的變化的時候,請問你們是不是一直左手大拇指敲空格呢?可憐下鍵盤吧,它是程序員的朋友。

 

  小結

本人文筆有限,內容也沒有什么大局觀,只是站在程序猿的角度上寫了些小技巧。從下個章節開始會以項目中的實例來講述Ext各個組件的使用以及與后台的結合應用(主要是MVC框架的后台)。有錯誤歡迎指正。

 

PS:頂一下湯姆大叔的深入理解JS系列,您是偶像~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM