Blossom 准备将开发语言切换为 Dart

  • Zef Hemel
  • 臧秀涛

2013 年 5 月 9 日

话题:JavaScript语言 & 开发

Dart是 Google 设计的新的 Web 编程语言和平台,可用于替代 JavaScript。Thomas Schranz 在一篇博客中宣布,他们公司准备将其产品Blossom(面向产品团队的 Web 看板系统)迁移到 Dart。

长期以来,该公司一直忍受着 JavaScript 生态系统的分裂,现在终于做出了向 Dart 迁移的决定。Schranz 写道

Blossom,我们都是 JavaScript 的超级粉丝。而且如果知道如何避开各种坑的话,从很多方面看 JavaScript 都很不错。即便如此,我感觉 JavaScript 生态系统存在不少严重不足,尤其是核心衔接系统。

有时要完成一件事,需要绕很多圈才能开始,这让人非常沮丧。我不知道刚接触 JavaScript 生态系统的新手有何感受,但我想学习曲线会非常陡峭,而且问号比较多。

因此该公司决定逐步将应用前端迁移向 Dart。之前,前端是结合CoffeeScriptBackbone.jsUnderscore.jsjQuery开发的,并使用Brunch进行装配。

InfoQ 采访了 Schranzto,希望进一步了解相关信息。

Dart还很年轻,现在你们为什么决定切换到这门语言?

和其他语言相比,Dart 的确还很年轻。但是与 JavaScript 的生态系统比起来,Dart 所提供的工具、标准库和包管理系统使之很容易使用。

JavaScript 世界存在很多分裂,尤其是构建块。我们有很多方法来管理包、处理模块、使用异步代码和依赖,甚至在集合上进行迭代,但这些方法往往相互抵触,致使各种库无法很好地混用并搭配起来。有的人会推荐使用特定的生态系统,有的人则不想了解其他系统,转而重新发明轮子。与其他编程语言(如 Ruby、Python 或 Dart)社区相比,JavaScript 社区非我发明综合症(NIH syndrome,Not Invented Here)更为明显。

这不仅给新手带来了不必要的复杂性和困惑,写了很多年 JavaScript 的老手也好不到哪去。切换到 Dart,表面上看会有风险,但以我之见,在 JavaScript 上继续逗留风险更大。

为什么 Dart 适合 Blossom 呢?

我们在寻找一种能让我们更高效地使用我们的前端代码基的方式。这方面 Dart 提供了很好的基础。因为有了 Dart 虚拟机,我们可以快速进行保存-重新加载这一开发周期,而且我们有了一个强有力的代码分析器。这样 Dart 编辑器用起来就非常舒服。它支持自动完成、重构和调试,它支持的程度是 JavaScript 达不到的。此外,包管理器、可选类型和标准库的一致性,使我们可以很容易地定位代码基中的问题。Dart 不仅是一门编程语言,它还带来了后备力量,我认为理解这一点很重要。衔接的开发体验感觉棒极了。

Dart的开发仍然处于 alpha 阶段。因此 API 还会发生变化,对你们来说这也是个问题吧?

我感觉 Dart 的语法和语义已经非常稳定了。即便如此,因为 Dart 团队正在为 1.0 里程碑版本而努力,所以在 API 层会有很多改进。幸运的是,正如我刚才所提到的,Dart 提供了极好的工具。编辑器可以显示标记为弃用的方法,它甚至还提供了一个清理工具,在可能的情况下它会自动更新代码基。如果跟踪 Dart 的博客和邮件列表的话,手动更新也没多少麻烦。

你们还在一点点地迁移应用。你们对 Dart 代码和 JavaScript 的互操作有什么经验?

可以使用js-interop 包创建 JavaScript 对象、调用 JavaScript 函数,甚至如果你想的话,可以把 Dart 函数暴露出来,供 JavaScript 调用。这在互操作性方面已经走得相当远了。就 Blossom 本身而言,因为我们现有的 Backbone.js 代码基的组件相当独立,很容易一个部件(widget)一个部件地迁移,所以我们其实不怎么需要 interop 库。我们也使用了Justin Fagnani 的路由包, 这让我们很容易使用 Dart 接管部分应用。到目前为止迁移比我们预期的要容易。

与 JavaScript 相比,到目前为止你们都积累了哪些 Dart 平台的开发经验?

使用 Dart 非常快乐。这种一致性的开发体验让人难以置信,我们可以集中精力改进产品,而不是纠缠于生态系统的基本构件块上。以前,我们的 JavaScript 代码散落着对 undefined 的检查,因为 JavaScript 有种倾向,正常的语言会抛出异常的地方,JavaScript 却会继续下去。我上一次有这种被解放的感觉已经是多年之前的事了,当时我从 PHP 转向了 Ruby 和 Rails 框架。那时进行这种迁移也被认为是风险很高,甚至有点疯狂。

到目前为止,你们大约迁移了多少代码了?

现在约有 5% 了。我们用 Dart 编写新功能,而且每周都会对现有部分做一些迁移。

有其他产品应用也在进行这种迁移吗,你是否了解?

我还没听说其他产品应用从 JavaScript 切换到 Dart,不过如果未来有更多公司宣布选择这个方向,我不会感到意外。Dart 社区正在成长,很多人对 1.0 里程碑版本已经迫不及待了。此外,一些服务提供商也开始支持 Dart 了,比如drone.io,这是一个持续集成服务,可以使用很多 Dart 开源包来测试。

你是否建议其他公司现在也切换到 Dart?

现在切换可能还是为时过早,但我强烈建议研究下 Dart,玩玩这门语言,试试它的工具,特别是要体验一下 Web UI。最好这个周末就动手!

你认为 Dart 未来会怎样,会不会广泛应用?

我认为 Dart 前途光明。它给我们找回了 Web 开发的快乐。Dart 平台背后的人都是顶尖人才,早期的社区和可用的包也非常优秀。利用它为 Web 构建应用程序令人非常激动。

Dart 在一年半前首次发布之时,这一语言及其实现方法受到了尖锐批评。但 Dart 平台从那时以来就稳步迭代,包括 JetBrains 的 WebStorm 和 IntelliJ 在内的第三方 IDE 也添加了对 Dart 的支持,而且现在已经可以把服务器端的 Dart 应用部署Heroku上了。

Blossom 是第一个做出这种切换的发布产品。至于是否会像俗话“一羊跳过沟,众羊跟着跳”说的那样,让时间来说明吧。

查看英文原文Blossom Switches to Dart

JavaScript语言 & 开发