一般的mis應用,基本上采用左邊樹布局,右邊操作區域的布局方式,Extjs更是經典布局方式。
Extjs4.x,有兩個方式可以實現右側的center區域的加載,一種是autoload,一種是iframe方式,最近對這兩個方式比較糾結,不知道到底該用那種方式好,晚上做了下詳細的比較,我的選擇是IFrame,雖然很多人提倡用autoload方式。
Autoload和iframe方式的本質區別
1.AutoLoad 只需要加載一次ext-all.js、css等核心庫文件
2.iframe方式需要在每個頁面都加載一次,這對於ext這么龐大的庫不是件好事,但是傳言可以通過請求重定向,讓瀏覽器只從緩存加載核心文件,待驗證
先撇開上面這個問題,采用iframe方式有什么好處呢?
1.隔離關注面,由於iframe內的模塊基本是脫離程序“外殼”獨立存在,能獨立執行的,如果有問題,我們只需要聚焦即可
2.變量問題,采用autoload,應用類似單頁面應用,尤其是團隊開發,變量問題是個大問題,而iframe變量是獨立的,很少重復
3.js mvc的開發方式,官方提供的js分包方式,個人認為小應用尚可,但是稍微大一點的系統,js很多,那無疑又是一場惡夢
官方推薦方式 | 我的做法 | |||||
app | User | |||||
controller | controller.js | |||||
userController.js | model.js | |||||
orgController.js | store.js | |||||
model | view.js | |||||
userModel.js | ||||||
orgModel.js | Org | |||||
store | controller.js | |||||
userStore.js | model.js | |||||
orgStore.js | store.js | |||||
view | view.js | |||||
userView.js | ||||||
orgView.js |
團隊開發中,一個是方便閱讀,容易找到對應的js,方便排錯
當然如果按照我的分文件夾的方式,也會帶來一個損失,那就是js的重用問題,這個好像和extjs有的違背,呵呵,但是可以將一些公共的model,store放到單獨的common文件,折中解決問題。
4.iframe可以方便的加載一些非extjs的應用頁面,當然autoload也是可以實現的,只是需要做跳轉
5.iframe最大好處還是團隊項目的開發
6.隨着模塊的增加,autoload可能會帶來其他問題
當然用了iframe方式必定也會犧牲一些東西,像模塊重用、實時換膚等
以上是我選擇iframe的理由,具體是否適合,還需要驗證,以上只是我的幾點猜測,還未正式運用到實戰中,所以歡迎各位了解extjs的大牛批評指導