Dart
Dart是一种强类型、跨平台的客户端开发语言。具有专门为客户端优化、高生产力、快速高效、可移植(兼容ARM/x86)、易学的OO编程风格和原生支持响应式编程(Stream & Future)等优秀特性。Dart主要由Google负责开发和维护。Dart是一种简洁、清晰、基于类的面向对象的语言,它是基于JavaScript的但是结构要比JavaScript要多。
Dart是一种面向对象的、类定义的、垃圾回收语言。它支持接口、mixin、类对象,具有化泛型、静态类型等。
Dart本身提供了三种运行方式:
- 使用Dart2js编译成JavaScript代码,运行在常规浏览器中(Dart Web)。
- 使用DartVM直接在命令行中运行Dart代码(DartVM)。
- AOT方式编译成机器码,例如Flutter App框架(Flutter)。
Flutter在筛选了20多种语言后,最终选择Dart作为开发语言主要有几个原因:
- 健全的类型系统,同时支持静态类型检查和运行时类型检查。
- 代码体积优化(Tree Shaking),编译时只保留运行时需要调用的代码(不允许反射这样的隐式引用),所以庞大的Widgets库不会造成发布体积过大。
- 丰富的底层库,Dart自身提供了非常多的库。
- 多生代无锁垃圾回收器,专门为UI框架中常见的大量Widgets对象创建和销毁优化。
- 跨平台,iOS和Android共用一套代码。
- JIT & AOT运行模式,支持开发时的快速迭代和正式发布后最大程度发挥硬件性能。
在Dart中,有一些重要的基本概念需要了解:
- 所有变量的值都是对象,也就是类的实例。甚至数字、函数和null也都是对象,都继承自Object类。
- 虽然Dart是强类型语言,但是显式变量类型声明是可选的,Dart支持类型推断。如果不想使用类型推断,可以用dynamic类型。
- Dart支持泛型,List<int>表示包含int类型的列表,List<dynamic>则表示包含任意类型的列表。
- Dart支持顶层(top-level)函数和类成员函数,也支持嵌套函数和本地函数。
- Dart支持顶层变量和类成员变量。
- Dart没有public、protected和private这些关键字,使用下划线“_”开头的变量或者函数,表示只在库内可见。参考库和可见性。