華麗的背後是枯燥的代碼,這就是程式員的杯具,把華麗帶給別人,把枯燥留給自己....下篇我們將討論對ExtJs認識的誤區,評估它是否適合用在你的項目中,並且弦哥會帶你走捷徑,正確的掌握ExtJs的開發調試方法,讓ExtJs的上手和開發不再糾結。
認識ExtJs
1.Asp.Net能用ExtJs嗎?
它是展現層的技術,與JS,HTML,CSS有關。至於伺服器端是.Net,還是Java,PHP等無關。
2.ExtJs適合什麼樣的項目?
按照官方的說法,ExtJs是給你拿來做B/S的傳統型應用程式的,並不適合做門戶網站。我個人理解,ExtJs比較適合做需要大量複雜介面布局和互動的資訊管理系統(MIS)。
3.ExtJs效率不行,好慢...?
確實,ExtJs做的複雜布局和互動的頁面,在IE6,7,8下非常慢,在IE9下也不是很理想,但在Chrome,FireFox等新一代瀏覽器中運行速度很理想。我敢說在同樣複雜的頁面配置和互動下,絕對比你用Asp.Net第三方伺服器控制項強幾倍。所以在目前情況下,你不得不強烈推介你的客戶使用Chrome這類的瀏覽器來運行你的系統。對於一般內部區域網路使用的資訊管理系統,這樣的要求是不過分的。
4.ExtJs效率問題的原因?
B/S程式,展現層的效率瓶頸在於3個方面:瀏覽器對Js的解釋速度,HTML DOM的渲染速度,記憶體釋放以及網路頻寬。隨著ExtJS的多次版本最佳化之後,這些問題都得以在一定程度的解決。特別以前讓人詬病的1M多的龐大JS庫的問題,在ExtJS4新的按需載入機制下已經完美解決。而其他問題往往和具體的瀏覽器有關,也不是Ext能解決的。事實上目前在Chrome瀏覽器下,我們用ExtJS做的系統響應速度已經快到了令人髮指的地步....如果要實現同樣複雜的介面布局和互動,我找不出能比ExtJS這個解解決方案更快的技術。
5.用ExtJS需要寫大量的JS代碼,會導致系統難以開發,調試,維護?
相對於習慣了簡單拖拽控制項的Asp.net程式員,ExtJs確實需要你掌握更多的基礎知識。但我們都承認很多需求並不是拖拽控制項能解決的,要想做一個真正拿得出手的應用程式,你不得不付出更多的努力,下篇我們會講如何正確的學習,開發,調試ExtJs。所以技術水平不好的技術團隊並不適合用ExtJs,用一些功能強大的第三方伺服器控制項,如DevExpress,Telerik也許是你們的更好選擇。正如也有很多難以維護的C#項目一樣,你不能怪C#垃圾,只能怪自己垃圾。就像玩Wow一樣,沒有垃圾的職業,只有垃圾的玩家....
6.公司,技術團隊和個人是否值得對ExtJs投入學習成本?
客觀的說你投入的是對Javascript的學習成本,ExtJs本身沒有太多你需要投入的。除非你覺得看英文API是一件非常困難的事情。而對Javascript的投入,從現在的技術發展趨勢來說,絕對是值得投入的...不幸的是大部分國內Asp.Net程式員對Js的掌握程度還停留在從網上扒段特效的水平...
7.ExtJs的介面看起來都一樣一樣的,審美疲勞...
沒有人阻止你對ExtJs的介面進行改造...事實上國外有很多用ExtJs做的應用你根本看不出來說ExtJs做的。而且在ExtJs4裡支援sass,可以非常方便的改變ExtJS的皮膚和樣式。
8.Ext.Net很好,我可以不用寫煩人的Js,用C#也能實現ExtJs的強大介面功能?
我想說更深的封裝只能讓你更難駕馭ExtJs,雖然Ext.Net也是開源的,但很難想象連JS都不敢碰,怎麼能用好Ext.Net。用Ext.Net就意味著你已經丟掉了很多ExtJs的優勢,還不如用第三方伺服器控制項...
9.選擇ExtJs的理由?
優秀的UI互動能力和功能強大的UI組件天生就是給資訊管理系統用的;
附送的皮膚樣式和成熟的布局,一定程度上減少了美工的投入;
文檔非常完善和好用;
已經很多年了,到了第4個大版本,無論是成功案例還是社區的技術討論都非常豐富,你可以輕易搜尋到自己遇到的問題;
開源和良好的物件導向結構,可以讓你非常容易的擴充和重寫ExtJs,實現自己想要的功能,也可以自己根據項目需求深度封裝成自己的組件;
多瀏覽器的相容性做的非常好,幾乎不用做任何修改,就能在目前流行的所有的瀏覽器下完美運行;
Javascript+HTML(5)做為WebUI開發的主流技術現在開來已經非常明朗,ExtJs發展形式一片大好;
從近些年來的ExtJs的版本升級可以看出,ExtJs的Team Dev是非常負責任的也是非常牛B的;
弦哥也在用...
總結:對於開發技術的應用,只有垃圾的選擇和垃圾的應用,沒有垃圾的技術。不加前提的對一個技術片面評價,是浮躁的;不深入瞭解就人云亦云那是愚蠢的...
下篇預告:
Asp.Net大型項目實踐系列第二季(四)ExtJs4 入門,開發,調試不完全指南
To be continue...