Flutter的特性离不开Dart特别是让很多人都非常喜欢的热重载功能,很大的原因就是因为Flutter使用了Dart,那么就通过这一篇文章了解一下,我们一起了解一下什么是Dart!
Dart的历史
Dart 1.0是于2013年11月14日由谷歌发布的,由Lars Bak和Kasper Lund创建。它旨在帮助开发人员构建现代的web和移动应用程序。它涵盖了客户机、服务器和现在的Flutter移动设备。它提供了一系列工具,包括虚拟机、核心库和包管理存储库。
什么是Dart?
Dart 是由谷歌开发的通用的编程语言,它常用于构建web、服务器、桌面和移动应用程序。
Dart是一种简洁、清晰、基于类的面向对象的语言,它是基于JavaScript的但是结构要比JavaScript要多。
Dart是一种面向对象的、类定义的、垃圾回收语言。它支持接口、mixin、类对象,具有化泛型、静态类型等。
面向对象
对于面向对象这个概念,相信了解Java的同学对这个概念一定不会陌生。
例如:我们有个Person Object他有很多特征和行为。 这些都是这个Person Object的属性。 也就是因为有了这些特征,行为等等才决定了这个人是谁。
那么回到Dart当中,所有的都是对象,那么在就可以可以跟进对象的属性的特征,方法等等来进行编程。
之所以我们在这里又特别强调了一下面向对象的概念,是因为这个概念在Dart语言当中,至关重要!
重要的几个概念
- 在Dart语言中,所有的东西都是对象,无论是变量、数字、函数、null等都是对象,所有的对象都是Object类的子类。
- Dart语言是强类型编程,一旦确定了类型,那么就不可以改变变量类型,在编译时会进行语法减产,但是Dart允许弱类型语言式的编程。
- Dart代码在运行前解析,指定数据类型和编译时常量,可以提高运行速度。
- Dart语言的统一入口是main函数。
- Dart的私有特性是在变量或者函数名前面加上下划线_。
- Dart支持async/await异步处理。
Dart的部分特性
1.Dart是AOT(Ahead Of Time)编译的,可编译成快速,可预测的本地代码。
2.Dart可以JIT(Just In Time)编译,开发周期快,为Flutter热重载提供基础。
3.Dart可以轻松创建60fps运行的流畅动画和转场。
4.Dart的声明式编程布局,易于阅读和可视化,不需要单独的声明式布局语言,如:XML,JSX。
5.Dart非常易于学习,具有静态和动态语言,编程人员都熟悉的特性。
Flutter为什么选择使用Dart?
相信,看过上面的内容的小伙伴,多多少少对于Dart有个简单的认识了,那么为什么Flutter为什么采用Dart语言呢?
可以归结为以下的三个方面:
优化内存
Flutter框架使用函数式流,它重度依赖底层内存分配器对小量的、短生命周期内存分配的有效处理,在缺乏这种特性的语言中Flutter无法有效地工作。
开发者生产效率
Flutter的一个主要的价值主张就是节省工程资源,开发者通过同一套代码库可以实现iOS和Android两个平台的应用开发工作。使用高产的语言提高了开发效率,也使得Flutter更具吸引力,这对于我们框架团队和开发者都异常重要。 构建Flutter主体的语言和我们提供给用户的是相同的,所以我们需要在100k行代码的基础上保证高效,并且保证不牺牲framework和widgets对读者的可读性。
面向对象
对于Flutter,我们想要一个能够符合Flutter问题域的语言,即创造视觉用户体验,通过面向对象语言构建用户界面框架,业内已经有了几十年的经验。当然我们可以使用非面向对象的语言,这将意味着重复发明轮子来解决几个艰难的问题。此外,大多数的开发者已经拥有面向对象的开发经验,这使得Flutter开发更加易学。
可预期 高性能
通过Flutter,我们想要给开发者赋能,以开发出快速流畅的用户体验。为了达到这一点,我们需要能够在每个动画帧运行大量的代码。这意味着我们需要一种能够同时提供高效和稳定性能的语言,不能有周期性的停顿,否则会造成掉帧。
高效的使用
热重载是Flutter最显著的特性之一,有了这个特性,我们可以快速并且轻松的进行实现、构建UI、添加属性和修复Bug。热重载的加载过程就是通过源代码文件注入在运行的Dart虚拟机当中来工作。
Dart的内置库
包名 | 描述 |
---|---|
dart:asynv | 异步编程,提供Future,Stream类 |
dart:collection | 集合 |
dart:convert | 不同类型的字符编码解码 |
dart:core | Dart语言核心功能,内置类型 |
dart:html | 网页开发用到的库 |
dart:io | 文件读写,IO相关 |
dart:math | 数字常量以及函数,随机算法等 |
dart:svg | 事件和动画矢量图支持 |
最后
要想学Flutter,先学Dart!
通过这篇文章,我们详细的介绍了一下Dart语言的“前世今生”。接下来,我们要着重的介绍一些Dart的语法,只有了解了相应的语法啊,才能读懂和写出代码,想要学习的小伙伴,请持续关注吧!
Flutter已经是Top20的软件库,通过接下来的一系列的文章,希望我和大家一起来学习Flutter,一起进步,一起有所收获,掌握未来技术主流的主动权!
有什么好的建议,意见,想法欢迎给我留言!