整体目标和方向
- 使用JS开发,扩展 Flutter 的开发阵营,实现 Flutter 动态化,
- 支持业务由 Dart 开发,使用mxjsbuilder编译为JS直接运行,实现同一套 Dart 代码同时支持 AOT 编译为 Native APP,也能够编译为JS支持动态化。
要实现 MXFlutter 的目标,工程量很是巨大,团队在作这个项目时也感觉到,对比作一个技术方案和实现一个产品级的框架,工做方式有巨大的不一样, 实现一个产品级框架,是可用性优先,作一个技术方案Demo是解决难点优先。MX要作完善,还有很长的路要走,千里之行,始于足下,欢迎有兴趣的小伙伴一块儿建设。c++
整体路线图
基础功能,支持Flutter的全部功能
完善Widget
- 支持全部Flutter Widget,使用 mxjsbuilder 直接编译生成 MXFlutter Widget 框架。
- 支持动画 Widget,Controller
- 支持弹窗等 UI API
- 支持 Flutter 的开发方式,如各种Key,InheritedWidget的使用,动态建立Builder机制
支持Flutter生态,能方便接入package
- 能够接入Flutter生态的package,步骤简单通用。
- MX官方支持好最流行的package,例如dio,pull_to_refresh。
- 制定package接入的指引,开发者能够本身接入须要的package
易用性
- 改造 mxflutter 为 package ,简化接入流程。
- 编写完善的官方使用文档,
- 支持 TS 语言。
平台特性
iOS
Android
- Android JS引擎选择,安装包下降
- Android 增长JS调试能力
性能优化
通道专项
优化JS,Native,Dart 通信效率。web
- 通信数据结构,由json优化为其余格式。
- 换用更高效的Dart JS数据交互方式
首屏专项
经过直接预先生成DSL,提高首屏打开性能。json
流畅度专项
提高交互流畅度,提高交互时,界面刷新反应时间。浏览器
ListView专项
提高Listview滑动性能和体验性能优化
工具建设
dart编辑为JS的mxjsbuilder编译器开发
- 支持 Dart 开发,由 mx_jsbuilder 编译为js,在 MXFlutter 框架直接运行。
- 支持mx js framewrok的 js widget 使用编译器直接编译生成。
IDE插件
- 开发VSCode插件,支持代码补全,联想能力。
- IDE插件直接调试JS的能力。
开发模式规范化
合入标准
制定代码规范和合入标准数据结构
完整的项目开发流程和测试
功能测试
测试widget功能框架
单元测试
编写对应模块的单元测试工具
官方Demo
开发官方Demo,发布到iOS,Android应用市场性能
官方网站建设
mxflutter.com单元测试
技术扩展和优化探索
TS编译为webassembely,提高性能 底层基础库换用c++实现,换用动态化中台渲染内核。 直接运行在浏览器中
目前进展
截止2020年4月28日,已发布到 v0.1.2 beta版本,主要功能可用,性能达到生产环境标准,已在iOS端看点视频上线,Android功能已对齐。
- 基础功能 Widget 支持 70%
- 动画 Widget 20%
- Flutter生态 package 的支持方法
- 官方Demo 已有多数widget 示例
- 已支持Dart编译为JS,mx_jsbuilder编译器易用性封装完成70%
当前主要目标
5月11日发布 v0.2.5版本,支持mx_jsbuilder编译器
下一步计划
- 性能优化专项,通道性能,流畅度,首屏加载时间。
- mx_jsbuilder 继续迭代优化,支持更多dart语法编译
- 动画专项
- 工具链建设,IDE插件开发
- 支持TS语言
- 功能测试和单元测试
- 完善的开发文档
- 业务接入支持
- 官方Demo
- 官方网站
- 技术扩展