爲何框架很容易就走上大而全的不歸之路?

這是偶五羣有人提的問題。前端


乍一看是,某個框架一出來,沒什麼人氣,只好什麼都本身作, 不斷補全本身,纔可能與已經武裝到牙齒的現有框架相較量。好比說jQuery初期,John Resig也本身寫了N多插件來充門面。java


但細想不是這樣的,絕對大多數人仍是喜歡一體化的解決方案,要來全棧式;DIY這種東西,東拼西湊不是通常人能玩不得過來,又或者是沒這財力要購得這一整套解決方案。 這狀況,就至關於jQuery 加 一打插件 與 EXT的區別。angularjs


參差不齊的插件還有許多問題,這個我就不展開了,這也是EXT爲何收費也能活得這麼滋潤的緣故。bootstrap


這是仍是同質的產品的比較,若是不一樣質,那更需重頭打造一遍了。由於不管用哪套方案,咱們都要求它們能知足咱們業務開發遇到的各類組件, 插件,控件。。。。後端


早些年是Prototype.js與jQuery,它們雙方以不一樣的方式來打造本身的世界。Prototype.js與OO走得近一點,能完美把後端那一套搬過來,利用設計模式,迅速堆砌它的UI庫。 基於Prototype.js的收費控件異常興旺。而jQuery則是以DSL面目出現,即使沒有控件,也能經過一次又一次爽快的鏈式操做,把設計稿還原出來。在這世上,新丁與菜鳥老是最多,所以jQuery的份額不斷上漲,不斷從Prototype.js那邊搶走高級開發者,這才漸漸有了一些與媲美Prototypejs UI庫的東西出來。 jQuery ui就是走大而全的道路,戰勝Prototype的大而全的UI框架。設計模式


如今時下流行的MV*框架,也基本沿着這老路,來擴張本身的勢力。緩存


若是拿人類的歷史來比喻。Prototype.js就是奴錄社會,夏商周通過八百年的發展,什麼東西也有了。 但最後仍是被封建社會取代了。jQuery就是比如封建社會。不管是什麼社會,人們仍是同樣要過活,所以必要的生產還要進行。 但依借的工具已經不同,在遠古,青銅珍貴得不得了,可能是木器石器;封建時代,青銅就很是普通,但人們更加喜歡用更耐用的鐵器。 Prototype.js用到手那一套東西,好比選擇器,特性偵測,事件系統,類, jQuery也同樣很多,但人家的選擇器不僅有ID與類與標籤,將CSS3那一套都囊括了。 特性偵測也是如此,並劃分一個模塊來專門斷定它們,依靠它們實現門面模式。事件系統比以前全部框架的更龐大,達到1500行的規模,什麼自定義事件,IE專有事件,事件代理,事件派發都支持了。 類做爲代碼組織的一個單元模塊,jQuery也在用,但它更喜歡使用IIFE來包裝成一個模塊。此外,Promise,緩存系統,無new實例化,經過innerHTML批量生成節點是先代所沒有的。這世界老是進步的。架構


MVVM呢?對不起,我不想提MVC。這是資本社會了。雙向綁定實現的同步機制,像工業大革命那樣極大地提升生產效率,代碼的維護性。 因爲是大生產,就有大生產的範兒。java早進入這時代了,留下了23個設計模式與分層架構與IoC等經驗。瞭解WPF框架的人都知道,就一個簡單的dependent property,就把設計模式這本書裏面的模式用掉一大半了。分析WPF框架代碼的話,簡直就是看一本設計模式的百科全書。這也一一應用到前端MVVM!knockoutjs, avalonjs這些框架裏面閃爍着後端長期熔鑄的晶華!框架


並非說舊的東西就一無可取。當你有了更好的東西,你還願意用舊的工具嗎?在框架發展的早期,尚未大而全,就不得不用舊的生產方式來應付。像angularjs就直接把bootstrap那一套東西包一層,作成它的指令。 小的東西還能包裝得好, 像grid這樣的大控件,想徹底嵌入它的觸發機制就到處漏底了。工具


並且時代不一樣了,人們利用新的工具從新打造來得更快。在古代,人們打造一把好刀須要終年累月。 如今有了3D打印,坦克一個月就造出來。另從殺傷力來講,後者威力更大。


所以與其說他們是走老路子,不如說它們在從新打造世界,一個嶄新的更好的世界!



PS:大而全並非最佳方式,以微核多插件的方式不斷提升暴光率,造成生態圈或許會更好。但馬太效應一般不會讓新生框架一下得逞(當前王者會圈佔大量資源與人才),所以從JAVA幾大框架的歷史迭代來看,也只有不斷膨脹膨脹,直到你們都看到它,纔有機會創建本身的生態圈,本身的王國,本身的世界。

相關文章
相關標籤/搜索