3.1 Dart语言简介
本节的重点是Dart编程语言的几个重要概念,在使用Dart语言时,需要记住这些概念,因为它们是学习Dart和开发Flutter App的根基。
3.1.1 Dart发展史
2011年10月,在丹麦的奥胡斯举行的GOTO大会上,Dart语言首次亮相于世人面前。Dart和Java,C++等语言一样,是一种高级编程语言,但它的发展历程却不是一帆风顺的。
开始,Dart是被Google用来替代JavaScript的编程语言。但到今天,JavaScript仍然存在。如果不是Flutter,估计没人知道Dart语言的存在。一些跨平台框架,如React Native,采用的就是JavaScript语言而非Dart语言。甚至在2015年左右,Google在Chrome中已经移除了Dart引擎。这无疑让本来就不起眼的Dart,更加淡出了公众的视线。
但是,Google并没有放弃自己的“亲骨肉”,工程师用Dart语言编写了一套移动平台开发框架,叫作Sky,也就是Flutter的前身。而在未面世的Fuchsia操作系统中,更是将Dart作为官方开发语言。
目前,Dart在完成2.1版本的蜕变后,已经变成了一门强类型语言(同时仍然支持弱类型语言的某些特性),而且不断地迭代更新也使得Dart编程语言运行得更快速、更稳定、更安全。同时,为了降低学习成本,Dart又具有易于理解、规范简洁等优势。它有自己的VM,可以像Java语言一样运行在虚拟机上,又可以被编译成Native Code直接运行在硬件上(比如Flutter)。因此,快速、灵活、简单已经成为Dart的代名词。
3.1.2 Dart重要概念
在开始学习和使用Dart编程语言之前,熟悉概念是很有必要的。
一切皆对象。在Dart中,一切数据类型均继承自Object,即使是一个整数或方法,甚至null。
自由的强类型。从2.0版本开始,Dart就是一门强类型语言了。但是即使如此,Dart仍然可以推断出变量的类型,除非开发者明确表示某个变量不被指定为任何一种类型。建议使用静态类型,这样能够增强代码的可读性,让代码运行得更高效,也更方便让代码审查工具分析代码。没有明确指定类型的变量将会默认指定为dynamic类型。
通吃前后端。开发者可以使用Dart语言开发客户端Web应用(Angular 2框架),同时也可以运行在服务端(借助DartVM)。
可见性。作为库,可能包含一个或者多个*.dart文件。在大多数情况下,所有的变量、方法和类等对外均可见,除非它们以“_”开头。
运行模式。Dart在运行时提供两种运行方式:Production和Checked。在默认情况下会以Production方式运行,这时就会优先考虑性能,关闭类型检查和断言;而Checked模式更利于在开发阶段调试使用。
方法和变量。Dart支持顶级方法(主方法main()就是一个顶级方法),支持静态函数和实例函数,开发者还可以在方法中创建方法以实现闭包。同时,Dart也支持顶级变量,以及静态变量和实例变量。
表达式和语句。Dart包含表达式和语句,其中表达式包含运行时的值。一个语句中通常包含一个或多个表达式,但是一个表达式不能直接包含一个语句。
警告和错误。Dart代码分析工具可以指出代码中哪些是警告,哪些是错误。其中,警告只是表明代码可能存在一些问题,但还是可以被运行的;错误分为编译错误和运行错误,前者会直接阻止代码运行,后者会在代码运行时抛出异常。
命名方式。变量的命名方式以字母或下画线“_”作为首字符,之后可使用任意字母或数字。
关键字。Dart编程语言包含表3.1所示的关键字,这些关键字无法作为变量名使用。
表3.1 Dart编程语言的关键字
在上述这些关键字中,有一些是为了方便从JavaScript中移植过来的,有些是继Dart 1.0版本之后新增的,还有一些是保留词。关键词无论以哪种方式存在,在开发过程中,我们都不能使用任何一个作为变量名。
3.1.3 Hello Dart
本章中,我们不需要任何移动设备或虚拟移动设备,仅仅通过编译运行控制台程序即可完成学习,这里暂时使用Visual Studio Code作为讲解和练习的IDE。由于Visual Studio Code本身是跨平台的IDE,因此第3、4、5章的内容都可以在mac OS,Windows和Linux系统中进行学习,但前提是已经安装了Visual Studio Code和Dart插件(暂时不会用到Flutter插件)。
为了验证所配置的环境准确无误,启动Visual Studio Code并新建一个文件夹用于保存Dart代码,然后在其中新建一个.dart代码文件(即扩展名为dart),保存成功后的文件属性如图3.1所示。
图3.1 .dart文件属性
在右侧的代码编辑区输入以下代码片段,用于测试Dart环境。
然后,单击菜单栏的Debug(调试),在下拉菜单中选择Open Configurations(打开配置),将名为Program的值改为3-1.dart。完整的代码如下:
修改后,保存并关闭文件。需要注意的是,如果之后要运行另一个Dart程序,就需要将Program的值改为对应的文件路径。
最后,单击Debug菜单项,在弹出的下拉菜单中选择Start without debuging(非调试执行),或按“Ctrl+F5”组合键即可在Debug Console(调试控制台)看到如下输出:
到此,表明Visual Studio Code和Dart插件运行正常。