|
2012年是 Dart 快速发展的一年,10月发布了第一个里程碑版 M1,年底又发布了 M2。而2013年将是 Dart 开始普及的一年。
快速变化对于一门处在发展初期的语言很正常,而且是好的现象。但是对于写书作者而言,变化太快内容就会不稳定;对开发者而言,也不敢用于正式的工作环境。而现在 Dart 语言开始逐渐稳定,主要的语言特性已经确立,核心库不断完善。预计2013年 Dart 将开始普及,并实际应用于各种项目中。
下面谈一谈 Dart 最近的主要变化(M2)。
在Dart M2中,dart2js 生成的 JavaScript 代码比以前平均减少了一半!Dart 显著改进了生成的 js 代码的大小,这得益于①利用 tree-shaking 技术自顶向下检查 html 库的使用,将不需要的代码排除出去,②支持代码最小化(需要--minify参数)。例如在一个实际项目中:
- Dart size: 302k
- JavaScript size: 505k (167% of Dart size)
- Minified JS size: 238k (79% of Dart size, 47% of JS size)
- Gzipped minified size: 71.2k (23% of Dart size, 14% of JS size)
Dart VM 性能提升。Dart VM 现在比 JavaScript V8 引擎快 50% !在JavaScript的性能测试 Octane 标准中的两项测试 Richards 和 DeltaBlue 中,Dart VM 比 V8 快了 50%,而 VM 的性能优化工作还在不断改进中,详见这个 Dart Performance 。
Dart VM 支持 SSL 了,这样就可以使用 https 了。
Web UI(之前被称为Web Components)包是一个构建 Web 应用的 Dart 库,起源于Web Components 和 Model-driven Views(MDV) 技术,提供Web组件、动态模版、数据单双向绑定等功能。详见:介绍、Feature、Tools、Specification、Source、Pub 以及 Codelab 。
包管理工具 Pub 现在已允许开发者上传自己的包到 pub.dartlang.org 。你需要有一个 Google 账号用作认证,然后在你的包目录下运行 “pub publish” 命令。
基于镜像(mirror-based)的反射已部分实现,正如名字的暗示,镜像是用来反射另一个实体的独立对象,它在安全、分布和部署方面有许多优势,但用起来会略微麻烦一点。详见文章:http://www.dartlang.org/articles/reflection-with-mirrors/
Gilad Bracha 写了一篇新文章 Mixins in Dart,介绍了将来 Dart 语言中 Mixin 的样子,并有可能在 Dart M3 中实现。Mixin 是对传统面向对象语言单继承缺陷的有益补充,在 Ruby 和 Scala 中都有实现。
Dart 团队现在考虑让核心库统一实现一个新的 Streams API ,这会影响IO和迭代的处理模式,值得关注。
核心库还有一些结构调整,如:
- 按照新的命名规范重命名了部分,如 innerHTML 现在是 innerHtml
- 庞大的 dart:html 库中,有部分内容被迁到外面作为独立的库,如svg、indexed_db、web_audio。
Dart Editor方面,现在支持代码主题风格的设置,并提供大量代码配色方案,如 Notepad++、Sublime Text 2 等主题。具体在设置里的 Visual Themes 选项中设置。还支持对 pubspec.yaml 文件的可视化编辑功能,具体使用方法是:鼠标右键点击 pubspec 文件,然后选择 "Open with Pubspec Editor"。
|
|