jQuery UI 有哪些缺點?
我所能想到的是剝奪了前端設計人員的設計空間, 還有什麼,感謝大家補充~!
jqueryUI不好用, 該落伍, 我不知道這個論點是如何出現的,
但是我敢說執有這個觀點的, 50%的人沒用過, 40%的人只是把jqueryUI當做現成的純UI庫來使用, 只有剩下的10%是研究透了jqueryUI最後因業務的需要投身於新一代框架麾下的.因為在你沒見過的地方, jqueryUI以你未曾想過的形態做了很多不可思議的東西.
舉幾個適用場景:網站方面: 大部分開發流程還是html+css+js的傳統一套, 在這個層面上所有框架一視同仁, 純jquery手擼的效率已經足夠快了, jqueryUI作為輔助UI組件, 雖然樣式比起bootstrap是要low點, 但凡設計有點想法, 最後樣式不都是要統一覆蓋重寫么.
小型應用: 也可以理解為簡單組件, 基本沒有比jqueryUI快的, 這是人家的老本行, jqueryUI本來就是個UI庫, 所有默認組件最終都是繼承自Widget基類, widget組件的數據與ui交互方式都可以歸結為三種: 設定初始options; 修改options; 通過options修改view. 本質上就是數據單向綁定,
在此基礎上約定規則, 可以構造出新的優秀特性.
也因此jqueryUI得天獨厚, 只需引入核心文件widget就能在jquery環境下構建任何應用. 此環境下它絕對是開發速度最快的前端庫之一.大型應用: 這是jqueryUI真正的短板, 因為組件庫的設計只到了組件這層, 更高更抽象的框架層面, jqueryUI根本沒有去涉及,
但是並不是說沒有辦法構建巨型web應用,
以jqueryUI為框架選型的應用, 需要實現應用的高度抽象, 從高層的組件里調用底層的組件, 並通過回調等方式來實現低層數據反饋回高層.
比方我們做一個編輯器, 場景有許多鍵值, 其中一項鍵值需要在某個dialog里編輯, 那麼我們在場景層調用dialog彈窗時, 給options傳入一個callback, 當彈窗編輯完畢, 再將綁定在dialog上的數據通過callback傳遞迴場景組件就實現了組件通信.即是, 如果能力足夠強, 你可以用組件構造的方式層層堆疊實現一個巨型web單頁應用.
就我目前的經驗來看, 幾十萬行還不是上限.
但這幾十萬行的代碼, 已經極其難維護了.
widget組件嵌套, 調用棧過深, 到處充斥著難以摸清意義的callback,
讓維護者舉步維艱,所以說,
jqueryUI的問題只在於大型應用的可維護性上,他雖然將jquery的從單純的dom操作上擴展到ui組件層面,
但是卻始終沒有達到應用框架的層次, 這也是jquery的真正短板.但是如果不能理解其真正癥結, 只是跟風覺得落伍, 拋出樣式老土太丑的觀點的, 我只能理解為你根本沒理解jqueryUI到底是什麼..- 默認的theme字體選擇了Verdana,官網上的控制項展示普遍感覺沉悶,缺乏現代感,大多數現在的網站用了JUI都不得不定製一番
- 庫設計的層次關係決定了你要用accordion必須導入其它的base component,沒有獨立的plugin使用靈活,代碼尺寸偏大
我不知道你講的「剝奪了 前端設計人員的設計空間 」是怎麼講的,jQuery UI有很大的自由度。
作為一個在不同項目都用了jQuery UI的前端說幾句,用jQuery UI並不是為了用它的UI,而是它那些封裝良好的組件,比如draggable、sortable、resizable等。jQuery UI的UI早已過時,但它的組件卻依舊好用得很,基本無bug,API設計合理,基本能滿足你所有需求,文檔齊全且易懂。如果讓我自己寫這些組件,我認為肯定寫得沒它好(渣渣是有這個苦惱的),但UI嘛 改起來就輕鬆得很。如果你覺得UI是個問題,那你肯定不是個合格的前端
UI太落伍了,1萬年沒動過,還是N年前的那一套css,簡直看瞎眼,沒法用。
我覺得很好用,樣式的話其實可以自己修改啊……暫時除了easy ui,感覺沒有哪個可以真的與jq ui相比
這些本來就是寫來改的,不斷去覆蓋它的css代碼根據自己需求寫出新樣式就是了
缺點就是太丑
這種東西是這樣的,如果你夠牛叉,可以機器語言解決一切,自由度高,效率高,安全性高。可惜大部分人做不到,所以選擇適合的才最重要,犧牲一部分的自由度去獲得更高的效率,並保持平衡,難道不是真理么?
jQuery UI丑嗎?我沒用過,但是我覺得jQuery UI Bootstrap很不錯,正在研究
不知道該說自己css水平不夠還是JQuery UI的缺點,JQuery UI自由度對我來說很高,也許是太高了以至於對我這樣一個後台開發人員來說擺弄出一個漂亮的前台還是太難。
推薦閱讀:
※為什麼有很多人明明基礎都不會,卻一直在討論jQuery?
※jQuery 解決了怎樣的問題?
※如何學習jQuery?
※jQuery 為什麼要劃分.bind()和.live()?