非死book開源跨平臺前端布局引擎Yoga

jopen 7年前發布 | 12K 次閱讀 Facebook

非死book開源跨平臺前端布局引擎Yoga

隨著這幾年前端技術的崛起,作為前端 UI 骨架的布局系統也在其中占據了越來越重要的位置。不管是在移動端、桌面端還是 Web 端,特別是不同設備的屏幕大小和分辨率千變萬化,如何構建良好的布局系統以便應付這些變化已經變得越來越重要。

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

非死book 在這個問題上沒有少下功夫。首先,非死book 在 React Native 里引入了一種跨平臺的基于 CSS 的布局系統,它實現了 Flexbox 規范。基于這個布局系統,不同團隊終于可以走到一起,一起解決缺陷,改進性能,讓這個系統更加地貼合 Flexbox 規范。

隨著這個系統的不斷完善,非死book 決定對它進行重啟發布,并取名 Yoga。雖然目前還不知道為什么會給它取名 Yoga,但從字面理解——瑜伽——我們很自然地聯想起柔韌、舒展、變化等名詞,這個跟布局系統的跨平臺特性似乎不謀而合。借助 Yoga,開發人員不僅可以在 React Native 里,還能在各個平臺上快速地構建 UI 布局。

Yoga 是基于C實現的。之所以選擇C,首先當然是從性能方面考慮的。基于C實現的 Yoga 比之前 Java 實現在性能上提升了 33%。其次,使用C實現可以更容易地跟其它平臺集成。到目前為止,Yoga 已經有以下幾個平臺的綁定:Java(Android)、Objective-C(UIKit)、C#(.NET)。而且已經有很多項目在使用 Yoga,比如 React NativeComponents for AndroidOculus,等等。

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

當然,非死book 不會就此止步。作為一款跨平臺的布局引擎,自然需要各個平臺的開發人員一起努力來促進它的發展,所以 非死book 把 Yoga 開源了。目前微軟已經成為 Yoga 的貢獻者之一,他們不僅修復缺陷,還為 Yoga 帶來新的特性。

除了完全遵循 Flexbox 規范,非死book 還計劃在未來為 Yoga 加入更多特性,這些特性將超出 Flexbox 的范疇。

Yoga 的源碼托管在 GitHub 上,有興趣開發人員可以在上面進行反饋。

來自: InfoQ

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!