读书人

(通译)Dart语言概览

发布时间: 2012-08-29 08:40:14 作者: rapoo

(翻译)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

读书人网 >Web前端

热点推荐