手记

Dart语言详解(一)——详细介绍

这是第「40篇」分享

之前,我们一直在介绍Flutter相信大家对Flutter有一个总体的认识,,那么现在我们就要介绍一下Flutter使用的编程语言Dart

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语言当中,至关重要!

重要的几个概念

  1. 在Dart语言中,所有的东西都是对象,无论是变量、数字、函数、null等都是对象,所有的对象都是Object类的子类。

  2. Dart语言是强类型编程,一旦确定了类型,那么就不可以改变变量类型,在编译时会进行语法减产,但是Dart允许弱类型语言式的编程。

  3. Dart代码在运行前解析,指定数据类型和编译时常量,可以提高运行速度。

  4. Dart语言的统一入口是main函数。

  5. Dart的私有特性是在变量或者函数名前面加上下划线_。

  6. 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,一起进步,一起有所收获,掌握未来技术主流的主动权!

有什么好的建议,意见,想法欢迎给我留言!

1人推荐
随时随地看视频
慕课网APP