等下要去坐車,今天就不繼續唠叨開發過程了,來談一下普遍比較關心的後台語言問題。
學習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開發基礎的,不會太難。
以上粗略的介紹了將本示例修改為不同語言的版本的方式,如果有什麼不明白的地方,歡迎給筆者留言,共同探討不同語言的開發方式。如果有興趣將本示例修改為不同語言版本的,而無從下手的,也歡迎與筆者聯系,共同把本示例修改為不同語言版本的示例,供大家學習。