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版本的“逻辑动态化”能力不足。
Fair2.0连载公告
关于Fair 2.0详细的设计和原理介绍,请关注后续文章,我们会以连载的方式,逐步公开架构设计原理。
文章开放频率为每周2篇,分别在周二和周四,敬请关注!
《Fair 逻辑动态化架构设计与实现》
《Fair 逻辑动态化通信实现》
《Fair 下发产物-布局DSL生成原理》
《Fair 下发产物-逻辑JS生成原理》
《Fair 逻辑语法糖设计与实现》
《Fair 2.0 在安居拍房App落地实践》
《Fair 热更新设计与实现》
《Flutter 动态化项目评测》
逻辑动态化背景
Github:https://github.com/wuba/fair
逻辑动态化选型与思考
Fair 2.0立项后,我们针对逻辑动态化的支持,做了如下方案可行性对比和总结:
最终Fair项目组确定了,通过自研转换工具,对Dart源文件分别提取布局相关DSL和逻辑相关JS,布局相关DSL采用Fair 1.0的成果动态构建,逻辑相关JS文件传输到JScore来运算,并把最终的结果返回给Dart侧进行数据的绑定。
相应的架构图如下:
业界架构对比
3.1 MXFlutter & Kraken 分层架构
MXFlutter和Kraken 都构建了JS生态的架构,在JS域构件了对应的Widget、BuildEngine以及通信接口。如下图所示:
3.2 Fair 分层架构区别
Fair 架构由2部分组成,1为同Kraken和MXFlutter的App运行环境,2为Fair Compiler把Dart源文件编译成DSL和JS动态产物的工具。对比如下:
Fair 框架中Widget构建、数据绑定以及基本的逻辑(if、List Map…)处理都在Dart域完成,留给JS侧的只有基本数据类型、运算和方法调用处理。
Fair逻辑能力的构成
Fair 使用Fair 语法糖和Fair布局子方法拼接,构建了Dart侧的基础逻辑处理能力。逻辑能力构成如下图所示:
详细的设计和原理介绍,请关注后续Fair的文章,后期我们会以连载的方式,公开架构设计原理。文章开放频率为每周2篇,分别在周二和周四。敬请关注!
架构设计与实现详细内容,请阅读:
《Fair 逻辑动态化架构设计与实现》:介绍了整体架构和设计思想
《Fair 逻辑动态化通信实现》:介绍Dart<->Native<->JS的通信原理和过程
《Fair 下发产物-布局DSL生成原理》:介绍布局DSL的提取原理
《Fair 下发产物-逻辑JS生成原理》:介绍逻辑相关的JS提取原理
《Fair 逻辑语法糖设计与实现》:布局中基础逻辑的解决方案
Fair在58安居客内的“安居拍房”App已经集成和上线使用,详细内容介绍,请阅读:
《Fair 2.0 在安居拍房App落地实践》
《Fair 热更新设计与实现》
《Flutter 动态化项目评测》
项目信息
5.1 项目推动者
5.2 项目成员
Fair2.0交流群
加入Fair2.0微信群
了解更多项目相关信息
与项目成员即时沟通交流
58技术小秘书
或微信添加“58技术小秘书”微信好友 : jishu-58
备注“Fair2.0”由小秘书拉您进交流群
有奖互动
Perseverance Prevails
点击阅读原文链接直接进入Github
请为我们点亮star吧!
本文分享自微信公众号 - 58技术(architects_58)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。