发布Dart 2.0和Dart Web平台的稳定版本

注意:加入TelegramSlackGoogle+上的俄语Dart社区。 在文章结尾,您会发现一个小公告。


Dart复兴为移动和Web开发的流行编程语言


今天,我们宣布Dart编程语言2.0的稳定版本以及Dart网络平台的发布,该平台提供了生产力,性能和可伸缩性的独特组合。




Flutter开发人员可以利用Dart 2的许多功能,因为Flutter几个月来一直在使用Dart 2 SDK的预发布版本。 尽管如此,由于框架和语言之间的紧密联系,Dart 2稳定版本的发布是Flutter发行的又一重要步骤。 如果尚未安装Flutter,可以立即尝试

随着Dart 2的发布,现在,Web开发人员也可以使用此版本的语言,所有库和工具都将获得针对Web的许多改进。 在此处可以找到有关安装和创建第一个应用程序的所有必要信息。

飞镖:越来越受欢迎


Dart 2是复兴Dart的重要里程碑,Dart是一种流行的编程语言,专注于快速便捷地开发移动和Web应用程序。 我们希望开发人员创建客户端应用程序的工作效率更高:其语言,框架和组件可以减少样板代码,使他们能够专注于业务逻辑,以及能够及早发现错误,帮助调试和生成紧凑型工具。和快速的代码。

在过去的一年中,我们发现Dart的知名度急剧上升。 我们自己的分析表明,外部使用量增加了十倍。 上个季度,根据请求请求,Dart是GitHub上增长最快的语言之一StackOverflow上越来越多的问题也显示出Dart受欢迎程度的积极趋势:



对于Google而言,Dart是我们用于开发Web应用程序的少数语言之一,它包含来自许多不同项目的数百万行代码,这些项目包括Google Ads,Google Shopping和我们自己的内部基础设施项目。

实际上,您可能已经在没有意识到的情况下使用Dart:最近流行的Sass样式预处理器重写为Dart ,以使其更快,更轻便且易于开发。 Sass现在作为Homebrew和Chocolatey上的独立可执行文件分发,并在npm上针对JavaScript进行编译。 Dart使在没有外部依赖关系的任何地方轻松安装应用程序,以及为使用Dart编写的用户和不使用Dart的用户部署工作流变得容易。



Dart 2集中在三个方面: 加强和加强语言,开发对Web和移动平台的支持,以及创建工具和组件以支持Google Dart在外部的使用。 本文的其余部分将涵盖这三个主题。

Dart 2:针对客户开发进行了优化的语言


正如我们在2月俄语版 )中所说的那样 ,Dart类型系统显式的 。 这意味着在用户启动您的应用程序之前,它将经历分析和编译阶段,在此阶段通常会发现大量问题。 当我们将Dart扩展到Google上的超大型应用程序时,类型系统在开发的早期阶段检测到许多错误,从而导致创建了更好的代码。

使用Dart 2,您无法进入执行表达式时使用的值与该表达式的静态类型不匹配的状态。 这意味着您可以自信地将代码库扩展到数百万行,重构大型项目并将代码部署到生产中。

不用担心: 显式并不意味着大量不必要的代码。 类型系统包括扩展的输出-即使对于通用类型参数也是如此。

final _field = [3.14, 6.28]; void main() { //   ,   <int>   print([1, 2, 3].runtimeType); // List<int> //    ,       // int (1)  double (3.14)    `num` print([1, 3.14].runtimeType); // List<num> //        print(_field.runtimeType); // List<double> } 

页面上了解有关Dart 2类型系统的更多信息。

如先前的博客文章所述,Dart 2还可以减少几个关键区域的语言干扰:例如, new关键字现在是可选的,而const关键字在适当的上下文中是可选的。

最后,我们做了很多幕后工作来统一各种辅助工具,这些工具现在与支持我们的编译器和运行时通用前端结合在一起。 这为我们的用户提供了一致性,并有望随着Dart的不断发展提高新功能的速度和质量。

Web上的Dart 2:功能强大的框架


从一开始,Web应用程序就成为Darth使命的核心。 实际上,Google的大多数Dart开发都是针对Web应用程序的。 最大的广告之一就是Google Ads,它提供了数十亿美元的在线经济。 在将代码移植到Dart的过程中,他们将UI代码库的大小减少了40%,同时提高了应用程序的性能和质量。

虽然核心Dart SDK提供了用于访问现代浏览器API的库,但我们还支持基于Angular的强大框架来构建复杂的Web应用程序。 作为Dart 2的一部分提供的AngularDart 5利用了显式 Dart类型系统和新的构建系统 (如下所述),以便用户可以在设计时使用快速增量构建以及更紧凑的编译JavaScript。

此版本的主要方向之一是减少页面加载时处理的代码量,从而大大减少网页的“交互时间”。 与AngularDart 4相比,在许多应用程序中,代码大小减少了一半以上。

为了演示Dart Web平台的改进,我们为HackerNews网站创建了一个基于Dart的客户端实现,并将其作为一个渐进式Web应用程序。 它与其他示例一起在流行的HNPWA网站上发布。 使用在Dart上创建Web应用程序的最佳实践,我们能够创建功能全面的应用程序,该应用程序在现代设备上可以在一秒钟内完全交互,而在慢速3G网络中在适度的移动设备上最多可以交互五秒钟。 即使与针对小型应用程序优化的轻量级Web框架相比,这也具有竞争力。


https://hnpwa.dartlang.org/

我们的基础设施投资也扩展到了我们的组件库 ,我们也对其进行了更新。 现在,您可以访问100个新类,包括各种Material组件 。 您可以在组件库中浏览我们所有的组件


物料日期选择器是可用于您的Web应用程序的组件之一。

Dart 2工具包


Dart与Dart 2一起成为一流的JavaScript编译语言,具有Web开发人员期望的开发周期以及出色的运行时性能功能。 这是由于大多数面向JS的语言都没有提供的优点而实现的: 显式类型系统和对本机移动应用程序的出色支持。

使用Dart 2,我们的网络工具涵盖了100%JavaScript开发模型以及两个其他JavaScript编译器。 开发编译器dartdevc在生成易于阅读和调试的JavaScript时提供快速的增量编译。 这使我们的dart2js编译器可以专注于为移动和复杂企业桌面应用程序的高级Web应用程序创建高度优化的JavaScript。 两种编译器都使用显式Dart类型系统来优化其输出。

我们的Web工具基于旨在快速,调试和可扩展的新构建系统 。 现在,诸如生成序列化代码,在CSS中编译Sass以及在JavaScript中编译Dart之类的任务都在一个工具链中完成,该工具链支持在应用程序更改时快速,增量地进行更新。 该构建系统还旨在支持Web外部的使用。 示例:Flutter开发人员使用它来生成用于JSON序列化的代码。

与Dart 2一起,我们为开发人员提供了扩展的工具集。 除了支持包括IntelliJ IDEAWebStorm的 Android Studio和JetBrains工具 ,我们还支持带有Dart Code扩展名的Visual Studio Code 。 我们还有一个实验平台: DartPad ,已针对Dart 2进行了完全更新。

最后,Dart SDK附带了一组其他有用的工具:与我们的网站一起使用的软件包管理器, 静态分析器 ,可从命令行或作为软件包使用的linter软件包,以及符合语言标准的 Web文档格式设置工具飞镖

了解更多


查看我们的Flutter入门指南和Web Dart工具包

发行说明提供了有关Dart 1以来所做的许多其他次要改进的详细技术信息,其中一些至关重要。 如果您遇到Google无法解决的问题,建议您从StackOverflow开始。 注册Dart公告通讯,并在Twitter上关注我们以获取更新。 我们也希望在我们的社区中见到您,例如,在Gitterr / dartlang reddit中

谢谢啦


Dart已成为一种通用语言,针对Web和移动设备上的开发进行了优化。 我们从事Dart 2的工作已经有几年了,在此期间,它影响了我们生态系统的各个方面,并要求迁移数百万行代码和数百个程序包。

我们感谢DartFlutter社区以及数百位在此过程中为我们提供帮助的Google工程师。 没有您,我们无法做到!


来自社区


我要祝贺Dart开发团队发生如此重要的事件,这确实是该语言开发的一个重要里程碑。 当然,本文中的许多单词对您来说似乎值得商de ,您可以在评论中以及我们的TelegramSlackGoogle+聊天中讨论它们。
以及承诺的公告:除了小技巧,我们每年还会举办大型活动,专门讨论语言,工具,Flutter,AngularDart以及与之相关的所有事物。 去年,来自Google的工程师访问了我们, 酿造了一种特殊的啤酒 ,总的来说很有趣。 今年,我们将努力做得更好! 因此,请在11月底-12月初预订,并继续关注公告。

Source: https://habr.com/ru/post/zh-CN419635/


All Articles