淺談我對幾個Web前端開發框架的比較

2012-01-01 
zk框架有什麼缺點嗎?
最近在學zk框架,感受它很強大。好比:短短几行代碼,就能夠把數據導入成PDF,EXCEL,WORD等格式的報表。但願對ZK比較熟悉的牛人談一下它的缺點,幫助我更好的瞭解它。謝謝。

-----------------------
我我的以爲zk主要是一個效率問題,由於它全部的頁面效果控制都須要通過服務器,舉個例子,點擊一個按鈕後彈出對話框,zk完成須要這麼幾步:
1.點擊按鈕-->發送ajax請求(Aurequest)--->服務器端java程序接收到請求-->返回響應-->瀏覽器端接受到響應,調用與服務器端組件相對應的js組件,展示效果。
即便是最最簡單的一個頁面效果,都須要這麼多步,而傳統方式上,不少時候,能夠徹底交給js處理,不須要與交互,這就是開發方便的代價。
2.組件擴展不夠方便,若是須要擴展本身的組件,你必須清楚zk的內部運行機制,特別是協調java端和js的組件同步問題,都很麻煩,而通常使用zk,就是看中了用它開發,能夠徹底不寫js 。

回LS,能夠經過設置spans屬性開合併單元格。

********************************************************
強調一下,這篇日誌主要仍是針對想學前端開發的新朋友寫的,不是說我有什麼獨特看法,而是比較客觀的狀態,就各類框架的異同和應用場合,須要注意的地方作簡單描述,不作具體深刻分析,有的地方比較抽象,對於抽象之處你們能夠到網上或各大高手博客中深刻學習,固然也能夠與我繼續探討。

一直以來對Web前端開發興趣頗深,用過一些框架產品。在JavaEye上看到一些剛接觸前端開發朋友的疑問,猶豫這些產品的前景利弊,不知從何入手。想把本身的一點經驗分享給你們,若有不到位之處請一塊兒來糾正。 

jQuery
1. 絕對的萬金油,核心js只有50K,佔用帶寬小,門戶網站、管理系統,用在哪均可以。 
2. jQuery是對js底層dom操做封裝最薄的一個框架,沒有大量的專有對象,多爲提供函數進行dom操做。準確的說,它不是偏重於富客戶端的框架,而是側重於對js dom編程。下面幾種纔是完整的富客戶端的框架。
3. 我認爲它最大的三個亮點,一是支持CSS3的大量選擇符,想定位或選擇一個html元素簡直垂手可得。二是靈活便捷的Ajax請求和回調操做。三是事件綁定功能,內部封裝了不少事件,想統一爲一個頁面上的一些元素添加事件很方便,這也提升了複用性和可維護性,避免了頁面中出現大量的html屬性。合理的編碼可使html與js, css分離開,便於維護。 
4. 此外它也封裝了不少經常使用的操做,例如節點的添加刪除、經常使用的動畫效果、邏輯判斷比較等等。避免了直接使用dom api進行繁瑣的操做。 
5. 自己提供了可擴展的函數,能夠本身編寫插件與核心jQuery對象進行集成使用。這也是經常使用的手段,只要你理解js面向對象編程,熟悉jQuery API,就能寫出不少定製的插件,複用在各類地方。 
6. 至於jQueryUI,與其餘框架不同的地方在於,它不多用js去生成html,而是把現有的html經過jQueryUI的API加工成想要的效果,關於這點是好是壞,我以爲就是見仁見智的問題了,沒有必要爭論什麼。 
7. 新生的jQuery EasyUI不錯。 
8. 若是從此的更新都保持如今這種模式,我認爲它的前景很樂觀,何時javascript完蛋了才輪到它玩完。 

ExtJS
1. 一整套帶有UI的js庫,封裝得不少,很厚,核心js就600多K,這麼大的東西門戶網站固然就別想了,裏面的效果固然也不會運用到門戶網站,因此它是專門爲管理系統而生的。由於局域網不會有帶寬問題。 
2. 它與jQuery不一樣,基本上是純用js來生成html的,頁面裏只需引入各個ExtJS庫和你本身寫的js,不會出現不少html內容,body裏基本沒什麼。因此優化就顯得重要了,否則會嚴重浪費資源。 
3. UI就不說了,你們都承認,原本就是爲UI而生,它能夠作出來桌面級程序的效果。通常來講,一個管理系統的項目若是用Ext,基本就從始至終都是Ext作了,不會像jQuery那樣,哪想要了就加在哪,很隨意。Ext更像一個總體(雖然它也能夠拆開用,不過麻煩,不建議)。 
4. 提供了對其餘js框架的適配,像對jQuery, prototype等。沒實際應用過,就不說了。 
5. 理解js面向對象編程在ext中很重要,若是你以爲用jQuery時瞭解簡單的dom和css便可,那你在這就吃大虧了,Ext到處離不開對象的概念。 
6. Ext的UI開發相似C#,有不少控件。不一樣的是,你要所有本身手寫,因此開發量較大。如今雖然有Ext Designer可視化工具,但其效果並不很好,生成的代碼有的每每不是想要的,不易維護,真作起來仍是本身寫更方便。 
7. 團隊開發時,必須保證作UI的人每人都會Ext,並且深刻應用過,由於Ext項目是總體,不適於參雜html替代。 
8. Ext項目在IE系列瀏覽器上不可用,至關卡,我想這不是Ext自己的問題,所謂內存泄露等問題如今早已解決了,並且不是關鍵所在。我開不少網頁同時用IE8看jQuery.net官網時有時也會卡,試想他們官網確定作到很好的優化了吧,jQuery既是如此,況且Ext。反觀其餘瀏覽器,FireFox, Chrome等瀏覽Ext項目都很流暢,因此應該是瀏覽器對js解析不一樣形成的。 
9. 版權問題,Ext運用在商業項目中是收費的。 

Flex  [本身也是在學習中,不敢妄言,之後深刻應用後再作補充]
1. Adobe平臺的,基於ActionScript實現,用在哪都行,但偏重於內網管理系統,用在門戶網站就至關於在線玩Flash遊戲,loading... 
2. 與Ext不一樣,它有健壯的可視化開發工具Flash Builder,能夠同C#同樣進行拖拽佈局,生成一種xml,也便於維護。 
3. 編譯後生成swf文件直接嵌入html便可,提升安全性,瀏覽時同flash,須要flash player。 
4. 與Ext相同,也是屬於一個總體,有豐富的控件庫。 
5. 這條純屬我的觀點,HTML5不支持插入對象,也就意味着不能插入swf文件,難道Flex就完蛋了?雖然HTML5不支持Flash是客觀事實,但HTML5的統一爲時尚遠,各大瀏覽器對HTML5的支持,Adobe是否會有對策,這些會怎麼樣如今都很差說,HTML5與HTML4並行應該會有很長一段時間,至少Flex在如今是一個名列前茅的好產品,因此我選擇了它。 

SilverLight
微軟平臺的,主要是應用在微軟系列的語言中,包括CS與BS架構。一樣,除了jQuery,Asp.net也不適合與以上等框架集成,由於Asp.net是事件驅動,這些框架都是爲消息驅動而生的,勉強應用只會事倍功半,喪失.net自己的優點。 

js面向對象編程我一直在提,其實並不難理解,關於這點應該學習下,頗有必要。它涉及到代碼複用、功能擴展、對象繼承、閉包、優化等不少問題,能省去很多編碼,便於維護,還能不改變框架源代碼而實現不一樣的功能。

但願能給剛走進前端開發的朋友一點幫助。 
相關文章
相關標籤/搜索