Flutter学习-初了解

跨平台技术

  • H5+原生(Cordova、Ionic、微信小程序)
    大多数功能都是H5实现的话,我们称其为Web APP
  • JavaScript开发+原生渲染 (React Native、Weex、快应用)
    JavaScript调用原生API,预先实现一系列API供JavaScript调用。
    DOM树与响应式编程。
    1.布局消息传递; 将虚拟DOM布局信息传递给原生;
    2.原生根据布局信息通过对应的原生控件渲染控件树;
    优点:
    1.采用Web开发技术栈,社区庞大、上手快、开发成本相1对较低。
    2.原生渲染,性能相比H5提高很多。
    3.动态化较好,支持热更新。
    不足:
    1.渲染时需要JavaScript和原生之间通信,在有些场景如拖动可能会因为通信频繁导致卡顿
    2.JavaScript为脚本语言,执行时需要JIT(Just In Time),执行效率和AOT(Ahead Of Time)代码仍有差距。
    3.渲染依赖原生控件
  • 自绘UI+原生(QT for mobile、Flutter)
    思路:通过在不同平台实现一个统一接口的渲染引擎来绘制UI,而不依赖系统原生控件,所以可以做到不同平台UI的一致性。注意,自绘引擎解决的是UI的跨平台问题,如果涉及其它系统能力调用,依然要涉及原生开发。
    优点:
    1.性能和原生控件接近。
    2.灵活、组件库易维护、UI外观保真度和一致性高
    不足:
    1.动态性不足;为了保证UI绘制性能,自绘UI系统一般都会采用AOT模式编译其发布包,所以应用发布后,不能像Hybrid和RN那些使用JavaScript(JIT)作为开发语言的框架那样动态下发代码。
image.png

Flutter

Flutter使用Skia作为其2D渲染引擎,Skia是Google的一个2D图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,Skia是跨平台的,并提供了非常友好的API,目前Google Chrome浏览器和Android均采用Skia作为其绘图引擎。

  • Dart在 JIT(即时编译)模式下,速度与 JavaScript基本持平。但是 Dart支持 AOT
    AOT (Ahead of time)即 “提前编译”
    JIT(Just-in-time)即“即时编译”

Dart和JavaScript做一个对比:
1.开发效率高(JIT+AOT)
2.高性能(AOT)
3.快速内存分配
4.类型安全(支持静态类型检测)
5.Dart开发团队的很多成员都是来自Chrome团队

image.png

你可能感兴趣的:(Flutter学习-初了解)