Flutter的核心动力不足 3. dart语言的生态圈小,精通成本比较高dart vs javascript,javascript有一个定律(本质:无处不在、网络效应)很难被其他语言打败:如果某个软件能用javascript 实现,那么最终它一定会用javascript实现。说到dart语言,在国内更是难以推动,typescript 之于 javascript 算是同门师兄弟,相对迁移难度不高,但 dart 之于 javascript 语法和概念上差异巨大,再加上英文文档、社区、样例代码的缺乏,在国内基本上没有流行的希望。结论:要想在国内速成蔚然成风的环境下流行的技术,必须是像 thinkphp 这样全中文文档,样例代码丰富,论坛 24h oncall 的技术。 4. 嵌入外部platform view 成本高这块(基于官方代码)目前在 iOS 端有支持,android 上还没有,但相关开发者博客上有提到实现webview//mapview等platform view 的嵌入。从 iOS 端的实现来看,每嵌入一层 platform view 会额外多一层 surface,内存消耗代价比较高。 5. 平台 API flutter目前提供的开箱即用的功能api只有 UI framework + dart 语言的能力,平台能力需要通过 platform channel 来扩展。当然这一点也是除了 RN 等其他同类解决方案的通病。注: flutter 被 google 定位于跨平台、跨环境的应用开发框架,单一从动态化框架的角度去评价和衡量也有点牵强。 6.兼容性 & 完备性 使用 Surface 这种平台级重量资源,[Android平台]其申请释放都是异步的,很可能有很多的兼容性问题。同时粒度上无法让已有 native view 作为 host(比如 ListView),一个小的 flutter 放进去做个 cell,并且彼此之间复用。此处完备性定义为:普适各种使用场景
未来的动态化技术 不论是 RN 还是 Flutter、Weex 都只能解决一部分问题,世界上成熟的产业级标准只有 Web 和 Native,所以站在 RN Flutter Weex 不能通吃所有场景所有需求的这个前提下,讨论下什么样的动态化技术能走得更远,生命力更长久:设计和实现简单轻量设计和实现简单、轻量的东西才经得起迭代和扩展,才有生命力平台原生的一定是最好的,不要拒绝它,要拥抱它核心两件事:1.1 轻量级桥接 JS,实现跨端复用代码,开发队伍上让前端同学能介入,同时也是应用能动态性(分发)的基础 1.2 跨平台统一抽象应用框架、组件、模块、扩展机制…,抹平平台差异定位于补充 web,而不是取代 web定位大了,搞不赢浏览器,同时会把自己拖死定位大了,每个点上都没有超常的亮点。