当然还有其他的一些文章,这里不一一举例,在Flutter实践层面,简单来说分为三个流派:
- 方案一:JavaScript是最好的语言(🤣碰瓷PHP)
主要思路:利用Flutter做渲染,开发使用js,逻辑层通过v8/jscore解释运行。代表框架是MXFlutter。这个框架是开源的,大写的👍。
- 方案二:DSL,颤抖吧布局
主要思路:基于模板实现动态化,主要针对布局层,逻辑层不能直接动态,需要封装为逻辑组件。这个没有关注到知名的开源项目。
- 方案三:布局,逻辑,一把梭
主要思路:与方案一的最主要区别是,逻辑层也是使用dart,增加了一层语法解析和运行时。有一个代表,美团团的Flap,然而没有开源动向,无从考察更多。
这里没有提二进制整体替换的思路,原因是笔者认为它更接近与Native的插件化,在实现层面和Flutter的关联不大,并且基于二进制产物的拆分与动态下发是可以与上述方案结合使用的,并不是二选一的问题。
读到这儿,不知道你有没有一个胆大想法?
Flutter动态化轮子这么缺,都是思路为主,是不是可以搞一个出来?
原型构思
曰:欲善其事,必先利器。
光有大胆的想法是不够的。我们在项目启动初期,花了不少时间,去学习,去验证可行性。这个阶段我把它定义为:Prototype 0.0
。以兴趣为导向,在招募的flutter成员中,挑选了些“壮士”去了解动态化的技术,实践证明,这是一个还凑活的法子。
在这个原型孵化的阶段,第一要务是解决能不能的问题
。粗粒度的划出几个点,逐一攻破,任务点比较多,这里例举一二:
- DSL Definition