(翻译)Dart语言概览

小编 2026-06-07 阅读:1806 评论:0
技术概论 Dart是一种基于类的新式编程语言,用来创建结构化的Web应用。 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

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表