快速学习Dart语言
Posted MobileDev小园地
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速学习Dart语言相关的知识,希望对你有一定的参考价值。
2018年2月27日,在2018世界移动大会上,Google发布了Flutter的第一个Beta版本。2018年12月5日,Google官方宣布Flutter 的 1.0 版本正式发布!
Flutter是Google打造的UI工具包,帮助你通过一套代码同时在ios 和android上构建媲美原生体验的应用。
简单来说它与RN、Weex等众多混合开发平台框架一样,都是一套代码实现多平台发布的跨平台框架。
Flutter是用Dart语言编写的,早期的Flutter团队评估了10多种语言,最终选择了 Dart,基于以下原因:
Dart是AOT(Ahead of Time)编译的,可以直接将 Dart 源码编译出 .S 文件,然后通过汇编器生成对应架构的代码,保证了运行速度。
Dart也可以是JIT(Just in Time)编译,开发周期快。
Dart可以更轻松地创建以60fps运行的流畅动画和转场。
Dart使Flutter不需要单独的声明式布局语言,如JSX或XML,或单独的可视化界面构建器,因为Dart的声明式编程布局易于阅读和可视化。
Dart语言非常容易学习,无论是Java程序员还是javascript程序员,都可以在很短的时间快速入手。Dart语言虽然是强类型的,但是它结合了很多动态语言的特性,使得无论编写代码还是执行程序都非常方便。
虽然这些特性并非Dart语言特有,但是Dart语言却将它们组合的恰到好处,使Dart在实现Flutter方面独一无二。因此,没有Dart,很难想象Flutter像现在这样强大。
同时Dart也是Google下一代操作系统Fuchsia的官方前端编程语言。
Dart开发环境搭建
一、使用DartPad
DartPad(https://dartpad.dartlang.org)是一个可以直接在浏览器里编写和运行Dart程序的开源工具,它看起来如下图(注意,在国内访问的话,请使用https://dartpad.cn):
DartPad支持web应用运行所需要的所有dart:*库,但是它不支持dart:io和和一些第三方的库。如果要支持dart:io,可以使用dart的SDK。
二、使用Dart SDK
Dart SDK包含很多Dart库,还有一个可以运行Dart程序的命令行工具。在MacOS下可以通过brew来安装Dart SDK
$ brew tap dart-lang/dart
$ brew install dart
在Windows和Linux下请参考https://www.dartlang.org/tools/sdk
安装完成后,在命令行下可以使用dart命令来运行(如果需要,请添加环境变量),例如把上图dartpad中的代码存储为example.dart。在存放代码的路径下用命令行运行这个程序,会看到程序的正确输出:
$dart example.dart
hello 1
hello 2
hello 3
hello 4
hello 5
三、使用IDE
在AndroidStudio、IntelliJ IDEA和Visual Studio Code中,安装Dart插件即可编写Dart程序。下面是在Visual Studio Code的效果:
Dart语言学习
先来看一个Dart程序:
class Person {
String firstName;
String lastName;
Person(this.firstName, this.lastName);
void introduce() {
print('I am $firstName $lastName');
}
}
class Employee extends Person {
String title;
Employee(String firstName, String lastName, String title)
: super(firstName, lastName) {
this.title = title;
}
@override
void introduce() {
super.introduce();
print('I am a $title');
}
}
void main() {
var employee = Employee('Bob', 'Smith', 'Manager');
employee.introduce();
// result is
// I am Bob Smith
// I am a Manager
}
是不是似曾相似?
首先Dart是一种强类型的语言,但是Dart有类型推断能力,所以在声明变量时可以不用指定类型:
var num = 5.3;
Dart有numbers, strings, booleans, lists, maps, runes, symbols等内置类型,它们也都是对象。
Dart是一种真正的面向对象编程语言,在Dart里万事万物皆对象,即使函数也是对象,甚至是第一等的对象,函数可以被赋值给一个变量,也可以作为参数传递给另一个函数(这一点是不是和JavaScript很像?)。
Dart的类继承非常方便(这一点是JavaScript被诟病的很重要原因),甚至可以混合继承另一个类。Dart同时支持抽象类和接口实现(类似Java)。
Dart支持方法的覆写(override)和运算符(如==)的覆写。
Dart支持泛型,不仅在类中支持,在独立的方法中也可以支持泛型。Dart的泛型和Java非常相似,不同的是Dart的泛型在运行时是类型携带的,而Java的泛型在运行时是类型擦除的。例如一个List<String>的对象你可以在Dart中识别它的类型为List<String>,在Java中程序运行时它只能被识别为List。
Dart支持异步编程,Future和Stream两个类是异步编程的两个最重要的类。使用关键字async和await可以把异步程序写的像同步程序一样简洁。
Dart同时支持同步和异步的生成器,主要使用yield实现(和其他编程语言非常相似)。
多线程的应用程序可以共享内存以充分利用多核CPU,但Dart不同,它的所有代码都运行在独立的隔离带中(isolate)。
Dart支持单行、多行以及文档注释。
主要介绍重要概念、关键字、变量和内建类型
主要介绍函数、运算符、控制语句和异常
主要介绍类和泛型
主要介绍库、异步编程、生成器、可调用类、isolate、注释等
Dart语言依赖库。Dart不仅定义了核心内置库,也可以扩展支持第三方库。Dart的很多特性都是定义在它的内置库中,下面文章主要介绍了Dart的内置库。
随着Flutter的应用越来越广泛,相信会推动Dart这门语言的发展,实际上Dart已经推出很多年了,Google最初是想用Dart来替代JavaScript,由于各方面的原因,这一目的并未达到,现在Google也转换了思路,主要使用它来进行跨平台的开发以及将来Fuchsia系统上前端应用的开发。目前Dart的应用场景如下:
跨平台应用开发,Flutter
Web开发,目前它可以运行在大多数现代浏览器上,Dart语言会使用dart2js将dart程序转换为js程序。
命令行应用以及Server端的开发。
就Dart本身的语言特性和目前Flutter的发展而言,它非常值得学习,而且也非常容易学习。
以上是关于快速学习Dart语言的主要内容,如果未能解决你的问题,请参考以下文章