这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
是上一篇笔记的后续,继续学习了跨端的相关技术
课堂笔记(二)
自渲染方案
Flutter利用Skia重新实现渲染管线,不依赖原生组件
Flutter 引擎是 Flutter 的核心,它主要使用 C++ 编写,并提供了 Flutter 应用所需的原语。当需要绘制新一帧的内容时,引擎将负责对需要合成的场景进行栅格化。
引擎将底层 C++ 代码包装成 Dart 代码,通过 dart:ui 暴露给 Flutter 框架层。该库暴露了最底层的原语,包括用于驱动输入、图形、和文本渲染的子系统的类。
基础的 foundational 类及一些基层之上的构建块服务,如 animation、 painting 和 gestures,它们可以提供上层常用的抽象。
渲染层 用于提供操作布局的抽象。有了渲染层,你可以构建一棵可渲染对象的树。在你动态更新这些对象时,渲染树也会自动根据你的变更来更新布局。
widget 层 是一种组合的抽象。每一个渲染层中的渲染对象,都在 widgets 层中有一个对应的类。此外,widgets 层让你可以自由组合你需要复用的各种类。响应式编程模型就在该层级中被引入。
小程序方案
使用小程序DSL+JS开发,通过中间层桥接后调用原生能力,使用webview来渲染UI界面
现在各家公司基本都推出了自己的小程序,如微信小程序,字节小程序,qq小程序,是重要的流量入口,但是用户留存率不高
对比
出于性能和开发效率的考虑,个人倾向于使用react Native来开发,具有较为平滑的上手成本和较好的性能。高的性能不如用原生去做,更低的效率不如用hybrid混合方案做,主要需要看业务的需求
同时现在也有很多跨平台框架供使用,如taro,uniapp等多端解决方案,以期望实现一次编写,编译成不同目标平台的产物来实现跨平台运行。