IT资讯 开源公告|Fair 2.0 逻辑动态化开源了!

johnny · 2021-09-03 11:00:06 · 热度: 38

Fair2.0系列专题

NO.1  Fair 2.0 逻辑动态化

  • 项目名称:Fair 2.0
  • Github地址:https://github.com/wuba/fair
  • 项目简介:Fair是为Flutter设计的动态化框架,可以通过Fair Compiler工具对Dart源文件的转化,使项目获得动态更新Widget的能力。Fair 2.0是为了解决 Fair 1.0版本的“逻辑动态化”能力不足。

1 逻辑动态化背景

Fair是一套支持Flutter动态化的框架。Fair 2.0是为了解决 Fair 1.0版本的“逻辑动态化”能力不足。

Github:https://github.com/wuba/fair

2 逻辑动态化选型与思考

Fair 2.0立项后,我们针对逻辑动态化的支持,做了如下方案可行性对比和总结:

开源公告|Fair 2.0 逻辑动态化开源了!

最终Fair项目组确定了,通过自研转换工具,对Dart源文件分别提取布局相关DSL和逻辑相关JS,布局相关DSL采用Fair 1.0的成果动态构建,逻辑相关JS文件传输到JScore来运算,并把最终的结果返回给Dart侧进行数据的绑定。

相应的架构图如下:

开源公告|Fair 2.0 逻辑动态化开源了!

3 业界架构对比

3.1 MXFlutter & Kraken 分层架构

MXFlutter和Kraken 都构建了JS生态的架构,在JS域构件了对应的Widget、BuildEngine以及通信接口。如下图所示:

开源公告|Fair 2.0 逻辑动态化开源了!

3.2 Fair 分层架构区别

Fair 架构由2部分组成,1为同Kraken和MXFlutter的App运行环境,2为Fair Compiler把Dart源文件编译成DSL和JS动态产物的工具。对比如下:

开源公告|Fair 2.0 逻辑动态化开源了!

Fair 框架中Widget构建、数据绑定以及基本的逻辑(if、List Map…)处理都在Dart域完成,留给JS侧的只有基本数据类型、运算和方法调用处理。

4 Fair逻辑能力的构成

Fair 使用Fair 语法糖和Fair布局子方法拼接,构建了Dart侧的基础逻辑处理能力。逻辑能力构成如下图所示:

开源公告|Fair 2.0 逻辑动态化开源了!

5 项目信息

5.1 项目推动者

Fair项目由58技术委员会开源小组推动构建,持续推动58集团开源文化建设,鼓励技术同学以团队或个人的形式参与开源项目建设或开源贡献。在开源小组的推动下,已经在Github开源11个项目,涉及AI算法、UI自动化代码生成、Flutter布局动态化、NodeJS框架、Paxos一致性算法实现等多个技术领域,也跟知名的开源项目Taro合作,主导完成并开源Taro RN项目。

5.2 项目成员

刘阳、王海君、林乐洋、卜杰、罗正龙、柯超、单鹏涛、李昊、赵倩、陈有余、刘超、谢雄亮、孙哲

最后,感谢大家能够使用Fair方案,有任何问题或者建议,欢迎在评论区留言或在微信群里直接联系我们。

谢谢大家。

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册