(翻译)Dart语言概览

简介: 技术概论   Dart是一种基于类的新式编程语言,用来创建结构化的Web应用。 Dart的目标是开发的建议性、高效性、可扩展性,它整合了几种新的语言特性,具有清晰易读的语法。 Note:  本文是该语言及其开发环境的早期预览。

技术概论

 

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

目录
相关文章
|
Android开发 iOS开发 UED
安卓与iOS的较量:谁才是智能手机市场的王者?
本文将深入探讨安卓和iOS两大智能手机操作系统之间的竞争关系,分析它们各自的优势和劣势。通过对比两者在市场份额、用户体验、应用生态等方面的表现,我们将揭示出谁才是真正的市场领导者。无论你是安卓粉丝还是iOS忠实用户,这篇文章都将为你提供一些有趣的观点和见解。
|
人工智能 监控 算法
探索软件测试的未来:AI与自动化的融合
随着人工智能(AI)技术的飞速发展,软件测试领域正迎来一场革命。本文将深入探讨AI如何与自动化测试相结合,提升测试效率和准确性,同时分析面临的挑战和机遇。我们将通过具体案例,展示AI在自动化测试中的应用,并预测未来发展趋势。
302 31
|
监控
在 PowerShell 中获取内存使用率百分比
【8月更文挑战第27天】
411 5
|
机器学习/深度学习 人工智能 搜索推荐
人工智能与机器学习的融合:未来技术发展的新趋势
随着科技的快速发展,人工智能(AI)和机器学习(ML)已成为当今最热门的话题。本文将探讨AI与ML的融合如何推动未来技术的发展,以及这种融合对各行业的影响。我们将通过分析最新的研究成果、统计数据和案例研究,深入探讨AI与ML的融合如何改变我们的生活和工作方式。
535 31
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
451 0
|
运维 监控 定位技术
故障转移和自动恢复
故障转移和自动恢复
497 1
|
供应链 网络协议 安全
物联网协议包含哪些协议?
物联网协议是物联网生态系统中不可或缺的组成部分,它们负责处理和协调物联网设备之间的通信。
622 3
|
网络协议 安全 网络安全
LabVIEW程序的常见加密方式
LabVIEW程序的常见加密方式
707 1
|
算法 Java
HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Java
HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Java
207 0
|
存储 弹性计算 监控
利用阿里云云产品进行项目成本节约的实践
本文分享了利用阿里云降低成本的实践经验,主要通过选择合适的计费模式(如按量付费、包年包月和抢占式实例)、优化资源配置(弹性伸缩、资源监控与调整、适配存储方案)、利用优惠和成本管理工具(预留实例券、成本预警、优惠活动)以及案例分析,实现云计算成本的有效控制。通过这些策略,企业在保证灵活性和扩展性的同时,能更好地管理云服务成本,提高项目经济效益。
928 4