整體目標和方向
- 使用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
- 官方網站
- 技術擴展