組件化:搭建系統、智慧活動
目的:內聚性、耦合性、避免因業務引起重復勞動、協同合作、提高可維護性
組件化前提:制定標準,接觸耦合
第一代:YUI
太過于學院派。要求每個用這個程序員熟悉整套UI規范和使用規范。就是要熟悉YUI的CSS,HTML,JS,這樣才能用非常爽
第二代 ExtJS
ExtJS是踩著YUI的尸體走過來的,extjs比YUI進步在那兒呢,首先它表面上有一套漂亮的UI。這個實質上就是你不用寫CSS了,它幫你寫好了。另外你HTML也不用寫了,它也幫你寫好了。這不對啊,前端頁面怎么可以沒有HTML和CSS呢,extjs都幫你封裝到js里了
extjs用是很簡單,定制的話,還是改錯一處,全局。
被邊緣化
第三代:web component
shadow dom/custom element/template/import
這規范到不成熟,到處是坑
the end...
當然,組件化的時代已經開啟,為了填原生的坑,已經有無數勇士已經又踩著前者的尸體沖上來了
他們是:
Angular Directives
Ember Components
React Components
KnockoutJS Components
Vue.js Components
Backbone Components
CanJS Components
Famous Components
Anything.JS Components?
賀師俊:
之所以一直說對custom element持謹慎態度,是因為正如本問題所表達出來的,大多數工程師對組件如何設計劃分是缺乏經驗的。相對來說基于 is 屬性對原有html元素做擴展比較不容易出偏。
組件設計說到底是要做某種抽象。難就難在這種抽象要考慮很多的因素,比如適應UI設計師的建模、工程上的可維護性要求、常見用例和邊緣用例的矛盾、自定義組件和標準html元素的穿插交互、適應將來需求變化發展的可擴展性和可定制性……其中很多點是在開始設計開發時很難確定的,或者隨著業務發展經常會變化。這就是為什么組件領域比其他技術領域更容易出現抽象泄漏的悲劇。