技术概论
Dart是一种基于类的新式编程语言,用来创建结构化的Web应用。 Dart的目标是开发的建议性、高效性、可扩展性,它整合了几种新的语言特性,具有清晰易读的语法。
Note: 本文是该语言及其开发环境的早期预览。现在可能还没有一些元素,并且我们会根据反馈来调整细节。
关键特性
关键特性包括:
类
类和接口为高效定义API提供了易懂的支持机制。这样的设计使得能够封装和复用方法和数据。
可选类型
Dart开发者能够有选择的为代码添加静态类型。根据程序员的爱好和开发平台,通过归类代码可以从简易的、未定义类型的试验原型迁移到复杂的、模块化的应用上。 由于没有文档会要求解释代码中的类型到底发生了什么,类型检测工具只是用来调试的。
库
开发者可以创建任何用户库,在运行过程中不会发生改变的。独立开发的代码片段可以以来共享库。
工具
Dart将会包括大量可执行环境、库、开发工具来支持语言。这些工具使得多产和动态开发成为可能,包括“编辑继续”调试和“超越”风格,运行时会在空白处填充。
设计目标
这里看到的Dart语言还是早期的。以下目标会引导我们改进并精炼开源项目。:
· 创建结构化并且灵活的web编程语言.
· Dart是轻松易学的.
· 所有Dart语言结构具有高性能和快速建立能力.
· Dart适合所有的web设备—--电话,平板,笔记本,服务器.
· 提供工具使得Dart在所以主流浏览器上快速运行.
这些目标解决了以下问题:
· 小脚本经常发展为没有明显结构的大型Web应用—它们很难调试和维护,另外,这些应用不能被分立为几个小问题来单独解决。应用很大后生产力很底下。.
· 脚本语言流行的原因是它们的轻量级和编写代码的快速性。一般地,应用中不同结果的整合使用注释而不是语言结构本身。结果除了作者,别人很难维护。
· 对于现存语言,开发者需要选择到底是用静态的还是动态的。传统的静态语言需要重量级的工具链和编程风格。
· 开发者还不能创建包括客户端和服务器的均衡系统,仅仅除了Node.js和Google Web Toolkit (GWT).
· 不同的语言和格式使得代码很累赘和复杂.
代码演示
下面是一些代码判断,可以大致了解一下Dart.
类和接口
Dart的接口和类提供了很多积木式结果可以复用和封装。一个interface定义一个方法和常量的集合,有时候可以从其他接口继承。一个class可以实现多个接口但是只能继承一个父类。
下面定义了一个接口,并定义了一个类和子类来实现:
1. interface Shape {
2. num perimeter();
3. }
4.
5. class Rectangle implements Shape {
6. final num height, width;
7. Rectangle(num this.height, num this.width); // Compact constructor syntax.
8. num perimeter() => 2*height + 2*width; // Short function syntax.
9. }
10.
11. class Square extends Rectangle {
12. Square(num size) : super(size, size);
13. }
可选类型
Dart混合了静态和动态检测。测试到时候,程序员可以为简单原型不指定类型。随着应用的增大和更稳定,可以添加类型来调试和在需要的地方强加类型。
比如这里用Dart语言新建了一个Point类,有2个参数x和y,有2个方法:scale() 和distance().
1. class Point {
2. var x, y;
3. Point(this.x, this.y);
4. scale(factor) => new Point(x*factor, y*factor);
5. distance() => Math.sqrt(x*x + y*y);
6. }
7.
8. main() {
9. var a = new Point(2,3).scale(10);
10. print(a.distance());
11. }
下面是对上面代码的参数x,y和factor指定了类型为num,Point 包含2个num类型的值:
1. class Point {
2. num x, y;
3. Point(num this.x, num this.y);
4. Point scale(num factor) => new Point(x*factor, y*factor);
5. num distance() => Math.sqrt(x*x + y*y);
6. }
7.
8. void main() {
9. Point a = new Point(2,3).scale(10);
10. print(a.distance());
11. }
怎么使用Dart?
可以安装下面的方法运行Dart:
· 将Dart编译成JavaScript可以运行在任何浏览器:Chrome, Safari 5+, 和Firefox 4+ (并且越来越多)
· 使用Dartboard 编写、编辑、运行在任何浏览器窗口
· 很快: 直接在PC的VM中执行Dart
· 很快: 使用 新 MIME 类型, Dart运行就不需要编译成JavaScript
Note: Dart Editor 支持 Dart-to-JavaScript的编译。命令行工具,比如VM和Dart-to-JavaScript 编译器,并不能直接使用。不过,可以使用Dart project 中的代码构建命令行工具。
Dart编辑器
Dart 编辑器可以用来创建、编辑、运行Dart应用。一次点击就能把Dart编译为JavaScript并在浏览器中运行。Dart编辑器支持自动补全和重构。更多信息查看Dart Editor tutorial.
Dartboard
可以直接到try.dartlang.org 学习Dartboard,代码会运行在远程服务器的Dart VM中 。
更多信息查看 Dartboard & Language Basics tutorial .
新MIME类型
可以把Dart程序直接绑定进HTML 中,或者可以使用#import或#source声明导入外部文件。下面就是规划中的新MIME类型, “application/dart”:
1. <html>
2. <body>
3. <script type="application/dart">
4. main() {
5. Element element = document.getElementById('message');
6. element.innerHTML = 'Hello from Dart';
7. }
8. </script>
9. <div id="message"></div>
10. </body>
11. </html>
库
Dart会提供以下库来支持Web开发:
包括了接口来支持普通的数据结构和操作.
DOM Library
· Iterable· Map
· Comparable, Hashable, and Pattern