等下要去坐車,今天就不繼續嘮叨開發過程了,來談一下普遍比較關心的後台語言問題。
學習Ext JS,筆者一直強調學習的中心思路是“介面與資料是分離”。只要好好掌握這個思路,深入瞭解Ext JS的運作過程,就不會為後台語言使用什麼而困擾了。可以說,只要思路明確,要將一個Ext JS項目遷移到不同的後台語言平台,那是輕而易舉事。下面就以本樣本做一個簡單的講述。
如果你放下語言的包袱,堅持把本樣本的文章看完,會有一個感覺,就是用戶端的指令檔和後台語言的結合檔案,只有一個,就是首頁index.cshtml,如果把該檔案裡的指令碼都抽離出來,基本上,Ext JS與開發語言平台就沒任何關係了,把Scripts目錄複寫到任何語言平台項目,都可以直接使用,修改的地方基本就是地址。如果使用Ext.Direct,這個就更徹底了,基本不需要做任何修改,後台語言有對應的方法就行了。如果清楚這一點,就好辦了。
例如,要將本樣本修改為Java版本的,如果Java架構不支援認證的驗證,就把首頁面分割成兩個檔案,一個專門是登入用的,一個是登入後跳轉到的頁面,這種方式估計熟悉Web開發的已經是家常便飯了。
在Ext JS中,主要的資料提交方式有三種:
1. 表單形式提交,該方式雖然也用Ajax方式提交,但是,背景處理與基本的表單提交形式是沒有任何區別的,因而,背景資料處理方式,沒什麼難度,你懂的!不懂?這……好好補補HTML知識吧。這個最好的樣本就是登入視窗的提交,可以嘗試用自己熟悉的語言做一下練習。
2. Ajax形式提交,這裡的例子就是使用者登入裡的重設密碼了,雖然資料格式不固定,但是提交參數是自己或項目已經定義好的,背景資料處理方式與處理表單提交的資料區別不大。
3. Store同步資料的提交方式,只要定義好Writer,使用同一種資料提交方式,那麼後台資料處理方式是基本一致的。例如使用者管理裡的添加、編輯和刪除操作,提交的資料都要從data關鍵字裡提取,然後需要通過伺服器端JSON對象的parse方法將提交的資料轉換為JSON數組,再提取出具體的資料對象處理。Java的處理基本可以參照書中1.2.6節的方式進行處理。其它語言則可尋找相應的JSON庫來處理。
在Ext JS中,資料的返回格式也是基本固定的,在樣本中,目前的返回格式是兩種:
1、 表單的錯誤資訊:
{
success : true 或 false,
errors : {
field1 : "錯誤資訊",
field2 : "錯誤資訊",
...
}
}
2、 其它資料
{
success : true 或 false,
total : 資料總數,
data : [...],
Msg : "錯誤資訊"
}
在樣本中,無論是Store的同步操作還是Ajax資料的提交,都使用了第2種資料的返回格式,該格式基本是通用的。
清楚了Ext JS資料提交格式和返回格式,就知道如何提取資料和返回資料。只要按格式正確返回資料,Ext JS就能正常運行,不受任何後台語言的影響。至於在後台,使用什麼語言,什麼資料庫,都沒問題,這些都是開發人員已經掌握的技術,餘下的就是根據格式返回資料。因而,要修改本樣本也不難了。
例如,要顯示使用者資料,無論資料表格是什麼結構,你從資料庫中把資料提取出來後,根據格式2組織好資料返回就行了。你說你不懂怎麼從資料庫提取資料?這……這,我也教不了。
要添加使用者,先根據提交格式把資料提取出來,然後使用自己的資料庫添加資料方式把資料添加到資料庫,根據資料返回格式2,把成功添加或添加失敗的資訊返回用戶端,就是這麼簡單。編輯和刪除的基本步驟也是這樣的。
至於許可權的控制,各種語言都有自己的方式,最簡單的就是在各操作方法頭部進行驗證,如果驗證發現不符合許可權要求,那就根據資料返回格式2返回一個success為false,Msg資訊為“您沒有許可權訪問”的資料就行了。
資料處理方式清楚後,餘下的就是要讓Ext JS各操作的資料提交地址與伺服器中的方法對應上,這個有Web開發基礎的,不會太難。
以上粗略的介紹了將本樣本修改為不同語言的版本的方式,如果有什麼不明白的地方,歡迎給筆者留言,共同探討不同語言的開發方式。如果有興趣將本樣本修改為不同語言版本的,而無從下手的,也歡迎與筆者聯絡,共同把本樣本修改為不同語言版本的樣本,供大家學習。