1. 简介

Google的东西用起来一般感觉都不赖,即便是编程语言,这点也没变。Dart不单单只是一门语言,其相关的配套设施也一应俱全:

  • DartIDE:简单好用的IDE,当然更推荐使用JetBrains系列的IDE,配上Dart的插件
  • dartanalyzer:语言分析工具
  • dart2js:js转换工具
  • dartfmt:代码格式化工具
  • docgen:文档生成工具
  • pub:官方自带的包管理工具(官方给出解决方案肯定比第三方出包管理工具要好太多太多了)。

Dart给我的印象是多种语言的优点的集合。再深入点,你会发现Dart最主要是受了JavaScript和Java两种语言的影响。设计模式上更倾向于Java,而语言本身的使用则更倾向于JavaScript。从服务器角度来说,Dart和NodeJs是一脉相承的:原生的lambda表达式,原生的异步IO支持,单进程的设计,基本上和NodeJs没什么差别。

在接下来的文章里,主要以外部资源介绍为主,因为google官方给的文章内的指导已经非常到位了,不需要我再写班门弄斧的文字了。这里主要是理清思路。

2. 基础资源

3. 语法

这里简单介绍与其他语言差别比较大的,需要特别注意的点:

4. 教程文章

  • Idiomatic Dart:教你如何使用dart式思考来编程,介绍了一系列dart式的语法和编程方式,基本上在读 Dart Style Guide 的时候顺道把这篇也干掉就对了。这篇文章里 Future.delayed 这段特别值得一读
  • Guidelines for Dart Doc Comments:怎么写文档注释,主要了解下dart提倡的简单书写,以及在注释中使用markdown
  • Emulating Functions in Dart:讲了在dart中函数动态调用相关的奇技淫巧,call函数,Function.apply函数,typedef函数的类型匹配,noSuchMethod函数,等
  • Mixins in Dart:Mixin 代码混合,在dart里的实现和使用,看下三条原则,和几个例子就差不多了。Dart是没有interface这个关键字的,接口一般使用 abstract class 来定义,这里的 Mixin 也起到了类似的作用
  • Snapshots in Dart:Dart的代码缓存机制,类似于字节码的东西?大概。官方说明是说能提高启动速度,不过我没看到能提高运行速度的说明
  • Optional Types in Dart:Dart里动态类型的一些规则和最佳实践,比如说要不要申明、什么时候申明类型啊,--checked模式会检查什么,之类的
  • The Event Loop and Dart:Dart的event loop是如何工作的,对于没接触过nodejs的人来说,这篇是非常重要的概念帖,里面有几点需要重点理解:
  • Numeric Computation:数字类型在Dart VM内的实现,以及如何使用它们,如何提升性能。在dart内部,int申明就有3种隐藏实现。注意Typed List这节,以及后续Pulling back the curtains这一大节里的优化点。
  • Reflection in Dart with Mirrors: An Introduction:Dart语言里的反射机制,动态调用,和类定义了解,都需要使用这套工具