Facebook開源跨平臺前端佈局引擎Yoga

Yoga

 

隨着這幾年前端技術的崛起,做爲前端UI骨架的佈局系統也在其中佔據了愈來愈重要的位置。無論是在移動端、桌面端仍是Web端,特別是不一樣設備的屏幕大小和分辨率變幻無窮,如何構建良好的佈局系統以便應付這些變化已經變得愈來愈重要。前端

目前,各個平臺都有本身的一套解決方案。iOS平臺有自動佈局系統,Android有容器佈局系統,而Web端有基於CSS的佈局系統。多種佈局系統共存所帶來的弊端是很明顯的,平臺間的共享變得很困難,而每一個平臺都須要專人來開發維護,增長了開發成本。git

Facebook在這個問題上沒有少下功夫。首先,Facebook在React Native裏引入了一種跨平臺的基於CSS的佈局系統,它實現了Flexbox規範。基於這個佈局系統,不一樣團隊終於能夠走到一塊兒,一塊兒解決缺陷,改進性能,讓這個系統更加地貼合Flexbox規範。github

隨着這個系統的不斷完善,Facebook決定對它進行重啓發布,並取名Yoga。雖然目前還不知道爲何會給它取名Yoga,但從字面理解——瑜伽——咱們很天然地聯想起柔韌、舒展、變化等名詞,這個跟佈局系統的跨平臺特性彷佛不謀而合。藉助Yoga,開發人員不只能夠在React Native裏,還能在各個平臺上快速地構建UI佈局。bootstrap

Yoga是基於C實現的。之因此選擇C,首先固然是從性能方面考慮的。基於C實現的Yoga比以前Java實如今性能上提高了33%。其次,使用C實現能夠更容易地跟其它平臺集成。到目前爲止,Yoga已經有如下幾個平臺的綁定:Java(Android)、Objective-C(UIKit)、C#(.NET)。並且已經有不少項目在使用Yoga,好比React Native、Components for Android、Oculus,等等。框架

不一樣於其它的一些佈局框架,好比bootstrap的柵格系統或Masonry,它們要麼不夠強大,要麼不支持跨平臺。Yoga遵循了Flexbox規範,同時又將佈局元素抽象成Node,爲各個不一樣平臺暴露出一組標準的接口,這樣不一樣的平臺只需實現這些接口就能夠了。佈局

固然,Facebook不會就此止步。做爲一款跨平臺的佈局引擎,天然須要各個平臺的開發人員一塊兒努力來促進它的發展,因此Facebook把Yoga開源了。目前微軟已經成爲Yoga的貢獻者之一,他們不只修復缺陷,還爲Yoga帶來新的特性。性能

除了徹底遵循Flexbox規範,Facebook還計劃在將來爲Yoga加入更多特性,這些特性將超出Flexbox的範疇。spa

Yoga的源碼託管在GitHub上 ,有興趣的開發人員能夠在上面進行反饋。接口

https://facebook.github.io/yoga/開發

相關文章
相關標籤/搜索