Facebook的Web開發三板斧:React.js、Relay和GraphQL

2015-02-26 孫鏡濤  InfoQ數據庫

Eric Florenzano最近在本身的博客上發表了一篇題爲《Facebook教咱們如何構建網站》的文章,他認爲軟件開發有些時候須要比較大的跨越,而這將會在2015年再次上演,主角們則是Facebook的React.js、Relay和GraphQL。服務器

 

Eric Florenzano在該文章中提到:2003年Brad Fitzpatrick發佈了Memcached,由此開啓了LiveJournal架構的時代;2004年Google發佈了MapReduce論文,由此誕生了Hadoop並開始風靡世界;2007年Amazon發佈了Dynamo存儲系統,讓咱們知曉瞭如何經過線性擴展的方式讓數據庫和應用程序一塊兒工做,並致使了Cassandra、Riak等數據庫的產生;2010年Twitter教會了咱們如何經過客戶端模板讓服務器端變成一些簡單的API,並引起了Web應用的又一次大轉變;2012年Google發佈了Angular.js 1.0,並最終成爲流行的Web開發框架,這一切都有一個共同點,那就是:公司或者創業團隊從生產中獲得了沉痛的教訓,從失敗中找到了向前的出路,而後在將本身的技術突破共享出來的時候引起了一系列的變革。Fitzpatrick相信,在2015年Facebook將會經過React.js、Relay和GraphQL三把利劍引起Web應用開發的另外一次跨越。架構

 

Fitzpatrick作出如此判斷的理由主要是基於Facebook的員工在一些演講中所透露出的Web開發理念。例如,Pete Hunt在2013年的JSConf上作了題爲《React:從新思考最佳實踐》的演講,講述了Facebook之因此會避開某些「最佳實踐」的緣由,Pete Hunt認爲JS模板分離了技術,可是並無分離關注點,而框架並不知道如何分離關注點,解決這一問題的方案是組件,要充分利用JavaScript的能力,削弱模板的做用;Daniel Schafer和Jing Chen在2015年的React.js Conf上講述了Facebook如何經過GraphQL改變既有的數據獲取方式,讓開發者更容易地在React應用中獲取數據;Christopher Chedeau在《React:CSS in JS》中講述了在大規模使用CSS時所面臨的問題以及如何經過JS來解決。框架

 

總的來講,Facebook提出的Web開發理念能夠歸納爲:將應用分解爲一個個獨立的組件,與該組件相關的樣式、標記、驗證以及數據要求都放到組件定義的內部,對於自我渲染所需的全部數據每個組件都有明確的聲明且保存在該組件內部,同時對於哪些行爲會改變組件的狀態,組件狀態改變以後會有哪些反應也要有明確的定義。經過這種方式編寫的組件可以封裝它自身的邏輯,使得組件高內聚,組件之間低耦合,加強了複用性,同時也下降了開發人員的運維難度和複雜性。運維

 

毫無疑問,Facebook提出的技術與理念對於大部分Web網站開發團隊而言仍是有必定借鑑意義的,其中的思想也值得咱們深思與學習,可是Fitzpatrick的判斷是否真的會實現,Facebook的React.js、Relay和GraphQL是否會引起Web開發的再一次變革,只有等待時間來驗證了。oop

相關文章
相關標籤/搜索