項目結構
- 前端
ExtJS 4.2.1 - 后臺
Spring MVC 3.2.8 + Hibernate 4.1.7 - 數據庫
SQL Server
模塊
- View層由ExtJS自己的MVC構成
-- Model用來承載后端傳輸來的數據
-- Store相當于代理,實際工作由后端的Controller完成
-- View就是實際的視圖(本項目中只有兩個頁面:登陸頁面,主頁面.類似于后臺管理界面) -
Model層和Controller層由Spring MVC 構成
-- Controller 用來處理請求,這里只用來傳輸數據,不做視圖轉發
環境項目結構
以我現在的了解,這個項目采用的是一個特殊的"MVC"結構,Spring MVC是核心組件,交互過程如下圖
交互過程
交互過程
- 前臺點擊觸發事件,通過store發送請求
- 根據請求地址,Spring MVC Controller開始處理請求,在這里進行查詢參數設置(最終將這些參數附加到一個model上,通過它進行查詢)、model對象的修改、添加、刪除以及邏輯關系處理
- Controller使用Service層進行真正的數據操作,而Service又是對DAO層的一個封裝,隨意最終數據操作都是在DAO層完成。
- DAO層中進行sql語句查詢,使用上面傳來的model對象,抽取其中的參數設置查詢參數并將查詢到的結果封裝成model組返回。(Hibernate在這里起作用)
需求
還是挺復雜的,我參加時已經要開始三期了,表都有近百張,整個項目的結構已經確定了,這次給我分配給我一個任務,業務邏輯是這樣:
用戶點擊退貨菜單,顯示退貨界面,新增行,點擊材料編號,彈出材料查詢界面,用戶選定一條記錄后,關閉彈出頁面,自動填寫其他字段。用戶輸入退貨數量后,點擊保存,完成退貨操作。
用戶點擊退貨報表,顯示退貨報表界面,可通過組合查詢篩選結果。
這里最復雜的地方是材料查詢頁面,因為是退貨,只有入庫之后的材料才需要顯示,而有些材料根本就沒有入過庫。所以需要設置查詢,根據兩個表的關系,做的查詢語句的大概內容是:
select cl.no,cl.name........
from cailiao as cl
right join
(select rk.cailiaono as cailiaono,sum(rk.volume)
from ruku
group by rk.cailiaono) as rkcl
on cl.no=rkcl.cailiaono
where 1=1 and...查詢參數
表關系.jpg
根據這個關系,在DAO、Service、Controller中添加相應的方法,這雖然邏輯復雜一點,但是確定之后就很好弄了,坑爹的在ExtJS上
血淚史
- 前兩天
開發用的myeclipse,tmd對js的支持基本為0,就因為錯別字折騰兩天(嘗試用過外部編輯器,尷尬的是在外部編輯后必須在myeclipse中打開才會更新) - 中間幾天
被復雜的頁面結構搞暈,已經有點慌,開始亂寫了,莫名其妙能跑了,結果一起檢查發現邏輯搞錯了,改吧! - 又是幾天
這下徹底慌了,亂上加亂,寫到自己也不知道在寫什么 - 最后兩天
意識到錯誤,詢問延期兩天影響如何,承認錯誤。重寫,兩天后完成。
ExtJS 的坑
-
報錯提示
別人家的報錯是這樣的
JQuery報錯
ExtJS的報錯是這樣的,錯誤原因就是缺了個標點,這去哪找去(絕望),這報錯信息一點用都沒有
ExtJS報錯
-
莫名其表的錯誤
因為是根據之前的頁面寫的新頁面,再三檢查之后,根本沒問題,這里就是會報錯(不影響邏輯和執行)
image.png - 竟然沒了。。看來最大的坑就是報錯機制了,從中找不到任何有用的信息
這個項目的總體架構挺好,以我的認知,要是有單元測試就好了,現在的冗余代碼特別多,但是不敢改,稍微一改就會有問題。
了解還太少,如有錯誤請指正