BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Dart重启!Dart 2正式发布,目标成为移动与Web开发主流语言

| 作者 Kevin Moore 关注 0 他的粉丝 ,译者 覃云 关注 7 他的粉丝 发布于 2018年8月9日. 估计阅读时间: 9 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

今天,Google Dart 产品经理宣布Dart 2正式发布,这标志着Dart语言的重启,它的目标是成为主流的移动和Web开发语言。同时,Google还宣布重构Dart Web平台,对开发者来说,这是一个高效率、高性能和可扩展的组合。

由于Flutter已经与Dart 2 SDK绑定了几个月了,相信许多Flutter的开发者已经享受了Dart 2的许多优势,由于框架和语言之间具有耦合的紧密关系,因此Dart 2正式发布对Flutter 正式版来说,是一个重要的里程碑。

Dart在飞速发展

Dart2的发布意味着Dart语言的重启:一个目标成为主流的移动和Web开发语言。它专注于为移动和Web应用程序提供快速开发和出色的用户体验。Google希望开发者能构建出高效的客户端应用程序,并能将编程语言、框架、组件三者有效结合,减少样板代码,专注于业务逻辑,同时谷歌也会提供一些识别早期错误的、实现强大调试功能和运行小而快的运行时(runtime )代码的工具。

在过去一年中,Dart获得了巨大的增长,谷歌官方的数据显示,用户量在过去一年内增长了10倍,在上个季度中,Dart也是GitHub发展最快的语言之一。

在Google内部,Dart也是Google用于开发Web应用程序的为数不多的几种语言之一,它拥有来自十个不同项目的数百万行代码,其中包括Google Ads、Google Shopping和来自Google内部的基础架构团队的项目。

事实上,你可能已经在开始使用Dart了,只是你没有发现而已:Dart已经用于Sass样式表预处理器中,以使其运行速度更快、更易于编写。Sass在Homebrew和Chocolatey上以独立可执行文件的形式进行分发,并在npm上编译为纯JavaScript。

Dart还可以在没有外部依赖的情况下在任何地方轻松地安装应用程序,引入开发者的工作流。

Google称,Dart 2的目的有三个:优化语言开发,增强Google对Web和移动框架的支持能力,将Google内部的一些支持Dart的工具和组件带给外部的开发者。

Dart 2:优化客户端

正如Google在今年年初宣称的那样,Dart拥有一个健全、完整的生态系统,这意味着在你运行你的应用程序之前,在编译期间就能发现大量的问题。Google说,当他们将Dart应用到Google中的超大型应用程序中时,他们在开发早期就能发现很多的错误,为他们后期避免了很多麻烦,也保证了代码的质量。

有了Dart 2,表达式的值与表达式静态类型不匹配的情况将不会再发生了,这意味着你可以将代码扩展到数百万行,处理大型的重构项目,高效地部署你的代码。

final _field = [3.14, 6.28];
void main() {
  // No type parameter is provided, but <int> is inferred
  print([1, 2, 3].runtimeType); // List<int>
  // If types are unmatched, their common base type is used
  // int (1) and double (3.14) are both `num`
  print([1, 3.14].runtimeType); // List<num>
  // Inference goes beyond variables.
  // You can omit types on fields, too.
  print(_field.runtimeType); // List<double>
}

Dart on the Web:丰富、强大的框架

Web应用程序从一开始就是Dart使命的核心,实际上,Google大多数Dart开发都是针对Web应用程序的。其中,最重要的一个是Google Ads,它推动了数十亿美元的Web经济的发展。Google在将代码迁移到Dart的过程中,UI代码量减少了40%,同时还提高了开发人员的工作效率和应用程序的质量。

Dart SDK不仅提供了很多访问现代浏览器API的库,而且还支持Angular框架以构建复杂的Web应用程序。

AngularDart 5作为Dart 2的一部分,它充分利用Dart的类型系统和新的构建系统(见下文)在开发过程中提供快速的增量构建,并在部署过程中提供JavaScript的编译功能。

Google表示,目前他们在框架上的投资已经扩展到核心组件上了,你现在可以通过这个链接访问这些组件:https://dart-lang.github.io/angular_components_example/

Dart 2具有灵活的开发工具

Dart 2让Dart成为编译JavaScript的编程语言,它具有Web开发人员所期待的开发周期,以及出色的运行时(runtime)性能。同时它还具有大多数JS目标语言匹及的优点:丰富的类型系统和对原生移动应用程序的强大支持。

使用Dart 2进行开发,Web工具采用纯JavaScript开发模型和两个互补的JavaScript编译器。开发编译器dartdevc提供快速的增量编译,同时生成易于阅读和调试的JavaScript。这使得生成编译器dart2js能够专注于为桌面的移动应用程序的PWA生成高度优化的JavaScript。

Dart的Web工具基于新的构建系统,旨在实现快速,可调试和可扩展的目标。现在,将Sass编译为CSS或将Dart编译为JavaScript等任务发生在一个工具链中,该工具链在你更改应用程序的各个部分时,支持快速地增量更新。构建系统还旨在支持Web之外的应用。例如:Flutter开发人员使用它来生成JSON序列化代码。

Dart 2还有一组扩展的开发工具。除了支持Android Studio和JetBrains套件工具(包括IntelliJ IDEA和WebStorm)之外,还支持带有Dart Code扩展的Visual Studio代码。

最后,Dart SDK附带了其他有用的工具:一个与包站点并用的包管理器,一个静态分析器,一个作为包使用的linter,以及用于编辑符合Dart样式指南的Web文档和代码格式的工具。

最后,Google表示,Dart更新的消息会更新在Dart Announcements中,欢迎关注。开发者在使用Dart 2的过程中,有任何问题,可在Gitter社区与他们沟通。

相关链接

Gitter:https://gitter.im/dart-lang/home

Dart Announcements:https://groups.google.com/a/dartlang.org/forum/#!forum/announce

Dart style guide:https://www.dartlang.org/guides/language/effective-dart/style

Dart新的构建系统:https://github.com/dart-lang/build

包站点:https://pub.dartlang.org/

静态分析器:xda-developers.com

dart2js:https://webdev.dartlang.org/tools/dart2js

dartdevc:https://webdev.dartlang.org/tools/dartdevc

查看英文原文:https://medium.com/dartlang/dart-2-stable-and-the-dart-web-platform-3775d5f8eac7

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

混乱不堪 by 东 东

Android: Java -> Kotlin
Angular: TypeScript
Cloud: Go
Backend: Java & Go
Flutter: Dart

混乱不堪. 不尊重开发者.
Go 语言算是有独特优势, 而 Dart 和 TypeScript / Kotlin 比起来除了 Runtime 有特别之处外, 语言算是退退. 全靠 Flutter 框架死撑.

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT