如何轻松和安全地构建的满足合规要求的智能产品,实现业务需求?4月26日,告诉你答案! 了解详情
写点什么

Facebook 开源跨平台前端布局引擎 Yoga

  • 2016 年 12 月 19 日
  • 本文字数:1049 字

    阅读完需:约 3 分钟

随着这几年前端技术的崛起,作为前端 UI 骨架的布局系统也在其中占据了越来越重要的位置。不管是在移动端、桌面端还是 Web 端,特别是不同设备的屏幕大小和分辨率千变万化,如何构建良好的布局系统以便应付这些变化已经变得越来越重要。

目前,各个平台都有自己的一套解决方案。iOS 平台有自动布局系统,Android 有容器布局系统,而 Web 端有基于 CSS 的布局系统。多种布局系统共存所带来的弊端是很明显的,平台间的共享变得很困难,而每个平台都需要专人来开发维护,增加了开发成本。

Facebook 在这个问题上没有少下功夫。首先,Facebook 在 React Native 里引入了一种跨平台的基于 CSS 的布局系统,它实现了 Flexbox 规范。基于这个布局系统,不同团队终于可以走到一起,一起解决缺陷,改进性能,让这个系统更加地贴合 Flexbox 规范。

随着这个系统的不断完善,Facebook 决定对它进行重启发布,并取名 Yoga。虽然目前还不知道为什么会给它取名 Yoga,但从字面理解——瑜伽——我们很自然地联想起柔韧、舒展、变化等名词,这个跟布局系统的跨平台特性似乎不谋而合。借助 Yoga,开发人员不仅可以在 React Native 里,还能在各个平台上快速地构建 UI 布局。

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 的范畴。

Yoga 的源码托管在 GitHub 上,有兴趣开发人员可以在上面进行反馈。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 12 月 19 日 18:0011618
用户头像

发布了 321 篇内容, 共 118.1 次阅读, 收获喜欢 122 次。

关注

评论

发布
暂无评论
发现更多内容

Android WebView独立进程解决方案,手撕面试官

android 程序员 移动开发

Android 开发一比一年难做!面试题都这么难了,android插件化

android 程序员 移动开发

Android 开发必备知识点整理,34岁程序员年薪50w

android 程序员 移动开发

Android 开发经验分享:挺重要的网络基础,android实现选择题模式

android 程序员 移动开发

Android 开发行业真的不行了嘛?,深入讲解Android

android 程序员 移动开发

Android 开发面试心得:BAT大厂Android面试题整理,面试8家大厂后终于拿到Offer

android 程序员 移动开发

Android 初中级开发社招面试总结!,android自定义控件开发入门与实战

android 程序员 移动开发

Android 基础与底层机制面试题,万字解析

android 程序员 移动开发

android 快速开发(三)巧用公共标题栏(1),android开发从入门到精通

android 程序员 移动开发

Android 自定义 View 之 LeavesLoading,移动开发工程师考试

android 程序员 移动开发

Android 性能监控系列一(原理篇),闭关60天学懂NDK+Flutter

android 程序员 移动开发

Android 技术的下半场(1),android开发书籍下载

android 程序员 移动开发

Android 技术的下半场,kotlin开源

android 程序员 移动开发

android 快速开发(三)巧用公共标题栏,音视频编解码开发

android 程序员 移动开发

Android 无缝换肤深入了解与使用,android快速开发

android 程序员 移动开发

Android 架构组件的最新进展 (上篇),flutter登录界面设计

android 程序员 移动开发

Android 约束布局(ConstraintLayout)1,最详细的解释小白也能听懂

android 程序员 移动开发

Android 使用 Kotlin 重写 Gradle 文件,kotlin教程

android 程序员 移动开发

Android 反编译利器,jadx 的高级技巧,看完这篇彻底明白了

android 程序员 移动开发

Android 可能你想要的APK瘦身笔记(1),2021金三银四面试季

android 程序员 移动开发

Android 开发市场是盛是衰?你应该知晓,android实战项目

android 程序员 移动开发

Android 网络框架之Retrofit源码解析,android嵌入式开发及实训答案

android 程序员 移动开发

Android 关于CPU类型的so文件兼容问题(ABI),十年Android编程开发生涯

android 程序员 移动开发

Android 已发行多年,移动 App 已经趋近饱和,那么 Android 开发还会有那么吃香吗

android 程序员 移动开发

Android 开发之深入浅出 NavigationUI,2020-2021阿里巴巴安卓面试真题解析

android 程序员 移动开发

Android 开发必备知识点及面试题汇总(Android+Java,斩获offer

android 程序员 移动开发

Android 插桩入门,腾讯T2大牛手把手教你

android 程序员 移动开发

Android 组件化实战,kotlin协程实现原理

android 程序员 移动开发

Android 组件通信中有哪些不为人知的细节?,面试题分享

android 程序员 移动开发

Android 可能你想要的APK瘦身笔记,android2018面试题

android 程序员 移动开发

Android 基础掌握好,面试基本不会倒!,面向Android开发者的复习指南

android 程序员 移动开发

Facebook开源跨平台前端布局引擎Yoga_移动_薛命灯_InfoQ精选文章