Flutter简介
Flutter特点
- Google 出品
- 使用Dart语言开发
- 支持跨平台,高性能,
- 使用自绘渲染引擎
特点详解
1.高性能
2.快速内存分配
Flutter框架使用函数式流,这使得它在很大程度上依赖于底层的内存分配器。因此,拥有一个能够有效地处理琐碎任务的内存分配器将显得十分重要,在缺乏此功能的语言中,Flutter将无法有效地工作。当然Chrome V8的JavaScript引擎在内存分配上也已经做的很好,事实上Dart开发团队的很多成员都是来自Chrome团队的,所以在内存分配上Dart并不能作为超越JavaScript的优势,而对于Flutter来说,它需要这样的特性,而Dart也正好满足而已。
3.类型安全
由于Dart是类型安全的语言,支持静态类型检测,所以可以在编译前发现一些类型的错误,并排除潜在问题,这一点对于前端开发者来说可能会更具有吸引力。与之不同的,JavaScript是一个弱类型语言,也因此前端社区出现了很多给JavaScript代码添加静态类型检测的扩展语言和工具,如:微软的TypeScript以及Facebook的Flow。相比之下,Dart本身就支持静态类型,这是它的一个重要优势
Flutter架构
Flutter Framework
这是一个纯 Dart实现的 SDK,它实现了一套基础库,自底向上,我们来简单介绍一下:
- 底下两层(Foundation和Animation、Painting、Gestures)在Google的一些视频中被合并为一个dart UI层,对应的是Flutter中的
dart:ui
包,它是Flutter引擎暴露的底层UI库,提供动画、手势及绘制能力。 - Rendering层,这一层是一个抽象的布局层,它依赖于dart UI层,Rendering层会构建一个UI树,当UI树有变化时,会计算出有变化的部分,然后更新UI树,最终将UI树绘制到屏幕上,这个过程类似于React中的虚拟DOM。Rendering层可以说是Flutter UI框架最核心的部分,它除了确定每个UI元素的位置、大小之外还要进行坐标变换、绘制(调用底层dart:ui)。
- Widgets层是Flutter提供的的一套基础组件库,在基础组件库之上,Flutter还提供了 Material 和Cupertino两种视觉风格的组件库。而我们Flutter开发的大多数场景,只是和这两层打交道。
Flutter Engine
这是一个纯 C++实现的 SDK,其中包括了 Skia引擎、Dart运行时、文字排版引擎等。在代码调用 dart:ui
库时,调用最终会走到Engine层,然后实现真正的绘制逻辑。
总结
Flutter作为一款跨平台,开源,具有良好分层的框架,在大前端越来越流行的趋势下,是很值得花时间学习一下的。加油!!!
相关推荐
Samlss 2020-06-04
RedCode 2020-10-28
万物weiyi 2020-06-16
liutong 2020-05-12
万物weiyi 2020-03-04
mryangjx 2020-03-01
liutong 2020-02-26
liutong 2020-02-22
Samlss 2020-02-22
chaoxiao 2020-02-15
mryangjx 2020-01-28
mryangjx 2020-01-25
liutong 2020-01-12
apowerfulman 2020-01-07
Samlss 2020-01-07
万物weiyi 2020-01-01
mryangjx 2019-12-25
Samlss 2019-12-15