(翻译)Dart语言概览

技术概论

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开发:

Core Library

包括了接口来支持普通的数据结构和操作.

    DOM Library

·        Iterable

·        Map

·        Comparable, Hashable, and Pattern

相关推荐