@qinyun
2018-08-08T16:01:51.000000Z
字数 3102
阅读 1987
未分类
今天,Google Dart 产品经理宣布Dart 2正式发布,这标志着Dart语言的重启,它的目标是成为主流的移动和Web开发语言。同时,Google还宣布重构Dart Web平台,对开发者来说,这是一个高效率、高性能和可扩展的组合。
由于Flutter已经与Dart 2 SDK绑定了几个月了,相信许多Flutter的开发者已经享受了Dart 2的许多优势,由于框架和语言之间具有耦合的紧密关系,因此Dart 2正式发布对Flutter 正式版来说,是一个重要的里程碑。
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的工具和组件带给外部的开发者。
正如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>
}
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成为编译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
静态分析器: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