Erlo

开源|Fair 在 58 同城拍客 App 中的实践

2022-04-13 13:00:34 发布   432 浏览  
页面报错/反馈
收藏 点赞

F

Fair2.0专题


● 项目名称:Fair 2.0

● Github地址:https://github.com/wuba/fair

● 项目简介:Fair是为Flutter设计的动态化框架,可以通过Fair Compiler工具对Dart源文件的转化,使项目获得动态更新Widget的能力。Fair 2.0是为了解决 Fair 1.0版本的“逻辑动态化”能力不足。

本文旨在为大家提供 Fair 在实际项目中落地的完整案例,包含了使用 Fair 进行动态页面改造、复杂场景使用、接入过程中遇到的问题、Fair 接入前后的性能对比、热更新方案设计等等内容。

本文重在介绍 Fair 的落地,不会涉及过多的技术原理,如果对 Fair 原理感兴趣的同学,可以阅读以下文章:

《Fair 逻辑动态化架构设计与实现》

《Fair 逻辑动态化通信实现》

《Fair 下发产物-布局DSL生成原理》

《Fair 逻辑语法糖设计与实现》

《Fair 热更新设计与实现》


00

本文目录



01

Fair接入和使用流程

1.1 接入 Fair

对于 Fair 的接入方式,推荐大家使用 源码依赖 的方式,下载地址如下:

git clone https://github.com/wuba/fair.git

pubspec.yaml 文件里添加依赖:

假如 Fair 源码和你的项目代码在同一个目录

另外需要特别注意的是,Fair 内部通过 fair_version 库来做版本控制,所以大家需要根据自己本机的 Flutter SDK 版本来决定 fair_version 的版本。

以我的电脑为例子,我本地使用的 Flutter SDK 版本为 2.5.0,所以我强制指定 fair_version 的版本为 flutter_2_5_0

1.2 将 Widget 改造为可动态下发的 bundle

将一个 Widget 改造为可以动态下发的 bundle 需要三步。

第一步:改造 main 函数

需要去掉默认的 runApp(MyApp()),然后手动调用一下 WidgetsFlutterBinding.ensureInitialized(),最后用 FairApp 来包裹项目的根 Widget。

第二步:添加 @FairPatch() 注解

在需要改造的 Widget 上添加 @FairPatch() 注解。

第三步:执行 build_runner 命令

执行了 build_runner 即可生成 bundle 资源

flutter pub run build_runner build

1.3 bundle 资源生成位置和组成

bundle 资源的位置,位于:project -> build -> fair 下。

一个 bundle 资源包含了两个文件:一个是 js 文件,一个是 json 文件。

  • js 文件里面包含的是动态页面的逻辑部分

  • json 文件包含的是动态页面的布局 DSL

1.4 使用 FairWidget 加载 bundle 资源

bundle 资源生成好以后,我们可以使用 FairWidget 组件对其进行加载。

在本地测试时,我们可以将 bundle 资源拷贝到 assets 目录下,然后将 assets 资源的地址通过

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认