Angular、React、Polymer
我解釋一下為什麼Angular能夠這麼火,它主要解決的是哪個層面的問題呢? 它解決的是快速開發的問題。 我們知道,有很多b/s化的產品,其本質還是像c/s,只是把這個c做到瀏覽器裡來了,這樣的一些系統,它免不了要在瀏覽器中寫大量js,然後使用某種ui框架,它的協同開發人員數量會相對較大,代碼量也會很多, 在這類系統的開發過程中,從成本的角度要解決兩個問題:
怎樣讓開發過程儘量快?
怎樣讓變更成本儘量小?
解決這兩個問題的辦法是元件化。 所謂元件化,在傳統軟體領域可能會有一些成熟方案,但是拿到Web,尤其Web前端這個層面,基本沒有一種通用方案。 元件化並不僅僅要解決「控制項」這個層面的問題,還需要把業務資料和邏輯也做規約,理清他們之間的關係,而Angular「碰巧」在這個方面很有説明,它把UI和業務邏輯隔離得乾乾淨淨,模組之間使用依賴注入來維繫關係,易測試,可複用 ,作為架構師,也可以比較容易地對整個專案有所把控。
我們看到很多人跟風學Angular,有很大一部分並未抓住其實質,而是被一些邊角優勢所吸引,因此用的過程中各種痛苦,如果能夠先認識到它的本質優點所在,並且認識到它確實適合自己的專案,一定能得心應手,左右逢源。
當前Angular版本中也是存在一些問題的,我之前寫過兩篇,近期可能還會寫一些來說明。 Angular官方也意識到這些問題,他們規劃了2.0版本,這個版本的思路非常好,有興趣的人建議你關注一下,我稍後也會就此事發一篇評論博客。
現在我們再來看看React。
為什麼很多人被React吸引呢,因為他從另外一個層面解決元件化的問題,而這種方式可能對前端來說更友好,而且還能夠在服務端解析範本。 喜歡React的人常常用它的虛擬DOM、精確更新來打擊其他框架,誠然,它在這方面做得非常好,但並未高到影響全域的程度。 這是什麼意思呢,它是一個主要針對DOM元件的庫,如果用於完整的大型產品解決方案,還是有所欠缺的,它的優勢集中在上層,但其實從宏觀角度看,這一層的效率並沒有那麼重要,比如說你是一架很精巧的挖掘機,自帶各種分揀功能, 但很多時候,大家是很粗暴地去挖東西,就像挖煤那樣,你在細節上有多麼高效並不重要,只有在一些需要精確控制的場景下,優勢才能發揮出來。 況且,當Web Components出來之後,虛擬DOM是有很多沒法處理的問題的,而其他框架改進資料繫結的效率之後,也能夠把這方面的差距縮小很多。
雖然我說的都是缺點,但它的實現方式確實別致,值得一看。
最後看Polymer吧,它是以Web Components的理念為核心的,我本來想說點什麼,但覺得自己對它的理解還不深刻,很可能誤導人。 算了讓別人說吧。