2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

  • 2018-08-08
  • 本文字数:3695 字

    阅读完需:约 12 分钟

今天,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

2018-08-08 19:005409
用户头像

发布了 83 篇内容, 共 50.4 次阅读, 收获喜欢 187 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

99 大促来袭,利用 MSE 服务自治体系为业务保驾护航

阿里巴巴云原生

阿里云 微服务 云原生

低代码是什么意思?低代码平台的技术特点是什么?

优秀

低代码

YonBuilder移动开发 AVM框架 封装车牌号输入键盘组件

YonBuilder低代码开发平台

程序员 App 移动开发 多端开发

长安链源码分析启动(5)

长安链

测试需求平台2-搭建前后端分离github托管项目

MegaQi

测试平台开发 9月月更

低代码适用于哪些应用开发场景

力软低代码开发平台

9月17日 杭州站 | Serverless Developer Meetup 开启报名

阿里巴巴云原生

阿里云 Serverless 云原生

基于龙蜥操作系统指令加速,降低云原生网关的构建成本

阿里巴巴云原生

阿里云 云原生 云原生网关 龙蜥

Sring源码解析(一)Spring是怎么读取配置Xml文件的

石臻臻的杂货铺

spring 源码 8月月更

Python条件语句怎么用

和牛

Python 8月月更

C/C++普通函数与函数模板的区别,调用规则,模板局限性

CtrlX

c c++ C# 8月月更

2. 操作系统—中断、异常、系统调用

小呆鸟

操作系统 操作 8月月更

数据、算力强支撑,佳格天地联合华为云打造农业农村大数据解决方案

IT资讯搬运工

前端高频面试题(附答案)

helloworld1024fd

JavaScript 前端

聚四方之力,合四方之需:智能云网的持续进化

脑极体

长安链源码分析启动(4)

长安链

3. 操作系统—物理内存管理

小呆鸟

操作系统 操作 8月月更

Prometheus 实战 (1):容器安装

Grafana 爱好者

Prometheus

长安链源码分析启动(3)

长安链

2022年Q2银行APP活跃用户规模盘点:头部银行增长稳定

易观分析

金融 银行 用户规模

区块链商用案例:网间结算联盟链建设实战

鲸品堂

区块链 运营商 企业号九月金秋榜

Spring源码分析(二)Spring怎么扩展解析xml接口的

石臻臻的杂货铺

spring 源码 8月月更

APICloud AVM 封装验证码输入框组件

YonBuilder低代码开发平台

程序员 前端开发 低代码开发 多端开发

1. 操作系统—概述

小呆鸟

操作系统 8月月更

K-进制数(简洁 图解)

Five

算法题 8月月更

隗华:OceanBase 企业服务助力客户实现业务无忧

OceanBase 数据库

[JS入门到进阶] 手写解析URL参数的工具,并部署。用起来又快又爽!

HullQin

CSS JavaScript html 前端 8月月更

阿里云金融创新峰会云原生分论坛圆满举办,加速金融行业落地云原生

阿里巴巴云原生

阿里云 云原生 金融行业

开源一夏 | 一场由serialVersionUID 引发的线上问题

六月的雨在InfoQ

开源 serialVersionUID transient Serializable接口 8月月更

AAX影响力实验室探究加密产业对各行业的影响

股市老人

SQL改写系列九:外连接转内连接的常见场景与错误-2

OceanBase 数据库

Dart重启!Dart 2正式发布,目标成为移动与Web开发主流语言_语言 & 开发_Kevin Moore_InfoQ精选文章