[关闭]
@qinyun 2018-02-23T11:14:07.000000Z 字数 3316 阅读 1911

Dart 2 正式发布:针对客户端开发进行了优化

未分类


今天,Google正式发布了Dart 2,最新的版本诠释了Google对Dart这门语言的新认识:Dart是针对Web和移动客户端开发进行独特优化的语言。

以下全文来自Dart产品经理Anders Thorhauge Sandholm对Dart 2的一些解读。

Dart 2大大加强和精简了类型系统,清理了语法,并重建了大部分开发工具链,使移动和Web开发变得更加愉快和高效。Dart 2还融合了包括Flutter、AdWords和AdSense在内的语言早期使用者的经验教训,以及针对客户反馈的成千上万大大小小的问题进行了改进。

Dart的核心原则

Google为什么认为Dart能够满足客户端开发人员的需求?Google认为除了现代通用语言所必需的属性之外,客户端开发还应受益于语言的以下特性:

Dart已经用于Google和其他公司的Web、iOS和Android平台上许多高质量、关键性的应用程序,它对移动和Web开发有着巨大的益处:

Dart 2:更好的客户端开发

在Dart 2中,Google采取了进一步措施巩固Dart作为客户端开发语言的霸主地位。特别增加了一些新功能,包括强大的打字功能,以及将UI定义为代码。

强大、健全的打字功能

AdWords和AdSense背后的团队已经使用Dart构建了一些Google最大和最先进的Web应用,以管理那些给Google带来大部分收入的广告。就是在与这些团队进行密切合作合作之后,Google发现了增强Dart类型系统的大好机会,这有助于Dart开发人员在开发过程早期发现bug,并更好地扩展到大型团队构建的应用程序中,提高整体代码质量。

当然这不是唯一的方式,在广袤的Web生态系统中,向JavaScript添加类型注释的趋势也在增长。例如,TypeScript和Flow都使用类型注释和推理来扩展JavaScript,以提高分析代码的能力。

在下面的小例子中,Dart 2的类型推断有助于发现一些微小的错误,并因此帮助提高整体代码质量。

  1. void main() {
  2. List<int> prices = ['99', '27', '10000', '20000000'];
  3. // Sort in place from smallest to largest
  4. prices.sort();
  5. print('Lowest price is ${prices[0]}!');
  6. }

这段代码代表了什么?你可以合理地预期它会打印“27”,但是,如果没有启用Dart 2的声音类型系统,它将打印“10000”,因为按照字典顺序排列,这恰好是字符串列表中最小的元素。但是,使用Dart 2时,此代码会给出类型错误。

将UI作为代码

在创建UI时,你必须在单独的用户界面标记语言和编写应用程序的编程语言之间进行切换,Google正在努力使UI变成一种愉快的体验,以显著减少对上下文切换的需求。Dart 2可选newconst。这个非常强大的功能本身非常有价值,也为其他事情的发展指明了方向。例如,有了newconst两种选择,我们可以清理UI小部件的定义,以便它不再使用单个关键字。

  1. // Before Dart 2
  2. Widget build(BuildContext context) {
  3. return new Container(
  4. height: 56.0,
  5. padding: const EdgeInsets.symmetric(horizontal: 8.0),
  6. decoration: new BoxDecoration(color: Colors.blue[500]),
  7. child: new Row(
  8. ...
  9. ),
  10. );
  11. }
  12. // After Dart 2
  13. Widget build(BuildContext context) =>
  14. Container(
  15. height: 56.0,
  16. padding: EdgeInsets.symmetric(horizontal: 8.0),
  17. decoration: BoxDecoration(color: Colors.blue[500]),
  18. child: Row(
  19. ...
  20. ),
  21. );
  22. view raw

Dart 的客户端用途

移动

Dart最重要的用途之一就是Flutter,它是谷歌新的移动UI框架,为iOS和Android制作高质量的原生界面。

开发人员曾使用Flutter构建一个非常受欢迎的节目 Hamilton的官方应用程序,并在构建时间上打破了记录。Flutter使用反应式编程风格并逐个像素控制整个UI。对于Flutter而言,Dart在易学性、反应式编程、出色的开发速度以及具有快速的垃圾回收器、高性能运行系统等方面都符合要求。

推荐阅读:

为什么说Flutter是革命性的?
为什么原生应用开发者需要关注Flutter?

Web

Dart是经过关键性Web应用程序验证的平台。它拥有为Web量身打造的库,如dart:html,以及完整的基于Dart的Web框架,使用Dart进行Web开发的团队会对速度的改进感到非常激动。正如Google AdWords工程副总裁Manish Gupta所说的那样:

AdWords前端庞大而复杂,对Google的大部分收入至关重要。

我们之所以选择Dart是因为其高性能、可预测性和易学性,完善的类型系统,以及完美地支持Web和移动应用。

现在,我们的工程师比以前的工作效率高出两到三倍,这让我们十分欣慰。

未来发展

借助Flutter和Dart,开发人员终于有机会使用共享代码库,为Android、iOS和Web编写高质量的应用程序。此后,团队成员可以在平台之间进行无障碍的切换,并通过代码审查等互助。到目前为止,我们已经看到AdWords Express和AppTree等团队在移动和Web中共享其代码的50%到70%。

Dart是一个开源项目和开放的ECMA标准。Google欢迎对Dart核心项目和Dart软件包生态系统的改进提出建议的开发者。

你可以在命令行中试用Flutter中的 Dart 2 和Dart SDK。至于Dart SDK,可从开发通道获取最新的Dart 2预发行版,并确保使用具有--preview-dart-2标志的版本运行代码。

今天发布的Dart 2是一款高效、简洁、已通过实战检验的语言,能够应对现代应用程序开发的挑战。它已经被这个星球上一些最苛刻的开发者所喜爱,希望你也会喜欢它。

相关链接

Flutter:

https://github.com/flutter/flutter/wiki/Trying-the-preview-of-Dart-2-in-Flutter

Dart SDK :

https://www.dartlang.org/install

原文链接:

https://medium.com/@asandholm/announcing-dart-2-80ba01f43b6

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注